]> git.donarmstrong.com Git - mothur.git/blobdiff - chimera.h
started work on sffinfo command. fixed bug across all paralellized commands if the...
[mothur.git] / chimera.h
index 2dc2989280af72a7b55f5e54b3e699ae1405dda9..7120478f1df89cb9038ddea7f848cad376ca83d7 100644 (file)
--- a/chimera.h
+++ b/chimera.h
 
 
 #include "mothur.h"
-#include "sparsematrix.hpp"
 #include "sequence.hpp"
 
-typedef list<PCell>::iterator MatData;
-typedef map<int, float> SeqMap;  //maps sequence to all distance for that seqeunce
+/***********************************************************************/
+struct Preference {
+               string name;
+               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){
+       return (left.dist < right.dist);        
+} 
+//********************************************************************************************************************
 
+struct sim {
+               string leftParent;
+               string rightParent; 
+               float score;  
+               int midpoint;
+};
+
+struct linePair {
+                       unsigned long int start;
+                       unsigned long int end;
+                       linePair(unsigned long int i, unsigned long int j) : start(i), end(j) {}
+                       linePair(){}
+};
 
 /***********************************************************************/
 
@@ -25,53 +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;          }
+               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<Sequence*> readSeqs(string);
+               //virtual vector< vector<float> > readQuantiles();
+               virtual void setMask(string);
+               virtual map<int, int> runFilter(Sequence*);
+               virtual string createFilter(vector<Sequence*>, float);
                
-               virtual vector<Sequence*> readSeqs(string file) {
-                       try {
-                               ifstream in;
-                               openInputFile(file, in);
-                               vector<Sequence*> container;
-                               
-                               //read in seqs and store in vector
-                               while(!in.eof()){
-
-                                       Sequence* current = new Sequence(in);
-                                       container.push_back(current);
-                                       gobble(in);
-                               }
-                               
-                               in.close();
-                               return container;
-                       }
-                       catch(exception& e) {
-                               errorOut(e, "Chimera", "readSeqs");
-                               exit(1);
-                       }
-               }
+               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;
-               int processors, window, increment;
-                       
-
+               vector<Sequence*> 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;
 };
 
 /***********************************************************************/