]> git.donarmstrong.com Git - mothur.git/blobdiff - treemap.cpp
added count file to trim.seqs, get.groups, get.lineage, get.seqs, heatmap.sim, list...
[mothur.git] / treemap.cpp
index 42ec336dd53d9da3c0ac44b997cdc7509a89c9cf..06d05d4fbad15cbc111609d42e5d825b3bcc0f88 100644 (file)
@@ -13,6 +13,9 @@
 
  TreeMap::TreeMap(string filename) {
        m = MothurOut::getInstance();
+    ofstream out2;
+    m->openOutputFileAppend(filename, out2);
+    out2 << endl; out2.close();
        groupFileName = filename;
        m->openInputFile(filename, fileHandle);
 }
 /************************************************************/
 int TreeMap::readMap(string gf) {
     try {
+        ofstream out2;
+        m->openOutputFileAppend(gf, out2);
+        out2 << endl; out2.close();
+        
         groupFileName = gf;
         m->openInputFile(gf, fileHandle);
         
@@ -65,6 +72,34 @@ int TreeMap::readMap(string gf) {
         }
         fileHandle.close();
         
+        if (rest != "") {
+            vector<string> pieces = m->splitWhiteSpace(rest);
+            
+            for (int i = 0; i < pieces.size(); i++) {
+                if (columnOne) {  seqName = pieces[i]; columnOne=false; }
+                else  { seqGroup = pieces[i]; pairDone = true; columnOne=true; }
+                
+                if (pairDone) { 
+                    setNamesOfGroups(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]++;
+                        }                              
+                    }
+                    pairDone = false; 
+                } 
+            }
+        }
+        
         return error;
     }
        catch(exception& e) {
@@ -116,6 +151,34 @@ int TreeMap::readMap() {
         }
         fileHandle.close();
         
+        if (rest != "") {
+            vector<string> pieces = m->splitWhiteSpace(rest);
+            
+            for (int i = 0; i < pieces.size(); i++) {
+                if (columnOne) {  seqName = pieces[i]; columnOne=false; }
+                else  { seqGroup = pieces[i]; pairDone = true; columnOne=true; }
+                
+                if (pairDone) { 
+                    setNamesOfGroups(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]++;
+                        }                              
+                    }
+                    pairDone = false; 
+                } 
+            }
+        }
+        
         return error;
     }
        catch(exception& e) {
@@ -184,7 +247,7 @@ string TreeMap::getGroup(string sequenceName) {
        }
                
 }
-/************************************************************/
+/************************************************************
 void TreeMap::setIndex(string seq, int index) {
        it = treemap.find(seq);
        if (it != treemap.end()) { //sequence name was in group file
@@ -194,7 +257,7 @@ void TreeMap::setIndex(string seq, int index) {
                treemap[seq].groupname = "not found";
        }
 }
-/************************************************************/
+/************************************************************
 int TreeMap::getIndex(string seq) {
        
        it = treemap.find(seq);