X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=slayer.cpp;h=a244ea42634fc9b31218aceaafd3d76f249d92e8;hb=1cf188b912d6da8f2cd03dd71cecef664a699c1a;hp=5ecb4ea7c5c430b34efc934b1e736915f363438c;hpb=1b49ed179327150ebf24d77b33d9b3e6872cc8c0;p=mothur.git diff --git a/slayer.cpp b/slayer.cpp index 5ecb4ea..a244ea4 100644 --- a/slayer.cpp +++ b/slayer.cpp @@ -426,21 +426,41 @@ float Slayer::snpAB(vector data) { } } /***********************************************************************/ -float Slayer::computePercentID(string queryFrag, string parent, int left, int right) { +float Slayer::computePercentID(string queryAlign, string chimera, int left, int right) { try { - int total = 0; - int matches = 0; - + + int numIdentical = 0; + int countA = 0; + int countB = 0; for (int i = left; i <= right; i++) { - total++; - if (queryFrag[i] == parent[i]) { - matches++; + 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 percentID =( matches/(float)total) * 100; - return percentID; + float numBases = (countA + countB) /(float) 2; + + if (numBases == 0) { return 0; } + + float percentIdentical = (numIdentical/(float)numBases) * 100; + + return percentIdentical; + } catch(exception& e) { m->errorOut(e, "Slayer", "computePercentID");