File: Tree.h

package info (click to toggle)
clustalx 2.1%2Blgpl-9
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 3,324 kB
  • sloc: cpp: 40,050; sh: 163; xml: 102; makefile: 16
file content (72 lines) | stat: -rw-r--r-- 2,208 bytes parent folder | download | duplicates (11)
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
/**
 * Author: Mark Larkin
 * 
 * Copyright (c) 2007 Des Higgins, Julie Thompson and Toby Gibson.  
 */
#ifndef TREE_H
#define TREE_H

#include <vector>
#include <string>
#include <iostream>
#include <fstream>
#include "../alignment/Alignment.h"
#include "AlignmentSteps.h"
#include <memory>
namespace clustalw
{

class Tree
{
    public:
        /* Functions */
        void calcSeqWeights(int firstSeq, int lastSeq, vector<int>* sweight);
        int readTree(Alignment* alignPtr, const string& treeFileName, int firstSeq, 
                     int lastSeq);
        auto_ptr<AlignmentSteps> createSets(int firstSeq, int lastSeq);
        int calcSimilarities(Alignment* alignPtr, DistMatrix* distMat);
        void clearTree(TreeNode* p);
        /* Attributes */

    private:
        /* Functions */
        void createTree(TreeNode* ptree, TreeNode* parent, ifstream* file);
        void createNode(TreeNode* pptr, TreeNode* parent);
        TreeNode* insertNode(TreeNode* pptr);
        void clearTreeNodes(TreeNode* p);
        TreeNode* reRoot(TreeNode* ptree, int nseqs);
        TreeNode* insertRoot(TreeNode* p, float diff);
        float calcRootMean(TreeNode* root, float *maxDist);
        float calcMean(TreeNode* nptr, float *maxDist, int nSeqs);
        void orderNodes();
        int calcWeight(int leaf);
        void skipSpace(ifstream* file);
        void groupSeqs(TreeNode* p, int *nextGroups, int nSeqs, AlignmentSteps* stepsPtr);
        void markGroup1(TreeNode* p, int *groups, int n);
        void markGroup2(TreeNode* p, int *groups, int n);
        TreeNode* avail();
        void setInfo(TreeNode* p, TreeNode* parent, int pleaf, string pname, float
                     pdist);
        void debugPrintAllNodes(int nseqs);
            
        /* Attributes */
        AlignmentSteps progSteps;
        char charFromFile;
        ifstream file;
        TreeNode** lptr;
        TreeNode** olptr;
        TreeNode** nptr;
        TreeNode** ptrs;
        int nnodes;
        int ntotal;
        bool rootedTree;
        TreeNode* seqTree;
        TreeNode* root;
        int* groups;
        int numSeq;
        int numSets;
        const static int MAXERRS = 10;
};

}
#endif