Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / clustalw / src / tree / Tree.h
1 /**
2  * Author: Mark Larkin
3  * 
4  * Copyright (c) 2007 Des Higgins, Julie Thompson and Toby Gibson.  
5  */
6 #ifndef TREE_H
7 #define TREE_H
8
9 #include <vector>
10 #include <string>
11 #include <iostream>
12 #include <fstream>
13 #include "../alignment/Alignment.h"
14 #include "AlignmentSteps.h"
15 #include <memory>
16 namespace clustalw
17 {
18
19 class Tree
20 {
21     public:
22         /* Functions */
23         void calcSeqWeights(int firstSeq, int lastSeq, vector<int>* sweight);
24         int readTree(Alignment* alignPtr, const string& treeFileName, int firstSeq, 
25                      int lastSeq);
26         auto_ptr<AlignmentSteps> createSets(int firstSeq, int lastSeq);
27         int calcSimilarities(Alignment* alignPtr, DistMatrix* distMat);
28         void clearTree(TreeNode* p);
29         /* Attributes */
30
31     private:
32         /* Functions */
33         void createTree(TreeNode* ptree, TreeNode* parent, ifstream* file);
34         void createNode(TreeNode* pptr, TreeNode* parent);
35         TreeNode* insertNode(TreeNode* pptr);
36         void clearTreeNodes(TreeNode* p);
37         TreeNode* reRoot(TreeNode* ptree, int nseqs);
38         TreeNode* insertRoot(TreeNode* p, float diff);
39         float calcRootMean(TreeNode* root, float *maxDist);
40         float calcMean(TreeNode* nptr, float *maxDist, int nSeqs);
41         void orderNodes();
42         int calcWeight(int leaf);
43         void skipSpace(ifstream* file);
44         void groupSeqs(TreeNode* p, int *nextGroups, int nSeqs, AlignmentSteps* stepsPtr);
45         void markGroup1(TreeNode* p, int *groups, int n);
46         void markGroup2(TreeNode* p, int *groups, int n);
47         TreeNode* avail();
48         void setInfo(TreeNode* p, TreeNode* parent, int pleaf, string pname, float
49                      pdist);
50         void debugPrintAllNodes(int nseqs);
51             
52         /* Attributes */
53         AlignmentSteps progSteps;
54         char charFromFile;
55         ifstream file;
56         TreeNode** lptr;
57         TreeNode** olptr;
58         TreeNode** nptr;
59         TreeNode** ptrs;
60         int nnodes;
61         int ntotal;
62         bool rootedTree;
63         TreeNode* seqTree;
64         TreeNode* root;
65         int* groups;
66         int numSeq;
67         int numSets;
68         const static int MAXERRS = 10;
69 };
70
71 }
72 #endif