]> git.donarmstrong.com Git - mothur.git/blobdiff - maligner.h
tie breaker fix to chimera.slayer
[mothur.git] / maligner.h
index 6277e7300a02fbe815468e223298f5f969813a51..6ddd6acebdff359294deda6b4cc1b4c2c5ae788f 100644 (file)
  */
  
 #include "decalc.h"
+#include "chimera.h"
+#include "database.hpp"
 
 /***********************************************************************/
 //This class was modeled after the chimeraMaligner written by the Broad Institute
-/***********************************************************************/
-struct score_struct {
-       int prev;
-       int score;
-       int row;
-       int col;
-};
-/***********************************************************************/
-struct trace_struct {
-       int col;
-       int oldCol;
-       int row;
-};
-/***********************************************************************/
-struct results {
-       int regionStart;
-       int regionEnd;
-       string parent;
-       float queryToParent;
-       float queryToParentLocal;
-       float divR;
-};
-
 /**********************************************************************/
 class Maligner {
 
        public:
                
-               Maligner(vector<Sequence*>, int, int, int, float, int);
+               Maligner(vector<Sequence*>, int, int, int, float, int, int, string, Database*, Database*);
                ~Maligner() {};
                
-               string getResults(Sequence*);
+               string getResults(Sequence*, DeCalculator*);
                float getPercentID() {  return percentIdenticalQueryChimera;    }
                vector<results> getOutput()  {  return outputResults;                   }
                
                                
        private:
-               DeCalculator* decalc;
                Sequence* query;
                vector<Sequence*> refSeqs;
                vector<Sequence*> db;
-               int numWanted, matchScore, misMatchPenalty, minCoverage;
+               int numWanted, matchScore, misMatchPenalty, minCoverage, minSimilarity;
+               string searchMethod;
                float minDivR, percentIdenticalQueryChimera;
                vector<results> outputResults;
+               vector<int> indexes;  //stores index into template seqs of the refSeqs, so we can return the whole sequence rather than the trimmed and filtered one
+               map<int, int> spotMap;
+               Database* databaseLeft;
+               Database* databaseRight;
                
                vector<Sequence*> minCoverageFilter(vector<Sequence*>);  //removes top matches that do not have minimum coverage with query.
                int computeChimeraPenalty();
@@ -64,10 +47,15 @@ class Maligner {
                
                vector< vector<score_struct> > buildScoreMatrix(int, int);
                void fillScoreMatrix(vector<vector<score_struct> >&, vector<Sequence*>, int);
-               vector<score_struct> extractHighestPath(vector<vector<score_struct> >);
+               vector<trace_struct> extractHighestPath(vector<vector<score_struct> >);
                vector<trace_struct> mapTraceRegionsToAlignment(vector<score_struct>, vector<Sequence*>);
                string constructChimericSeq(vector<trace_struct>, vector<Sequence*>);
+               string constructAntiChimericSeq(vector<trace_struct>, vector<Sequence*>);
                float computePercentID(string, string);
+               string chimeraMaligner(int, DeCalculator*);
+               vector<Sequence*> getBlastSeqs(Sequence*, int);
+               vector<Sequence*> getKmerSeqs(Sequence*, int);
+               MothurOut* m;
                
 };