]> git.donarmstrong.com Git - mothur.git/blob - chimera.h
added MPI code, broke up chimera.seqs into 5 separated commands, added parse.sff...
[mothur.git] / chimera.h
1 #ifndef CHIMERA_H
2 #define CHIMERA_H
3
4 /*
5  *  chimera.h
6  *  Mothur
7  *
8  *  Created by Sarah Westcott on 7/9/09.
9  *  Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
10  *
11  */
12
13
14 #include "mothur.h"
15 #include "sequence.hpp"
16
17 /***********************************************************************/
18 struct Preference {
19                 string name;
20                 string leftParent; //keep the name of closest left 
21                 string rightParent; //keep the name of closest 
22                 float score;  //preference score
23                 float closestLeft;  //keep the closest left 
24                 float closestRight; //keep the closest right 
25                 int midpoint;
26                 Preference() { name = ""; leftParent = ""; rightParent = ""; score = 0.0; closestLeft = 10000.0; closestRight = 10000.0; midpoint = 0;  }
27                 ~Preference() {}
28 };
29 /***********************************************************************/
30 struct score_struct {
31         int prev;
32         int score;
33         int row;
34         int col;
35 };
36 /***********************************************************************/
37 struct trace_struct {
38         int col;
39         int oldCol;
40         int row;
41 };
42 /***********************************************************************/
43 struct results {
44         int regionStart;
45         int regionEnd;
46         int nastRegionStart;
47         int nastRegionEnd;
48         string parent;
49         string parentAligned;
50         float queryToParent;
51         float queryToParentLocal;
52         float divR;
53 };
54 /***********************************************************************/
55 struct SeqDist {
56         Sequence* seq;
57         float dist;
58         int index;
59 };
60 //********************************************************************************************************************
61 //sorts lowest to highest
62 inline bool compareRegionStart(results left, results right){
63         return (left.nastRegionStart < right.nastRegionStart);  
64
65 //********************************************************************************************************************
66 //sorts lowest to highest
67 inline bool compareSeqDist(SeqDist left, SeqDist right){
68         return (left.dist < right.dist);        
69
70 //********************************************************************************************************************
71
72 struct sim {
73                 string leftParent;
74                 string rightParent; 
75                 float score;  
76                 int midpoint;
77 };
78
79 struct linePair {
80                         int start;
81                         int end;
82                         linePair(int i, int j) : start(i), end(j) {}
83                         linePair(){}
84 };
85
86 /***********************************************************************/
87
88 class Chimera {
89
90         public:
91         
92                 Chimera(){ m = MothurOut::getInstance(); length = 0; unaligned = false; }
93                 //Chimera(string) { m = MothurOut::getInstance(); }
94                 //Chimera(string, bool, string) { m = MothurOut::getInstance(); }
95                 //Chimera(string, string) { m = MothurOut::getInstance(); }
96                 virtual ~Chimera(){     for (int i = 0; i < templateSeqs.size(); i++) { delete templateSeqs[i];  } };
97                 //virtual void setFilter(bool f)                        {       filter = f;                     }
98                 //virtual void setCorrection(bool c)            {       correction = c;         }
99                 //virtual void setProcessors(int p)             {       processors = p;         }
100                 //virtual void setWindow(int w)                 {       window = w;                     }
101                 //virtual void setIncrement(int i)              {       increment = i;          }
102                 //virtual void setNumWanted(int n)              {       numWanted = n;          }
103                 //virtual void setKmerSize(int k)                       {       kmerSize = k;           }
104                 //virtual void setSVG(int s)                            {       svg = s;                        }
105                 //virtual void setName(string n)                        {       name = n;                       }
106                 //virtual void setMatch(int m)                  {       match = m;                      }
107                 //virtual void setMisMatch(int m)                       {       misMatch = m;           }
108                 //virtual void setDivR(float d)                 {       divR = d;                       }
109                 //virtual void setParents(int p)                        {       parents = p;            }
110                 //virtual void setMinSim(int s)                 {       minSim = s;                     }
111                 //virtual void setMinCoverage(int c)            {       minCov = c;                     }
112                 //virtual void setMinBS(int b)                  {       minBS = b;                      }
113                 //virtual void setMinSNP(int s)                 {       minSNP = s;                     }
114                 //virtual void setIters(int i)                  {       iters = i;                      }
115                 virtual bool getUnaligned()                             {       return unaligned;                       }
116                 //virtual void setTemplateFile(string t)        {   templateFileName = t;       templateSeqs = readSeqs(t);  }
117                 virtual int getLength()                                 {   return length;      }
118                 
119                 //virtual void setCons(string){};
120                 //virtual void setQuantiles(string){};
121                 //virtual int doPrep(){ return 0; }
122                 virtual vector<Sequence*> readSeqs(string);
123                 //virtual vector< vector<float> > readQuantiles();
124                 virtual void setMask(string);
125                 virtual map<int, int> runFilter(Sequence*);
126                 virtual string createFilter(vector<Sequence*>, float);
127                 
128                 virtual void printHeader(ostream&){};
129                 virtual int getChimeras(Sequence*){ return 0; }
130                 virtual int getChimeras(){ return 0; }
131                 virtual int print(ostream&, ostream&){  return 0; }
132                 
133                 #ifdef USE_MPI
134                 virtual int print(MPI_File&, MPI_File&){  return 0; }
135                 #endif
136                 
137                 
138         protected:
139                 
140                 vector<Sequence*> templateSeqs;
141                 bool filter, unaligned; //  correction, svg,
142                 int length; //processors, window, increment, numWanted, kmerSize, match, misMatch, minSim, minCov, minBS, minSNP, parents, iters,
143                 //float divR;
144                 string seqMask, filterString, outputDir, templateFileName; //quanfile, name, 
145                 Sequence* getSequence(string);  //find sequence from name       
146                 MothurOut* m;
147 };
148
149 /***********************************************************************/
150
151 #endif
152