X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=chimera.h;h=e187bfc60d8d504d80561d4347f9a838f1ddabee;hp=7120478f1df89cb9038ddea7f848cad376ca83d7;hb=df7e3ff9f68ef157b0328a2d353c3258c5d45d89;hpb=956cdff34f2d609a7736838b1631cd7957580b8b diff --git a/chimera.h b/chimera.h index 7120478..e187bfc 100644 --- a/chimera.h +++ b/chimera.h @@ -13,7 +13,52 @@ #include "mothur.h" #include "sequence.hpp" - +/***********************************************************************/ +struct data_struct { + float divr_qla_qrb; + float divr_qlb_qra; + float qla_qrb; + float qlb_qra; + float qla; + float qrb; + float ab; + float qa; + float qb; + float lab; + float rab; + float qra; + float qlb; + int winLStart; + int winLEnd; + int winRStart; + int winREnd; + Sequence querySeq; + Sequence parentA; + Sequence parentB; + float bsa; + float bsb; + float bsMax; + float chimeraMax; + +}; +/***********************************************************************/ +struct data_results { + vector results; + string flag; + Sequence trimQuery; + //results malignerResults; + + data_results(vector d, string f, map s, Sequence t) : results(d), flag(f), trimQuery(t) {} + data_results() {} +}; +/***********************************************************************/ +//sorts lowest to highest first by bsMax, then if tie by chimeraMax +inline bool compareDataStruct(data_struct left, data_struct right){ + if (left.bsMax < right.bsMax) { return true; } + else if (left.bsMax == right.bsMax) { + return (left.chimeraMax < right.chimeraMax); + }else { return false; } +} /***********************************************************************/ struct Preference { string name; @@ -32,6 +77,7 @@ struct score_struct { int score; int row; int col; +// int mismatches; }; /***********************************************************************/ struct trace_struct { @@ -57,6 +103,12 @@ struct SeqDist { float dist; int index; }; +/***********************************************************************/ +struct SeqCompare { + Sequence seq; + float dist; + int index; +}; //******************************************************************************************************************** //sorts lowest to highest inline bool compareRegionStart(results left, results right){ @@ -68,7 +120,11 @@ inline bool compareSeqDist(SeqDist left, SeqDist right){ return (left.dist < right.dist); } //******************************************************************************************************************** - +//sorts lowest to highest +inline bool compareSeqCompare(SeqCompare left, SeqCompare right){ + return (left.dist < right.dist); +} +//******************************************************************************************************************** struct sim { string leftParent; string rightParent; @@ -77,71 +133,50 @@ struct sim { }; struct linePair { - unsigned long int start; - unsigned long int end; - linePair(unsigned long int i, unsigned long int j) : start(i), end(j) {} + unsigned long long start; + unsigned long long end; + linePair(unsigned long long i, unsigned long long j) : start(i), end(j) {} linePair(){} }; + /***********************************************************************/ class Chimera { public: - 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; } + Chimera(){ m = MothurOut::getInstance(); length = 0; unaligned = false; byGroup = false; } + virtual ~Chimera(){ for (int i = 0; i < templateSeqs.size(); i++) { delete templateSeqs[i]; } for (int i = 0; i < filteredTemplateSeqs.size(); i++) { delete filteredTemplateSeqs[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 int doPrep(){ return 0; } virtual vector readSeqs(string); - //virtual vector< vector > readQuantiles(); virtual void setMask(string); 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; } + virtual Sequence print(ostream&, ostream&){ Sequence temp; return temp; } + virtual Sequence print(ostream&, ostream&, data_results, data_results) { Sequence temp; return temp; } + virtual int print(ostream&, ostream&, string){ return 0; } + virtual int getNumNoParents(){ return 0; } + virtual data_results getResults() { data_results results; return results; } #ifdef USE_MPI - virtual int print(MPI_File&, MPI_File&){ return 0; } + virtual Sequence print(MPI_File&, MPI_File&){ Sequence temp; return temp; } + virtual Sequence print(MPI_File&, MPI_File&, data_results, data_results, bool&){ Sequence temp; return temp; } + virtual int print(MPI_File&, MPI_File&, string){ return 0; } #endif protected: 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, + vector filteredTemplateSeqs; + bool filter, unaligned, byGroup; + int length; + string seqMask, filterString, outputDir, templateFileName; Sequence* getSequence(string); //find sequence from name MothurOut* m; };