X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=chimera.h;h=11bc435938b99d63df86958667b801f34318a63a;hb=14bf280629e8e52ff1ea3c9da6f7aae1e28f9acb;hp=3efe0e4b63095042de78f3938118c7ab1d642656;hpb=05a0195e07c42c996592ee1c8abb63adedb7f493;p=mothur.git diff --git a/chimera.h b/chimera.h index 3efe0e4..11bc435 100644 --- a/chimera.h +++ b/chimera.h @@ -14,23 +14,54 @@ #include "mothur.h" #include "sequence.hpp" - +/***********************************************************************/ struct Preference { string name; - vector leftParent; //keep the name of closest left associated with the two scores - vector rightParent; //keep the name of closest right associated with the two scores - vector score; //so you can keep last score and calc this score and keep whichever is bigger. - vector closestLeft; //keep the closest left associated with the two scores - vector closestRight; //keep the closest right associated with the two scores + string leftParent; //keep the name of closest left + string rightParent; //keep the name of closest + float score; //preference score + float closestLeft; //keep the closest left + float closestRight; //keep the closest right int midpoint; - + Preference() { name = ""; leftParent = ""; rightParent = ""; score = 0.0; closestLeft = 10000.0; closestRight = 10000.0; midpoint = 0; } + ~Preference() {} }; - +/***********************************************************************/ +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; + int nastRegionStart; + int nastRegionEnd; + string parent; + string parentAligned; + float queryToParent; + float queryToParentLocal; + float divR; +}; +/***********************************************************************/ struct SeqDist { Sequence* seq; float dist; + int index; }; - +//******************************************************************************************************************** +//sorts lowest to highest +inline bool compareRegionStart(results left, results right){ + return (left.nastRegionStart < right.nastRegionStart); +} //******************************************************************************************************************** //sorts lowest to highest inline bool compareSeqDist(SeqDist left, SeqDist right){ @@ -58,47 +89,61 @@ class Chimera { public: - Chimera(){}; - Chimera(string); - Chimera(string, string); - virtual ~Chimera(){}; - virtual void setFilter(bool f) { filter = f; } - virtual void setCorrection(bool c) { correction = c; } - virtual void setProcessors(int p) { processors = p; } - virtual void setWindow(int w) { window = w; } - virtual void setIncrement(int i) { increment = i; } - virtual void setNumWanted(int n) { numWanted = n; } - virtual void setKmerSize(int k) { kmerSize = k; } - virtual void setSVG(int s) { svg = s; } - virtual void setName(string n) { name = n; } - virtual void setMatch(int m) { match = m; } - virtual void setMisMatch(int m) { misMatch = m; } - virtual void setDivR(float d) { divR = d; } - virtual void setParents(int p) { parents = p; } - virtual void setMinSim(int s) { minSim = s; } - + Chimera(){ m = MothurOut::getInstance(); length = 0; unaligned = false; } + //Chimera(string) { m = MothurOut::getInstance(); } + //Chimera(string, bool, string) { m = MothurOut::getInstance(); } + //Chimera(string, string) { m = MothurOut::getInstance(); } + virtual ~Chimera(){ for (int i = 0; i < templateSeqs.size(); i++) { delete templateSeqs[i]; } }; + //virtual void setFilter(bool f) { filter = f; } + //virtual void setCorrection(bool c) { correction = c; } + //virtual void setProcessors(int p) { processors = p; } + //virtual void setWindow(int w) { window = w; } + //virtual void setIncrement(int i) { increment = i; } + //virtual void setNumWanted(int n) { numWanted = n; } + //virtual void setKmerSize(int k) { kmerSize = k; } + //virtual void setSVG(int s) { svg = s; } + //virtual void setName(string n) { name = n; } + //virtual void setMatch(int m) { match = m; } + //virtual void setMisMatch(int m) { misMatch = m; } + //virtual void setDivR(float d) { divR = d; } + //virtual void setParents(int p) { parents = p; } + //virtual void setMinSim(int s) { minSim = s; } + //virtual void setMinCoverage(int c) { minCov = c; } + //virtual void setMinBS(int b) { minBS = b; } + //virtual void setMinSNP(int s) { minSNP = s; } + //virtual void setIters(int i) { iters = i; } + virtual bool getUnaligned() { return unaligned; } + //virtual void setTemplateFile(string t) { templateFileName = t; templateSeqs = readSeqs(t); } + virtual int getLength() { return length; } - virtual void setCons(string){}; - virtual void setQuantiles(string){}; + //virtual void setCons(string){}; + //virtual void setQuantiles(string){}; + //virtual int doPrep(){ return 0; } virtual vector readSeqs(string); - virtual vector< vector > readQuantiles(); + //virtual vector< vector > readQuantiles(); virtual void setMask(string); - virtual void runFilter(vector); - virtual void createFilter(vector); + virtual map runFilter(Sequence*); + virtual string createFilter(vector, float); + virtual void printHeader(ostream&){}; + virtual int getChimeras(Sequence*){ return 0; } + virtual int getChimeras(){ return 0; } + virtual int print(ostream&, ostream&){ return 0; } + + #ifdef USE_MPI + virtual int print(MPI_File&, MPI_File&){ return 0; } + #endif - //pure functions - virtual void getChimeras() = 0; - virtual void print(ostream&) = 0; protected: - bool filter, correction, svg; - int processors, window, increment, numWanted, kmerSize, match, misMatch, minSim, parents; - float divR; - string seqMask, quanfile, filterString, name; - - + vector templateSeqs; + bool filter, unaligned; // correction, svg, + int length; //processors, window, increment, numWanted, kmerSize, match, misMatch, minSim, minCov, minBS, minSNP, parents, iters, + //float divR; + string seqMask, filterString, outputDir, templateFileName; //quanfile, name, + Sequence* getSequence(string); //find sequence from name + MothurOut* m; }; /***********************************************************************/