]> git.donarmstrong.com Git - mothur.git/blobdiff - treemap.cpp
added count.groups command and paralellized align.seqs for windows
[mothur.git] / treemap.cpp
index 75423855a7f583ae5ce62fc10118cf260589df6b..1fc5c01b796a67bd948a70147fa4dead9320ea08 100644 (file)
@@ -12,6 +12,7 @@
 /************************************************************/
 
  TreeMap::TreeMap(string filename) {
+       m = MothurOut::getInstance();
        groupFileName = filename;
        m->openInputFile(filename, fileHandle);
 }
  TreeMap::~TreeMap(){}
 
 /************************************************************/
-void TreeMap::readMap() {
+int TreeMap::readMap() {
                string seqName, seqGroup;
-       
+               int error = 0;
+               
                while(fileHandle){
-                       fileHandle >> seqName;                  //read from first column
+                       fileHandle >> seqName;          //read from first column
                        fileHandle >> seqGroup;                 //read from second column
-
-                       namesOfSeqs.push_back(seqName);
+                       
+                       if (m->control_pressed) {  fileHandle.close();  return 1; }
+                       
                        setNamesOfGroups(seqGroup);
                                        
-                       treemap[seqName].groupname = seqGroup;  //store data in map
-                       
-                       it2 = seqsPerGroup.find(seqGroup);
-                       if (it2 == seqsPerGroup.end()) { //if it's a new group
-                               seqsPerGroup[seqGroup] = 1;
-                       }else {//it's a group we already have
-                               seqsPerGroup[seqGroup]++;
+                       map<string, GroupIndex>::iterator itCheck = treemap.find(seqName);
+                       if (itCheck != treemap.end()) { error = 1; m->mothurOut("[WARNING]: Your groupfile contains more than 1 sequence named " + seqName + ", sequence names must be unique. Please correct."); m->mothurOutEndLine();  }
+                       else {
+                               namesOfSeqs.push_back(seqName);
+                               treemap[seqName].groupname = seqGroup;  //store data in map
+                               
+                               it2 = seqsPerGroup.find(seqGroup);
+                               if (it2 == seqsPerGroup.end()) { //if it's a new group
+                                       seqsPerGroup[seqGroup] = 1;
+                               }else {//it's a group we already have
+                                       seqsPerGroup[seqGroup]++;
+                               }                               
                        }
-
+                       
                        m->gobble(fileHandle);
                }
                fileHandle.close();
+       
+
+               return error;
 }
 /************************************************************/
 void TreeMap::addSeq(string seqName, string seqGroup) {