*/
#include "decalc.h"
+#include "chimera.h"
+#include "database.hpp"
/***********************************************************************/
//This class was modeled after the chimeraMaligner written by the Broad Institute
-/***********************************************************************/
-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;
- string parent;
- float queryToParent;
- float queryToParentLocal;
- float divR;
-};
-
/**********************************************************************/
class Maligner {
public:
- Maligner(vector<Sequence*>, int, int, int, float, int);
+ Maligner(vector<Sequence*>, int, int, float, int, int); //int, int, int, , string, Database*, Database*
~Maligner() {};
- string getResults(Sequence*);
+ string getResults(Sequence*, DeCalculator*);
float getPercentID() { return percentIdenticalQueryChimera; }
vector<results> getOutput() { return outputResults; }
private:
- DeCalculator* decalc;
Sequence* query;
vector<Sequence*> refSeqs;
vector<Sequence*> db;
- int numWanted, matchScore, misMatchPenalty, minCoverage;
+ int minCoverage, minSimilarity, matchScore, misMatchPenalty;
float minDivR, percentIdenticalQueryChimera;
vector<results> outputResults;
+ map<int, int> spotMap;
vector<Sequence*> minCoverageFilter(vector<Sequence*>); //removes top matches that do not have minimum coverage with query.
int computeChimeraPenalty();
vector< vector<score_struct> > buildScoreMatrix(int, int);
void fillScoreMatrix(vector<vector<score_struct> >&, vector<Sequence*>, int);
- vector<score_struct> extractHighestPath(vector<vector<score_struct> >);
+ vector<trace_struct> extractHighestPath(vector<vector<score_struct> >);
vector<trace_struct> mapTraceRegionsToAlignment(vector<score_struct>, vector<Sequence*>);
string constructChimericSeq(vector<trace_struct>, vector<Sequence*>);
+ string constructAntiChimericSeq(vector<trace_struct>, vector<Sequence*>);
float computePercentID(string, string);
+ string chimeraMaligner(int, DeCalculator*);
+ MothurOut* m;
};