if (chimeraFlag == "yes") {
if (realign) {
+ vector<Sequence*> 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);
+ }
+
ChimeraReAligner realigner;
- realigner.reAlign(query, Results);
+ //realigner.reAlign(query, parents);
+
+ for (int i = 0; i < parents.size(); i++) { delete parents[i]; }
}
-
+ //query->printSequence(cout);
//get sequence that were given from maligner results
vector<SeqDist> seqs;
map<string, float> removeDups;
vector<int> mergedResults;
for (int i = 0; i < smaller.size(); i++) {
if (m->control_pressed) { delete queryRight; delete queryLeft; return refResults; }
-
+
//add left if you havent already
it = seen.find(smaller[i]);
if (it == seen.end()) {
}
for (int i = 0; i < mergedResults.size(); i++) {
-
+ //cout << mergedResults[i] << '\t' << db[mergedResults[i]]->getName() << endl;
if (db[mergedResults[i]]->getName() != q->getName()) {
Sequence* temp = new Sequence(db[mergedResults[i]]->getName(), db[mergedResults[i]]->getAligned());
refResults.push_back(temp);
int traceStart = trace[0].col;
int traceEnd = trace[trace.size()-1].oldCol;
string queryInRange = query->getAligned();
- queryInRange = queryInRange.substr(traceStart, (traceEnd-traceStart+1));
+ queryInRange = queryInRange.substr(traceStart, (traceEnd-traceStart));
if (m->control_pressed) { return chimera; }
temp.regionEnd = regionEnd;
string parentInRange = refSeqs[seqIndex]->getAligned();
- parentInRange = parentInRange.substr(traceStart, (traceEnd-traceStart+1));
+ parentInRange = parentInRange.substr(traceStart, (traceEnd-traceStart));
temp.queryToParent = computePercentID(queryInRange, parentInRange);
temp.divR = (percentIdenticalQueryChimera / temp.queryToParent);
string queryInRegion = query->getAligned();
- queryInRegion = queryInRegion.substr(regionStart, (regionEnd-regionStart+1));
+ queryInRegion = queryInRegion.substr(regionStart, (regionEnd-regionStart));
string parentInRegion = refSeqs[seqIndex]->getAligned();
- parentInRegion = parentInRegion.substr(regionStart, (regionEnd-regionStart+1));
+ parentInRegion = parentInRegion.substr(regionStart, (regionEnd-regionStart));
temp.queryToParentLocal = computePercentID(queryInRegion, parentInRegion);
- //cout << temp.parent << '\t' << "NAST:" << temp.nastRegionStart << '-' << temp.nastRegionEnd << " G:" << temp.queryToParent << " L:" << temp.queryToParentLocal << endl;
+ cout << temp.parent << '\t' << "NAST:" << temp.nastRegionStart << '-' << temp.nastRegionEnd << " G:" << temp.queryToParent << " L:" << temp.queryToParentLocal << endl;
outputResults.push_back(temp);
}
return -1.0;
}
-
- int numBases = 0;
int numIdentical = 0;
-
+ int countA = 0;
+ int countB = 0;
for (int i = 0; i < queryAlign.length(); i++) {
- if ((isalpha(queryAlign[i])) || (isalpha(chimera[i]))) {
- numBases++;
- if (queryAlign[i] == chimera[i]) {
- numIdentical++;
+ if (((queryAlign[i] != 'G') && (queryAlign[i] != 'T') && (queryAlign[i] != 'A') && (queryAlign[i] != 'C')&& (queryAlign[i] != '.') && (queryAlign[i] != '-')) ||
+ ((chimera[i] != 'G') && (chimera[i] != 'T') && (chimera[i] != 'A') && (chimera[i] != 'C')&& (chimera[i] != '.') && (chimera[i] != '-'))) {}
+ else {
+
+ bool charA = false; bool charB = false;
+ if ((queryAlign[i] == 'G') || (queryAlign[i] == 'T') || (queryAlign[i] == 'A') || (queryAlign[i] == 'C')) { charA = true; }
+ if ((chimera[i] == 'G') || (chimera[i] == 'T') || (chimera[i] == 'A') || (chimera[i] == 'C')) { charB = true; }
+
+ if (charA || charB) {
+
+ if (charA) { countA++; }
+ if (charB) { countB++; }
+
+ if (queryAlign[i] == chimera[i]) {
+ numIdentical++;
+ }
}
}
}
-
+
+ float numBases = (countA + countB) /(float) 2;
+
if (numBases == 0) { return 0; }
float percentIdentical = (numIdentical/(float)numBases) * 100;