Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / clustalw / src / tree / TreeInterface.h
diff --git a/website/archive/binaries/mac/src/clustalw/src/tree/TreeInterface.h b/website/archive/binaries/mac/src/clustalw/src/tree/TreeInterface.h
new file mode 100644 (file)
index 0000000..d4c64a2
--- /dev/null
@@ -0,0 +1,156 @@
+/**
+ * Author: Mark Larkin
+ * 
+ * Copyright (c) 2007 Des Higgins, Julie Thompson and Toby Gibson.  
+ */
+/**
+ * Changes:
+ * Mark 10-5-2007: Bug fix # 42. Added getWeightsForQtLowScore function.
+ *
+ *
+ */
+#ifndef TREEINTERFACE_H
+#define TREEINTERFACE_H
+
+#include <vector>
+#include <string>
+#include <memory>
+#include "AlignmentSteps.h"
+#include "../alignment/Alignment.h"
+#include "../general/clustalw.h"
+
+namespace clustalw
+{
+
+using namespace std;
+class Tree;
+class RootedGuideTree;
+
+class TreeInterface
+{
+    public:
+        /**
+         * This function will be used to generate the phylogenetic tree from the distMat using
+         * either UPGMA or NJ. It will then calculate the seqWeights and the steps. 
+         * Note the Distmat
+         * will be in similarity form after this. It will no longer be distances!!!!!
+         */
+        auto_ptr<AlignmentSteps> getWeightsAndStepsFromDistMat(vector<int>* seqWeights, 
+                                                          DistMatrix* distMat, 
+                                                          Alignment *alignPtr, 
+                                                          int seq1, int nSeqs, 
+                                                          string* phylipName, bool* success);
+        /**
+         * This will be called by sequencesAlignToProfile and QTcalcWeightsForLowScoreSeg
+         */        
+        void getWeightsFromDistMat(vector<int>* seqWeights, DistMatrix* distMat, 
+                                   Alignment *alignPtr, int seq1, int nSeqs, 
+                                   string* phylipName, bool* success);
+                                   
+        void getWeightsForQtLowScore(vector<int>* seqWeights, DistMatrix* distMat, 
+                                   Alignment *alignPtr, int seq1, int nSeqs, 
+                                   string* phylipName, bool* success);
+                                   
+        /**
+         * This function will be called from doAlignUseOldTree
+         */                                                  
+        auto_ptr<AlignmentSteps> getWeightsAndStepsFromTree(Alignment* alignPtr, 
+                                                DistMatrix* distMat, string* treeName,
+                                                vector<int>* seqWeights, int fSeq, 
+                                                int numSeqs, bool* success);
+                                                             
+        /**
+         * This function will be called from sequencesAlignToProfile, it doesnt calc the
+         * steps.
+         */                                                     
+        int getWeightsFromGuideTree(Alignment* alignPtr, DistMatrix* distMat,
+                                    string* treeName, vector<int>* seqWeights, int fSeq,
+                                    int nSeqs, bool* success);
+        /**
+         * This function is used to generate 2 guide trees for the profile align part.
+         * IT must be done on its own. It calls calcPairwiseForProfileAlign in MSA.
+         * It is called by profileAlign and removeFirstIterate.
+         */
+        void getWeightsForProfileAlign(Alignment* alignPtr, DistMatrix* distMat, 
+                             string* p1TreeName, vector<int>* p1Weights, string* p2TreeName, 
+                    vector<int>* p2Weights, int numSeqs, int profile1NumSeqs, bool useTree1, 
+                    bool useTree2, bool* success); 
+        /**
+         * This function is used to generate the guide tree from the distance matrix. 
+         * It doesnt return
+         * any seqWeights or AlignmentSteps. It will be used by doGuideTreeOnly
+         */
+        void generateTreeFromDistMat(DistMatrix* distMat, Alignment *alignPtr, 
+                                                          int seq1, int nSeqs, 
+                                                          string* phylipName, bool* success);
+        
+        /**
+         * This function is to simply to call either the UPGMA or NJ version of 
+         * this function, and print out all the trees. It will be called 
+         * from phylogeneticTree in the clustal class.
+         */                                                  
+        void treeFromAlignment(TreeNames* treeNames, Alignment *alignPtr);
+        
+        /**
+         * This function will be used to bootstrap the tree and output the results. 
+         * It will use either
+         * UPGMA or NJ for the bootstrapping, depending on what is selected.
+         */
+        void bootstrapTree(TreeNames* treeNames, Alignment *alignPtr);
+         
+    private:
+        auto_ptr<AlignmentSteps> getWeightsAndStepsFromDistMatNJ(vector<int>* seqWeights, 
+                                                          DistMatrix* distMat, 
+                                                          Alignment *alignPtr, 
+                                                          int seq1, int nSeqs, 
+                                                          string* phylipName, bool* success);
+        
+        auto_ptr<AlignmentSteps> getWeightsAndStepsUseOldGuideTreeNJ(DistMatrix* distMat, 
+                                                   Alignment *alignPtr,  string* treeName,
+                                                   vector<int>* seqWeights, 
+                                                   int fSeq, int nSeqs, bool* success);
+                                                             
+        int readTreeAndCalcWeightsNJ(Tree* groupTree, Alignment* alignPtr, 
+                            DistMatrix* distMat, string* treeName, vector<int>* seqWeights,
+                            int fSeq, int nSeqs);
+        
+        int getWeightsFromGuideTreeNJ(Alignment* alignPtr, DistMatrix* distMat,
+                                      string* treeName, vector<int>* seqWeights, int fSeq,
+                                      int nSeqs, bool* success);
+        
+        void getWeightsFromDistMatNJ(vector<int>* seqWeights, DistMatrix* distMat, 
+                                   Alignment *alignPtr, int seq1, int nSeqs, 
+                                   string* phylipName, bool* success); 
+        
+        void getWeightsForProfileAlignNJ(Alignment* alignPtr, DistMatrix* distMat, 
+                             string* p1TreeName, vector<int>* p1Weights, string* p2TreeName, 
+                    vector<int>* p2Weights, int numSeqs, int profile1NumSeqs, bool useTree1, 
+                    bool useTree2, bool* success);
+                    
+        void generateTreeFromDistMatNJ(DistMatrix* distMat, Alignment *alignPtr, 
+                                 int seq1, int nSeqs, string* phylipName, bool* success);
+        
+        auto_ptr<AlignmentSteps> getWeightsAndStepsFromTreeNJ(Alignment* alignPtr, 
+                               DistMatrix* distMat, string* treeName,
+                               vector<int>* seqWeights, int fSeq, int numSeqs, bool* success);
+        
+        /** UPGMA functions */
+        auto_ptr<AlignmentSteps> getWeightsAndStepsFromDistMatUPGMA(vector<int>* seqWeights, 
+                                 DistMatrix* distMat, Alignment *alignPtr, 
+                                 int seq1, int nSeqs, string* phylipName, bool* success);
+                                 
+        auto_ptr<AlignmentSteps> generateTreeFromDistMatUPGMA(RootedGuideTree* guideTree,
+                             DistMatrix* distMat, Alignment *alignPtr, int seq1, int nSeqs, 
+                                            string* phylipName, bool* success);
+                                 
+        void getWeightsFromDistMatUPGMA(vector<int>* seqWeights, DistMatrix* distMat, 
+                                   Alignment *alignPtr, int seq1, int nSeqs, 
+                                   string* phylipName, bool* success); 
+                                   
+        void getWeightsForProfileAlignUPGMA(Alignment* alignPtr, DistMatrix* distMat, 
+                             string* p1TreeName, vector<int>* p1Weights, string* p2TreeName, 
+                    vector<int>* p2Weights, int numSeqs, int profile1NumSeqs, bool useTree1, 
+                    bool useTree2, bool* success);                                
+};
+}
+#endif