vector<int> KmerDB::findClosestSequences(Sequence* candidateSeq, int num){
try {
+ if (num > numSeqs) { m->mothurOut("[WARNING]: you requested " + toString(num) + " closest sequences, but the template only contains " + toString(numSeqs) + ", adjusting."); m->mothurOutEndLine(); num = numSeqs; }
+
vector<int> topMatches;
Kmer kmer(kmerSize);
searchScore = 0;
+ Scores.clear();
vector<int> matches(numSeqs, 0); // a record of the sequences with shared kmers
vector<int> timesKmerFound(kmerLocations.size()+1, 0); // a record of the kmers that we have already found
//save top matches
for (int i = 0; i < num; i++) {
topMatches.push_back(seqMatches[i].seq);
+ float thisScore = 100 * seqMatches[i].match / (float) numKmers;
+ Scores.push_back(thisScore);
}
}else{
int bestIndex = 0;
searchScore = bestMatch;
searchScore = 100 * searchScore / (float) numKmers; // return the Sequence object corresponding to the db
topMatches.push_back(bestIndex);
+ Scores.push_back(searchScore);
}
return topMatches;
}
}
}
/**************************************************************************************************/
+int KmerDB::getReversed(int kmerNumber) {
+ try {
+ Kmer kmer(kmerSize);
+
+ if (kmerNumber < 0) { return 0; } //if user gives negative number
+ else if (kmerNumber > maxKmer) { return 0; } //or a kmer that is bigger than maxkmer
+ else { return kmer.getReverseKmerNumber(kmerNumber); } // kmer is in vector range
+ }
+ catch(exception& e) {
+ m->errorOut(e, "KmerDB", "getReversed");
+ exit(1);
+ }
+}
+/**************************************************************************************************/
vector<int> KmerDB::getSequencesWithKmer(int kmer) {
try {