]> git.donarmstrong.com Git - mothur.git/blobdiff - chimera.h
fixed catchall PATH variable bug added trimera to chimera.slayer
[mothur.git] / chimera.h
index 8eec3cd03f16a0613f1c05e37e386dde7008c5be..e37d9f9af93cdbc808a6eb7bc7fe7f1ebe4df20a 100644 (file)
--- a/chimera.h
+++ b/chimera.h
 
 #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<data_struct> results;
+       string flag;
+       map<int, int> spotMap;
+       Sequence trimQuery;
+       
+       data_results(vector<data_struct> d, string f, map<int, int> s, Sequence t) : results(d), flag(f), spotMap(s), 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;
@@ -102,7 +147,9 @@ class Chimera {
                virtual int getChimeras(Sequence*){ return 0; }
                virtual int getChimeras(){ return 0; }
                virtual Sequence* print(ostream&, ostream&){  return NULL; }
+               virtual Sequence* print(ostream&, ostream&, data_results, data_results) { return NULL; }
                virtual int print(ostream&, ostream&, string){  return 0; }
+               virtual data_results getResults() { data_results results; return results; }
                
                #ifdef USE_MPI
                virtual Sequence* print(MPI_File&, MPI_File&){  return 0; }