]> git.donarmstrong.com Git - mothur.git/blob - decalc.h
checking in chimera files in progress after move to michigan
[mothur.git] / decalc.h
1 #ifndef DECALC_H
2 #define DECALC_H
3 /*
4  *  decalc.h
5  *  Mothur
6  *
7  *  Created by Sarah Westcott on 7/22/09.
8  *  Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
9  *
10  */
11
12 #include "mothur.h"
13 #include "sequence.hpp"
14
15 /***********************************************************************/
16
17 //This class was created using the algorythms described in the 
18 // "At Least 1 in 20 16S rRNA Sequence Records Currently Held in the Public Repositories is Estimated To Contain Substantial Anomalies" paper 
19 //by Kevin E. Ashelford 1, Nadia A. Chuzhanova 3, John C. Fry 1, Antonia J. Jones 2 and Andrew J. Weightman 1.
20
21 /***********************************************************************/
22
23 //this structure is necessary to determine the sequence that contributed to the outliers when we remove them
24 //this way we can remove all scores that are contributed by outlier sequences.
25 struct quanMember {
26         float score;
27         int member1;
28         int member2;
29         quanMember (float s, int m, int n) : score(s), member1(m),  member2(n) {}
30         quanMember() {}
31         
32 };
33                 
34 //********************************************************************************************************************
35 class DeCalculator {
36
37         public:
38                 
39                 DeCalculator() {};
40                 ~DeCalculator() {};
41                 
42                 set<int> getPos() {  return h;  }
43                 void setMask(string); 
44                 void setAlignmentLength(int l) {  alignLength = l;  }
45                 void runMask(Sequence*);
46                 void trimSeqs(Sequence*, Sequence*, map<int, int>&);
47                 void removeObviousOutliers(vector< vector<quanMember> >&, int);
48                 vector<float> calcFreq(vector<Sequence*>, string);
49                 vector<int> findWindows(Sequence*, int, int, int&, int);
50                 vector<float> calcObserved(Sequence*, Sequence*, vector<int>, int);
51                 vector<float>  calcExpected(vector<float>, float);
52                 vector<float>  findQav(vector<int>, int, vector<float>);  
53                 float calcDE(vector<float>, vector<float>);
54                 float calcDist(Sequence*, Sequence*, int, int);
55                 float getCoef(vector<float>, vector<float>);
56                 vector< vector<quanMember> > getQuantiles(vector<Sequence*>, vector<int>, int, vector<float>, int, int, int);
57                 
58                 vector<int> returnObviousOutliers(vector< vector<quanMember> >, int);
59                 
60         private:
61                 //vector<quanMember> sortContrib(map<quanMember*, float>);  //used by mallard
62                 float findAverage(vector<float>);
63                 //int findLargestContrib(vector<int>);
64                 //void removeContrib(int, vector<quanMember>&);
65                 string seqMask;
66                 set<int> h;
67                 int alignLength;
68
69 };
70
71 /***********************************************************************/
72
73 #endif