]> git.donarmstrong.com Git - mothur.git/blobdiff - nameassignment.cpp
made classifier faster
[mothur.git] / nameassignment.cpp
index bc088f45924f4af9db951e81882376cd64fbc8f0..0c30898dd4085f5000a68c005ccbeee1bcd3650c 100644 (file)
@@ -5,7 +5,7 @@
 //**********************************************************************************************************************
 
 NameAssignment::NameAssignment(string nameMapFile){
-       
+       m = MothurOut::getInstance();
        openInputFile(nameMapFile, fileHandle);
        
 }
@@ -17,26 +17,30 @@ void NameAssignment::readMap(){
                string firstCol, secondCol, skip;
        //      int index = 0;
        
-       
-//             map<string, string> data;
+               
+               map<string, int>::iterator itData;
                int rowIndex = 0;
-
+               
                while(fileHandle){
                        fileHandle >> firstCol;                         //read from first column
                        fileHandle >> secondCol;                        //read from second column
+                                               
+                       itData = (*this).find(firstCol);
+                       if (itData == (*this).end()) {
+                       
+                               (*this)[firstCol] = rowIndex++;
+                               list.push_back(secondCol);              //adds data's value to list
+                               reverse[rowIndex] = firstCol;
+                               
+                       }else{  m->mothurOut(firstCol + " is already in namesfile. I will use first definition."); m->mothurOutEndLine();  }
                        
-//                     data[firstCol] = secondCol;                     //store data in map
-
-                       list.push_back(secondCol);              //adds data's value to list
-                       reverse[rowIndex] = firstCol;
-                       (*this)[firstCol] = rowIndex++;
                        gobble(fileHandle);
                }
                fileHandle.close();
        
        }
        catch(exception& e) {
-               errorOut(e, "NameAssignment", "readMap");
+               m->errorOut(e, "NameAssignment", "readMap");
                exit(1);
        }
 }
@@ -51,7 +55,7 @@ void NameAssignment::push_back(string name) {
                list.push_back(name);
        }
        catch(exception& e) {
-               errorOut(e, "NameAssignment", "push_back");
+               m->errorOut(e, "NameAssignment", "push_back");
                exit(1);
        }
 }
@@ -75,7 +79,7 @@ void NameAssignment::print(ostream& out){
                }
        }
        catch(exception& e) {
-               errorOut(e, "NameAssignment", "print");
+               m->errorOut(e, "NameAssignment", "print");
                exit(1);
        }
 }