]> git.donarmstrong.com Git - mothur.git/blobdiff - knn.cpp
added pca command
[mothur.git] / knn.cpp
diff --git a/knn.cpp b/knn.cpp
index 6d57fb135f14398fb6b7ab776eb81e84e4728406..706d2435117513d4a7149e0cc2a670e0e18dc7bb 100644 (file)
--- a/knn.cpp
+++ b/knn.cpp
@@ -10,7 +10,7 @@
 #include "knn.h"
 
 /**************************************************************************************************/
-Knn::Knn(string tfile, string tempFile, string method, int kmerSize, int gapOpen, int gapExtend, int match, int misMatch, int n) 
+Knn::Knn(string tfile, string tempFile, string method, int kmerSize, float gapOpen, float gapExtend, float match, float misMatch, int n) 
 : Classify(tfile, tempFile, method, kmerSize, gapOpen, gapExtend, match, misMatch), num(n)  {}
 /**************************************************************************************************/
 string Knn::getTaxonomy(Sequence* seq) {
@@ -18,8 +18,9 @@ string Knn::getTaxonomy(Sequence* seq) {
                string tax;
                
                //use database to find closest seq
+
                vector<int> closest = database->findClosestSequences(seq, num);
-               
+
                vector<string> closestNames;
                for (int i = 0; i < closest.size(); i++) {
                        //find that sequences taxonomy in map
@@ -39,6 +40,7 @@ string Knn::getTaxonomy(Sequence* seq) {
                        if (tax == "") { mothurOut("There are no common levels for sequence " + seq->getName() + ". " + seq->getName() + " will be disregarded."); mothurOutEndLine(); tax = "bad seq"; }
                }
                
+               simpleTax = tax;
                return tax;     
        }
        catch(exception& e) {
@@ -60,18 +62,7 @@ string Knn::findCommonTaxonomy(vector<string> closest)  {
                
                        string tax = taxonomy[closest[i]];  //we know its there since we checked in getTaxonomy
                
-                       tax = tax.substr(0, tax.length()-1);  //get rid of last ';'
-       
-                       //parse taxonomy
-                       string individual;
-                       while (tax.find_first_of(';') != -1) {
-                               individual = tax.substr(0,tax.find_first_of(';'));
-                               tax = tax.substr(tax.find_first_of(';')+1, tax.length());
-                               taxons[i].push_back(individual);
-                       
-                       }
-                       //get last one
-                       taxons[i].push_back(tax);
+                       taxons[i] = parseTax(tax);
                
                        //figure out who has the shortest taxonomy info. so you can start comparing there
                        if (taxons[i].size() < smallest) {