int traceStart = path[0].col;
int traceEnd = path[path.size()-1].col;
string queryInRange = query->getAligned();
- queryInRange = queryInRange.substr(traceStart, (traceEnd-traceStart));
+ queryInRange = queryInRange.substr(traceStart, (traceEnd-traceStart+1));
string chimeraSeq = constructChimericSeq(trace, refSeqs);
+// cout << queryInRange.length() << endl;
+// cout << chimeraSeq.length() << endl;
percentIdenticalQueryChimera = computePercentID(queryInRange, chimeraSeq);
temp.regionEnd = regionEnd;
string parentInRange = refSeqs[seqIndex]->getAligned();
- parentInRange = parentInRange.substr(traceStart, (traceEnd-traceStart));
+ parentInRange = parentInRange.substr(traceStart, (traceEnd-traceStart+1));
temp.queryToParent = computePercentID(queryInRange, parentInRange);
temp.divR = (percentIdenticalQueryChimera / temp.queryToParent);
string queryInRegion = query->getAligned();
- queryInRegion = queryInRegion.substr(regionStart, (regionEnd-regionStart));
+ queryInRegion = queryInRegion.substr(regionStart, (regionEnd-regionStart+1));
string parentInRegion = refSeqs[seqIndex]->getAligned();
- parentInRegion = parentInRegion.substr(regionStart, (regionEnd-regionStart));
+ parentInRegion = parentInRegion.substr(regionStart, (regionEnd-regionStart+1));
temp.queryToParentLocal = computePercentID(queryInRegion, parentInRegion);
- //cout << query->getName() << '\t' << temp.parent << '\t' << "NAST:" << temp.nastRegionStart << '-' << temp.nastRegionEnd << " G:" << temp.queryToParent << " L:" << temp.queryToParentLocal << ", " << temp.divR << endl;
+// cout << query->getName() << '\t' << temp.parent << '\t' << "NAST:" << temp.nastRegionStart << '-' << temp.nastRegionEnd << " G:" << temp.queryToParent << " L:" << temp.queryToParentLocal << ", " << temp.divR << endl;
outputResults.push_back(temp);
}
seqAlign = seqAlign.substr(trace[i].col, (trace[i].oldCol-trace[i].col+1));
chimera += seqAlign;
}
-
- if (chimera != "") { chimera = chimera.substr(0, (chimera.length()-1)); }
+// cout << chimera << endl;
+// if (chimera != "") { chimera = chimera.substr(0, (chimera.length()-1)); } //this was introducing a fence post error
+// cout << chimera << endl;
return chimera;
}
catch(exception& e) {
return -1.0;
}
+// cout << queryAlign.length() << endl;
int numIdentical = 0;
int countA = 0;
int countB = 0;
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++; }
numIdentical++;
}
}
+// cout << queryAlign[i] << '\t' << chimera[i] << '\t' << countA << '\t' << countB << endl;
+
}
}
+// cout << "pat\t" << countA << '\t' << countB << '\t' << numIdentical << endl;
+
+
float numBases = (countA + countB) /(float) 2;
if (numBases == 0) { return 0; }
float percentIdentical = (numIdentical/(float)numBases) * 100;
-
+
+// cout << percentIdentical << endl;
+
return percentIdentical;
}