ToPS
|
00001 #ifndef MULTIPLE_ALIGNMENT_HPP 00002 #define MULTIPLE_ALIGNMENT_HPP 00003 00004 #include <vector> 00005 #include <list> 00006 #include <map> 00007 #include <iostream> 00008 #include <fstream> 00009 #include <stack> 00010 #include <boost/timer.hpp> 00011 #include "ProbabilisticModel.hpp" 00012 #include "PairHiddenMarkovModel.hpp" 00013 #include "SequenceEntry.hpp" 00014 #include "ProbabilisticModelCreatorClient.hpp" 00015 00016 using namespace std; 00017 00018 namespace tops{ 00019 00020 typedef pair<int,int> seqPos; 00021 00022 typedef struct{ 00023 seqPos pos1; 00024 seqPos pos2; 00025 float prob;} postProb; 00026 00027 typedef struct{ 00028 int index; 00029 bool visited; 00030 bool isDead; 00031 vector<seqPos> colSeqPos;} column; 00032 00033 class DLLEXPORT MultipleAlignment{ 00034 00035 private: 00036 int _numberOfColumns; 00037 vector<column> _graph; 00038 map< seqPos,int > _seqPosMap; //isPresent[i][j] = -1 if residue j if sequence is is not present and isPresent[i][j] = m if it is present in node m 00039 list<postProb> _postProbs; 00040 SequenceList _seqs; 00041 vector<string> _names; 00042 int _gap_id; 00043 vector<SequenceEntry> _alignment; 00044 map<string,map<string,SparseMatrixPtr > > _ppAlign; 00045 map<string,map<string,SparseMatrixPtr > > _ppGap1; 00046 map<string,map<string,SparseMatrixPtr > > _ppGap2; 00047 map<string, SparseMatrixPtr > _ppPred; 00048 map<string,map<string,float> > _eas; 00049 00050 00051 public: 00052 MultipleAlignment(){} 00053 void computeOneAlignment(ProbabilisticModelPtr almodel, SequenceList seqs, vector<string> names, int numit, int consScheme); 00054 void computeAllAlignments(ProbabilisticModelPtr almodel, SequenceList seqs, vector<string> names, int numit, string alFileName, string outDir); 00055 void computePredictionsAndAlignment(ProbabilisticModelPtr almodel, vector<ProbabilisticModelPtr> &predmodels, SequenceList seqs, vector<string> names, int numit, bool alternateConsistencies, string outDir); 00056 //void initializeFromFile(ProbabilisticModelPtr almodel, SequenceList seqs, vector<string> names, int numit, int consScheme, string inputFileName); 00057 //void trainAndComputePPs(string initialModelFile, SequenceList seqs, vector<string> names, int maxTainIter, string outFile); 00058 float postProbAlign(ProbabilisticModelPtr model, map<string, map< string, SparseMatrixPtr > > &ppAlign, map<string, map< string, SparseMatrixPtr > > &ppGap1, map<string, map< string, SparseMatrixPtr > > &ppGap2, map<string, map<string, float> > &eas); 00059 void picxaaAlConsistency(map< string, map< string, SparseMatrixPtr > > &ppAlign, map<string, map<string, float> > eas, int numit); 00060 void classicAlConsistency(map< string, map< string, SparseMatrixPtr > > &ppAlign, int numit); 00061 void predalignAlConsistencyWithEas(map< string, map< string, SparseMatrixPtr > > &ppAlign, map< string, map< string, SparseMatrixPtr > > &ppGap1,map< string, map< string, SparseMatrixPtr > > &ppGap2, int numit, map<string, map<string, float> > eas); 00062 void predalignAlConsistencyNoEas(map< string, map< string, SparseMatrixPtr > > &ppAlign, map< string, map< string, SparseMatrixPtr > > &ppGap1,map< string, map< string, SparseMatrixPtr > > &ppGap2, int numit); 00063 void makeAlignmentConsistentWithPrediction(map<string, SparseMatrixPtr > &ppPred, map< string, map< string, SparseMatrixPtr > > &ppAlign, int numit); 00064 void makePredictionConsistentWithAlignment(map<string, SparseMatrixPtr > &ppPred, map< string, map< string, SparseMatrixPtr > > &ppAlign, int numit); 00065 void postProbPred(vector<ProbabilisticModelPtr> &predmodels, map<string, SparseMatrixPtr > &ppPred); 00066 void initializePostProbsList(map< string, map< string, SparseMatrixPtr > > &ppAlign); 00067 void addList(postProb p); 00068 void printPPList(); 00069 void generateGraph(); 00070 void addToGraph(postProb p); 00071 void addToGappedGraph(postProb p); 00072 bool dfsf(int ub, column n, vector<column> &df); 00073 void dfsb(int lb, column n, vector<column> &db); 00074 void merge(column *ub, column *lb); 00075 void reorder(vector<column> &df, vector<column> &db); 00076 void findGraphMcd(); 00077 void unvisit(vector<column> &v); 00078 void generateAlignment(ProbabilisticModelPtr almodel); 00079 void clearAll(); 00080 }; 00081 typedef boost::shared_ptr<MultipleAlignment> MultipleAlignmentPtr; 00082 } 00083 #endif