This file is indexed.

/usr/include/libMems-1.6/libMems/SubstitutionMatrix.h is in libmems-1.6-dev 1.6.0+4725-4build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
/*******************************************************************************
 * $Id: SubstitutionMatrix.h,v 1.7 2004/03/01 02:40:08 darling Exp $
 * This file is copyright 2002-2007 Aaron Darling and authors listed in the AUTHORS file.
 * This file is licensed under the GPL.
 * Please see the file called COPYING for licensing details.
 * **************
 ******************************************************************************/

#ifndef __SubstitutionMatrix_h__
#define __SubstitutionMatrix_h__

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include "libGenome/gnSequence.h"
#include <iostream>
#include <sstream>

namespace mems {

typedef int score_t;
static const score_t hoxd_matrix[4][4] = 
{ 
	{91,	-114,	-31,	-123}, // A

	{-114,	100,	-125,	-31}, // C

	{-31,	-125,	100,	-114}, // G

	{-123,	-31,	-114,	91}, // T
};

static const score_t default_gap_open = -400;
static const score_t default_gap_extend = -30;

class PairwiseScoringScheme
{
public:
	score_t matrix[4][4];	/**< 4x4 nucleotide substitution matrix */
	score_t gap_open;	/**< gap open penalty */
	score_t gap_extend;	/**< gap extend penalty */

	PairwiseScoringScheme( const score_t matrix[4][4], score_t gap_open, score_t gap_extend )
	{
		setMatrix(matrix);
		this->gap_open = gap_open;
		this->gap_extend = gap_extend;
	}

	PairwiseScoringScheme(){ *this = PairwiseScoringScheme( hoxd_matrix, default_gap_open, default_gap_extend ); }
	PairwiseScoringScheme& operator=( const PairwiseScoringScheme& pss )
	{
		setMatrix(pss.matrix);
		this->gap_open = pss.gap_open;
		this->gap_extend = pss.gap_extend;
		return *this;
	}
	void setMatrix( const score_t matrix[4][4] )
	{
		for( int i = 0; i < 4; ++i )
			for( int j = 0; j < 4; ++j )
				this->matrix[i][j] = matrix[i][j];
	}
};

static PairwiseScoringScheme& getDefaultScoringScheme()
{
	static PairwiseScoringScheme pss( hoxd_matrix, default_gap_open, default_gap_extend );
	return pss;
}

void readSubstitutionMatrix( std::istream& is, score_t matrix[4][4] );

inline
void readSubstitutionMatrix( std::istream& is, score_t matrix[4][4] )
{
	std::string tmp;
	std::getline( is, tmp );	// first line contains header info
	std::getline( is, tmp );	// second line contains sub mat column labels
	std::stringstream ss( tmp );
	std::string letter;
	bool format_ok = true;
	ss >> letter;
	format_ok = format_ok && letter == "A";
	ss >> letter;
	format_ok = format_ok && letter == "C";
	ss >> letter;
	format_ok = format_ok && letter == "G";
	ss >> letter;
	format_ok = format_ok && letter == "T";
	ss >> letter;
	format_ok = format_ok && letter == "N";
	if( !format_ok )
	{
		std::cerr << "Invalid substitution matrix format\n";
		throw "Invalid substitution matrix format\n";
	}

	for( int i = 0; i < 4; i++ )
	{
		is >> letter;	// the first character on each line should be a letter
		for( int j = 0; j < 4; j++ )
			is >> matrix[i][j];
		is >> letter;	// this should be the N sub score (which gets ignored)
	}
}

}

#endif // __SubstitutionMatrix_h__