#include "nast.hpp"
//***************************************************************************************************************
-ChimeraReAligner::ChimeraReAligner(vector<Sequence*> t, int m, int mm) : match(m), misMatch(mm) { templateSeqs = t; }
+ChimeraReAligner::ChimeraReAligner(vector<Sequence*> t, int ms, int mm) : match(ms), misMatch(mm) { templateSeqs = t; m = MothurOut::getInstance(); }
//***************************************************************************************************************
ChimeraReAligner::~ChimeraReAligner() {}
//***************************************************************************************************************
string qAligned = query->getAligned();
string newQuery = "";
-
+
//sort parents by region start
sort(parents.begin(), parents.end(), compareRegionStart);
int longest = 0;
//take query and break apart into pieces using breakpoints given by results of parents
for (int i = 0; i < parents.size(); i++) {
- cout << parents[i].parent << '\t' << parents[i].nastRegionStart << '\t' << parents[i].nastRegionEnd << endl;
- int length = parents[i].nastRegionEnd - parents[i].nastRegionStart;
+ int length = parents[i].nastRegionEnd - parents[i].nastRegionStart+1;
string q = qAligned.substr(parents[i].nastRegionStart, length);
- cout << "query = " << q << endl;
Sequence* queryFrag = new Sequence(query->getName(), q);
queryParts.push_back(queryFrag);
-
+
Sequence* parent = getSequence(parents[i].parent);
string p = parent->getAligned();
p = p.substr(parents[i].nastRegionStart, length);
- cout << "parent = " << p << endl;
parent->setAligned(p);
parentParts.push_back(parent);
//make sure you don't cutoff end of query
if (parents[parents.size()-1].nastRegionEnd < qAligned.length()) { newQuery += qAligned.substr(parents[parents.size()-1].nastRegionEnd); }
-
+
//set query to new aligned string
query->setAligned(newQuery);
}
catch(exception& e) {
- errorOut(e, "ChimeraReAligner", "reAlign");
+ m->errorOut(e, "ChimeraReAligner", "reAlign");
exit(1);
}
}
}
}
- if(spot == -1) { mothurOut("Error: Could not find sequence."); mothurOutEndLine(); return NULL; }
+ if(spot == -1) { m->mothurOut("Error: Could not find sequence."); m->mothurOutEndLine(); return NULL; }
temp = new Sequence(templateSeqs[spot]->getName(), templateSeqs[spot]->getAligned());
return temp;
}
catch(exception& e) {
- errorOut(e, "ChimeraReAligner", "getSequence");
+ m->errorOut(e, "ChimeraReAligner", "getSequence");
exit(1);
}
}