createFilter(templateSeqs, 0.0); //just removed columns where all seqs have a gap
- //run filter on template
- for (int i = 0; i < templateSeqs.size(); i++) { if (m->control_pressed) { break; } runFilter(templateSeqs[i]); }
-
-
+ if (searchMethod == "distance") {
+ createFilter(templateSeqs, 0.0); //just removed columns where all seqs have a gap
+
+ //run filter on template copying templateSeqs into filteredTemplateSeqs
+ for (int i = 0; i < templateSeqs.size(); i++) {
+ if (m->control_pressed) { break; }
+
+ Sequence* newSeq = new Sequence(templateSeqs[i]->getName(), templateSeqs[i]->getAligned());
+ runFilter(newSeq);
+ filteredTemplateSeqs.push_back(newSeq);
+ }
+ }
}
catch(exception& e) {
m->errorOut(e, "ChimeraSlayer", "ChimeraSlayer");
for (int i = 0; i < refSeqs.size(); i++) { delete refSeqs[i]; }
if (chimeraFlag == "yes") {
-
+
if (realign) {
- vector<Sequence*> parents;
+ vector<string> parents;
for (int i = 0; i < Results.size(); i++) {
-cout << Results[i].parent << '\t' << Results[i].nastRegionStart << '\t' << Results[i].nastRegionEnd << endl;
- Sequence* parent = new Sequence(Results[i].parent, Results[i].parentAligned);
-
- parents.push_back(parent);
+ parents.push_back(Results[i].parentAligned);
}
- ChimeraReAligner realigner;
- //realigner.reAlign(query, parents);
-
- for (int i = 0; i < parents.size(); i++) { delete parents[i]; }
+ ChimeraReAligner realigner;
+ realigner.reAlign(query, parents);
+
}
- //query->printSequence(cout);
+
//get sequence that were given from maligner results
vector<SeqDist> seqs;
map<string, float> removeDups;
//free memory
for (int k = 0; k < seqs.size(); k++) { delete seqs[k].seq; }
}
-
+ //cout << endl << endl;
return 0;
}
catch(exception& e) {
//find closest seqs to query in template - returns copies of seqs so trim does not destroy - remember to deallocate
Sequence* newSeq = new Sequence(q->getName(), q->getAligned());
runFilter(newSeq);
- refSeqs = decalc->findClosest(newSeq, thisTemplate, thisFilteredTemplate, numWanted);
+ refSeqs = decalc->findClosest(newSeq, thisTemplate, thisFilteredTemplate, numWanted, minSim);
delete newSeq;
}else if (searchMethod == "blast") {
refSeqs = getBlastSeqs(q, thisTemplate, numWanted); //fills indexes
string queryUnAligned = q->getUnaligned();
string leftQuery = queryUnAligned.substr(0, int(queryUnAligned.length() * 0.33)); //first 1/3 of the sequence
string rightQuery = queryUnAligned.substr(int(queryUnAligned.length() * 0.66)); //last 1/3 of the sequence
+//cout << "whole length = " << queryUnAligned.length() << '\t' << "left length = " << leftQuery.length() << '\t' << "right length = "<< rightQuery.length() << endl;
+ Sequence* queryLeft = new Sequence(q->getName(), leftQuery);
+ Sequence* queryRight = new Sequence(q->getName(), rightQuery);
- Sequence* queryLeft = new Sequence(q->getName()+"left", leftQuery);
- Sequence* queryRight = new Sequence(q->getName()+"right", rightQuery);
-
- vector<int> tempIndexesLeft = databaseLeft->findClosestMegaBlast(queryLeft, num+1);
- vector<int> tempIndexesRight = databaseLeft->findClosestMegaBlast(queryRight, num+1);
-
+ vector<int> tempIndexesLeft = databaseLeft->findClosestMegaBlast(queryLeft, num+1, minSim);
+ vector<int> tempIndexesRight = databaseLeft->findClosestMegaBlast(queryRight, num+1, minSim);
+ //cout << q->getName() << '\t' << leftQuery << '\t' << "leftMatches = " << tempIndexesLeft.size() << '\t' << rightQuery << " rightMatches = " << tempIndexesRight.size() << endl;
vector<int> smaller;
vector<int> larger;