Bumped the javac version.
[jabaws.git] / binaries / src / GLProbs-1.0 / MSA.h
1 #ifndef _MSA_H
2 #define _MSA_H
3 #include "MSADef.h"
4 #include "MSAGuideTree.h"
5
6 #include "SafeVector.h"
7 #include "MultiSequence.h"
8 #include "ScoreType.h"
9 #include "ProbabilisticModel.h"
10 #include "SparseMatrix.h"
11 #include <string>
12 using namespace std;
13
14 class MSAGuideTree;
15 struct TreeNode;
16 class MSA {
17 public:
18         MSA(int argc, char* argv[]);
19         ~MSA();
20
21         static void getSysTime(double * dtime);
22         MSAGuideTree* getGuideTree() {
23                 return tree;
24         }
25         int * getSeqsWeights() {
26                 return seqsWeights;
27         }
28 private:
29         //print usage
30         void printUsage();
31         //do multiple sequence alignment
32         void doAlign();
33
34         //for sequence weights
35         void createSeqsWeights(int seqsNum);
36         void releaseSeqsWeights();
37
38         //weights of sequences
39         int * seqsWeights;
40         //guide tree
41         MSAGuideTree* tree;
42         //output file
43         string alignOutFileName;
44         std::ostream* alignOutFile;
45 private:
46         SafeVector<string> ParseParams(int argc, char *argv[]);
47         void PrintParameters(const char *message, const VF &initDistrib,
48                         const VF &gapOpen, const VF &gapExtend, const VVF &emitPairs,
49                         const VF &emitSingle, const char *filename);
50
51         SafeVector<string> PostProbsParseParams(int argc, char **argv);
52         MultiSequence *doAlign(MultiSequence *sequence,
53                         const ProbabilisticModel &model, int levelid);
54         void ReadParameters();
55         MultiSequence* ProcessTree(TreeNode *tree, MultiSequence *sequences,
56                         const SafeVector<SafeVector<SparseMatrix *> > &sparseMatrices,
57                         const ProbabilisticModel &model);
58         MultiSequence *ComputeFinalAlignment(MSAGuideTree *tree,
59                         MultiSequence *sequences,
60                         const SafeVector<SafeVector<SparseMatrix *> > &sparseMatrices,
61                         const ProbabilisticModel &model,int levelid);
62         MultiSequence *AlignAlignments(MultiSequence *align1, MultiSequence *align2,
63                         const SafeVector<SafeVector<SparseMatrix *> > &sparseMatrices,
64                         const ProbabilisticModel &model);
65         SafeVector<SafeVector<SparseMatrix *> > DoRelaxation(float* seqsWeights,
66                         MultiSequence *sequences,
67                         SafeVector<SafeVector<SparseMatrix *> > &sparseMatrices);
68         void Relax(float weight, SparseMatrix *matXZ, SparseMatrix *matZY,
69                         VF &posterior);
70         void Relax1(float weight, SparseMatrix *matXZ, SparseMatrix *matZY,
71                         VF &posterior);
72         int DoIterativeRefinement(
73                         const SafeVector<SafeVector<SparseMatrix *> > &sparseMatrices,
74                         const ProbabilisticModel &model, MultiSequence* &alignment);
75         void DoIterativeRefinementTreeNode(
76                         const SafeVector<SafeVector<SparseMatrix *> > &sparseMatrices,
77                         const ProbabilisticModel &model, MultiSequence* &alignment,
78                         int nodeIndex);
79         void WriteAnnotation(MultiSequence *alignment,
80                         const SafeVector<SafeVector<SparseMatrix *> > &sparseMatrices);
81         int ComputeScore(const SafeVector<pair<int, int> > &active,
82                         const SafeVector<SafeVector<SparseMatrix *> > &sparseMatrices);
83         int AdjustmentTest(MultiSequence *sequences,const ProbabilisticModel &model);
84 #ifdef _OPENMP
85         //private struct
86         struct SeqsPair {
87                 int seq1;
88                 int seq2;
89         };
90         int numPairs;
91         SeqsPair* seqsPairs;
92 #endif
93 };
94
95 #endif