/***********************************************************************/
//This class was modeled after the chimeraSlayer written by the Broad Institute
/***********************************************************************/
-struct data_struct { //not right needs work...
- int regionStart;
- int regionEnd;
- string parent;
- float queryToParent;
- float queryToParentLocal;
- float divR;
+struct data_struct { //this is crazy big...but follow original.
+ 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;
+
};
/***********************************************************************/
+//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 snps {
+ char queryChar;
+ char parentAChar;
+ char parentBChar;
+};
+
+/***********************************************************************/
class Slayer {
public:
- Slayer(int, int, int, float);
+ Slayer(int, int, int, float, int, int);
~Slayer() {};
- void getResults(Sequence*, vector<Sequence*>);
- //float getPercentID() { return percentIdenticalQueryChimera; }
- //vector<results> getOutput() { return outputResults; }
+ string getResults(Sequence*, vector<Sequence*>);
+ vector<data_struct> getOutput() { return outputResults; }
private:
- int windowSize, windowStep, parentFragmentThreshold;
+ int windowSize, windowStep, parentFragmentThreshold, iters, percentSNPSample;
float divRThreshold;
+ vector<data_struct> outputResults;
+ vector< map<int, int> > baseSpots;
- void verticalFilter(vector<Sequence*>);
+ map<int, int> verticalFilter(vector<Sequence*>);
float computePercentID(string, string, int, int);
- vector<data_struct> runBellerophon(Sequence*, Sequence*, Sequence*);
-
+ vector<data_struct> runBellerophon(Sequence*, Sequence*, Sequence*, map<int, int>&);
+ vector<snps> getSNPS(string, string, string, int, int);
+ int bootstrapSNPS(vector<snps>, vector<snps>, float&, float&);
+ float snpQA(vector<snps>);
+ float snpQB(vector<snps>);
+ float snpAB(vector<snps>);
+ MothurOut* m;
};