This file is indexed.

/usr/include/libphylo/nj.h is in rate4site 3.0.0-2.

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
// $Id: nj.h 962 2006-11-07 15:13:34Z privmane $

// version 1.00
// last modified 3 Nov 2002

#ifndef ___NJ
#define ___NJ
#include "definitions.h"
#include "tree.h"
#include "sequenceContainer.h"
#include "njConstrain.h"
#include "distances2Tree.h"
using namespace std;

class NJalg : public distances2Tree {
public:
  virtual   NJalg* clone() const {return new NJalg(*this);}
  // changed from computeNJtree to computeTree for competability to "distances2Tree"
	virtual tree computeTree(VVdouble distances, const vector<string>& names, const tree * const constriantTree = NULL);
	tree startingTree(const vector<string>& names);
	tree startingTree(const tree& inTree);
	void NJiterate(tree& et,vector<tree::nodeP>& currentNodes,
							 VVdouble& distanceTable);
	void NJiterate(tree& et,vector<tree::nodeP>& currentNodes,
		       VVdouble& distanceTable, njConstraint& njc);
	void calc_M_matrix(vector<tree::nodeP>& currentNodes,
						  const VVdouble& distanceTable,
						  const Vdouble & r_values,
						  int& minRaw,int& minCol);
	void calc_M_matrix(vector<tree::nodeP>& currentNodes,
						  const VVdouble& distanceTable,
						  const Vdouble & r_values,
			   int& minRaw,int& minCol, const njConstraint& njc);
	Vdouble calc_r_values(vector<tree::nodeP>& currentNodes,const VVdouble& distanceTable);
	tree::nodeP SeparateNodes(tree& et,tree::nodeP node1,tree::nodeP node2);
	void update3taxaLevel(VVdouble& distanceTable,Vdouble & r_values,vector<tree::nodeP>& currentNodes);
	void updateBranchDistance(const VVdouble& disT,
								const Vdouble& rValues,
								tree::nodeP nodeNew,
							  tree::nodeP nodeI,
							  tree::nodeP nodeJ,
							  int Iplace, int Jplace);

	void UpdateDistanceTableAndCurrentNodes(vector<tree::nodeP>& currentNodes,
											VVdouble& distanceTable,
											tree::nodeP nodeI,
											tree::nodeP nodeJ,
											tree::nodeP theNewNode,
											int Iplace, int Jplace);

};

/*
	//explicit NJalg(const tree& inTree, const computeDistance* cd);
	explicit NJalg();
	tree getNJtree() const {return *_myET;}// return a copy...
	void computeTree(const sequenceContainer& sd,const computeDistance* cd,const vector<MDOUBLE> * weights = NULL);
	VVdouble getDistanceTable(vector<string>& names) {
		names.erase(names.begin(),names.end());
		names = _nodeNames;
		return _startingDistanceTable;}
	VVdouble getLTable(vector<string>& names) {
		names.erase(names.begin(),names.end());
		names = _nodeNames;
		return LTable;}
private:
	//void starTreeFromInputTree(const tree& inTree);
	void starTreeFromInputsequenceContainer(const sequenceContainer& sd);
	void GetDisTable(const sequenceContainer& sd,const vector<MDOUBLE>  * weights);
	MDOUBLE dis(const int i, const int j) const{
		return (i<j) ? distanceTable[i][j] : distanceTable[j][i];
	}
	void findMinM(int& minRaw,int& minCol);


	tree* _myET;
	VVdouble distanceTable;
	VVdouble Mmatrix;
	Vdouble r_values;
	vector<tree::nodeP> currentNodes;
	const computeDistance* _cd;

	VVdouble _startingDistanceTable; // for printing etc... not used by the algorithm.
	vector<string> _nodeNames; // for printing etc... not used by the algorithm.
	VVdouble LTable;// for printing etc... not used by the algorithm.

*/
#endif