/***********************************************************************/
+//this structure is necessary to determine the sequence that contributed to the outliers when we remove them
+//this way we can remove all scores that are contributed by outlier sequences.
+struct quanMember {
+ float score;
+ int member1;
+ int member2;
+ quanMember (float s, int m, int n) : score(s), member1(m), member2(n) {}
+ quanMember() {}
+
+};
+
+//********************************************************************************************************************
class DeCalculator {
public:
-
- void trimSeqs(Sequence*, Sequence, map<int, int>&);
- vector<float> readFreq();
- vector<float> calcFreq(vector<Sequence*>);
- vector<Sequence> findPairs(int, int);
- vector<int> findWindows(Sequence*, int, int, int&);
- vector<float> calcObserved(Sequence*, Sequence, vector<int>, int);
+ DeCalculator() { m = MothurOut::getInstance(); }
+ ~DeCalculator() {};
+
+ vector<Sequence*> findClosest(Sequence*, vector<Sequence*>, int&, vector<int>&); //takes querySeq, a reference db, numWanted and indexes
+ Sequence* findClosest(Sequence*, vector<Sequence*>);
+ set<int> getPos() { return h; }
+ void setMask(string);
+ void setAlignmentLength(int l) { alignLength = l; }
+ void runMask(Sequence*);
+ void trimSeqs(Sequence*, Sequence*, map<int, int>&);
+ map<int, int> trimSeqs(Sequence*, vector<Sequence*>);
+ void removeObviousOutliers(vector< vector<float> >&, int);
+ vector<float> calcFreq(vector<Sequence*>, string);
+ vector<int> findWindows(Sequence*, int, int, int&, int);
+ vector<float> calcObserved(Sequence*, Sequence*, vector<int>, int);
vector<float> calcExpected(vector<float>, float);
- vector<float> findQav(vector<int>, int);
+ vector<float> findQav(vector<int>, int, vector<float>);
float calcDE(vector<float>, vector<float>);
- float calcDist(Sequence*, Sequence, int, int);
+ float calcDist(Sequence*, Sequence*, int, int);
float getCoef(vector<float>, vector<float>);
+ vector< vector<float> > getQuantiles(vector<Sequence*>, vector<int>, int, vector<float>, int, int, int);
+
+ vector<int> returnObviousOutliers(vector< vector<quanMember> >, int);
+
+ map<int, int> getMaskMap() { return maskMap; }
private:
-
+ //vector<quanMember> sortContrib(map<quanMember*, float>); //used by mallard
+ float findAverage(vector<float>);
+ //int findLargestContrib(vector<int>);
+ //void removeContrib(int, vector<quanMember>&);
+ string seqMask;
+ set<int> h;
+ int alignLength;
+ map<int, int> maskMap;
+ MothurOut* m;
};