// $Id: allTreesSeparateModel.h 962 2006-11-07 15:13:34Z privmane $ #ifndef ___ALL_TREES_SEPARATE_MODEL #define ___ALL_TREES_SEPARATE_MODEL #include "definitions.h" #include "tree.h" #include "sequenceContainer.h" #include "stochasticProcess.h" #include using namespace std; void get3seqTreeAndIdLeftVec(const sequenceContainer* sc, tree& starT, vector& idList); tree getAnewTreeFrom( const tree& et, tree::nodeP & mynode, vector & idLeft, const string& nameToAdd); class allTreesSeparateModel { public: explicit allTreesSeparateModel(); MDOUBLE getBestScore() {return _bestScore;} tree getBestTree() {return _bestTree;} void recursiveFind(tree et, const vector& sp, const vector& sc, vector idLeft, const vector * weights=NULL, const int maxIterations=1000, const MDOUBLE epsilon=0.05); void recursiveFind( const vector* sc, const vector* sp, const vector * weights= NULL, const int maxIterations=1000, const MDOUBLE epsilon=0.05); // one tree. vector getTreeVecBest() {return _treeVecBest;} private: tree _bestTree; MDOUBLE _bestScore; vector _treeVecTmp; // same tree topologies, diff branch lengths vector _treeVecBest;// same tree topologies, diff branch lengths MDOUBLE evalTree( tree& et, const vector& sp, const vector& sc, const int maxIterations, const MDOUBLE epsilon, const vector * weights = NULL); }; #endif // const stochasticProcess* _sp; //const sequenceContainer* _sc; //const Vdouble * _weights; //vector getBestTreesSep() {return _bestSepTrees;} //vector _bestSepTrees; //vector _tmpSepTrees; //vector recursiveFindSep(const vector* sc, // const vector* sp, // const vector * weights, // const int maxIterations=1000, // const MDOUBLE epsilon=0.05); // sep model //const vector* _scVec; //vector* _spVec; // not const, so in proportional for example it can be changed. //const vector * _weightsVec;