]> git.donarmstrong.com Git - mothur.git/blobdiff - readcluster.cpp
added count file to cluster.classic and cluster.split. modified splitting classes...
[mothur.git] / readcluster.cpp
index 205581c72ab26bd767a0a4c47fdfcb3d73e124d5..b6cb71de5fdbb888f4a7c1614987f74cd0bf8b1a 100644 (file)
@@ -12,7 +12,6 @@
 /***********************************************************************/
 
 ReadCluster::ReadCluster(string distfile, float c, string o, bool s){
-               globaldata = GlobalData::getInstance();
                m = MothurOut::getInstance();
         distFile = distfile;
                cutoff = c;
@@ -23,7 +22,7 @@ ReadCluster::ReadCluster(string distfile, float c, string o, bool s){
 
 /***********************************************************************/
 
-int ReadCluster::read(NameAssignment* nameMap){
+int ReadCluster::read(NameAssignment*& nameMap){
        try {
         
                if (format == "phylip") { convertPhylip2Column(nameMap); }
@@ -44,7 +43,7 @@ int ReadCluster::read(NameAssignment* nameMap){
 }
 /***********************************************************************/
 
-int ReadCluster::convertPhylip2Column(NameAssignment* nameMap){
+int ReadCluster::convertPhylip2Column(NameAssignment*& nameMap){
        try {   
                //convert phylip file to column file
                map<int, string> rowToName;
@@ -61,8 +60,13 @@ int ReadCluster::convertPhylip2Column(NameAssignment* nameMap){
                int square, nseqs;
                string name;
                vector<string> matrixNames;
-        
-               in >> nseqs >> name;
+               
+               string numTest;
+               in >> numTest >> name;
+               
+               if (!m->isContainingOnlyDigits(numTest)) { m->mothurOut("[ERROR]: expected a number and got " + numTest + ", quitting."); m->mothurOutEndLine(); exit(1); }
+               else { convert(numTest, nseqs); }
+               
                rowToName[0] = name;
                matrixNames.push_back(name);
                
@@ -105,7 +109,7 @@ int ReadCluster::convertPhylip2Column(NameAssignment* nameMap){
                                        
                                        for(int j=0;j<i;j++){
                                        
-                                               if (m->control_pressed) { in.close(); out.close(); remove(tempFile.c_str()); return 0; }
+                                               if (m->control_pressed) { in.close(); out.close(); m->mothurRemove(tempFile); return 0; }
                                                
                                                in >> distance;
                                                
@@ -122,7 +126,7 @@ int ReadCluster::convertPhylip2Column(NameAssignment* nameMap){
                                        
                                        for(int j=0;j<i;j++){
                                                
-                                               if (m->control_pressed) { in.close(); out.close(); remove(tempFile.c_str()); return 0; }
+                                               if (m->control_pressed) { in.close(); out.close(); m->mothurRemove(tempFile); return 0; }
                                                
                                                in >> distance;
                                                
@@ -144,7 +148,7 @@ int ReadCluster::convertPhylip2Column(NameAssignment* nameMap){
                                if(nameMap == NULL){
                                        list->set(i, name);
                                        for(int j=0;j<nseqs;j++){
-                                               if (m->control_pressed) { in.close(); out.close(); remove(tempFile.c_str()); return 0; }
+                                               if (m->control_pressed) { in.close(); out.close(); m->mothurRemove(tempFile); return 0; }
                                                
                                                in >> distance;
                                        
@@ -159,7 +163,7 @@ int ReadCluster::convertPhylip2Column(NameAssignment* nameMap){
                                        if(nameMap->count(name)==0){        m->mothurOut("Error: Sequence '" + name + "' was not found in the names file, please correct"); m->mothurOutEndLine(); }
                                        
                                        for(int j=0;j<nseqs;j++){
-                                               if (m->control_pressed) { in.close(); out.close(); remove(tempFile.c_str()); return 0; }
+                                               if (m->control_pressed) { in.close(); out.close(); m->mothurRemove(tempFile); return 0; }
                                                
                                                in >> distance;
                         
@@ -183,7 +187,6 @@ int ReadCluster::convertPhylip2Column(NameAssignment* nameMap){
                        for(int i=0;i<matrixNames.size();i++){
                                nameMap->push_back(matrixNames[i]);
                        }
-                       globaldata->nameMap = nameMap;
                }
                
        
@@ -198,7 +201,7 @@ int ReadCluster::convertPhylip2Column(NameAssignment* nameMap){
                float dist;
                
                while (in2) {
-                       if (m->control_pressed) { in2.close(); out2.close(); remove(tempFile.c_str()); remove(outputFile.c_str()); return 0; }
+                       if (m->control_pressed) { in2.close(); out2.close(); m->mothurRemove(tempFile); m->mothurRemove(outputFile); return 0; }
                        
                        in2 >> first >> second >> dist;
                        out2 << rowToName[first] << '\t' << rowToName[second] << '\t' << dist << endl;
@@ -207,10 +210,10 @@ int ReadCluster::convertPhylip2Column(NameAssignment* nameMap){
                in2.close();
                out2.close();
                
-               remove(tempFile.c_str());
+               m->mothurRemove(tempFile);
                distFile = outputFile;
        
-               if (m->control_pressed) {  remove(outputFile.c_str());  }
+               if (m->control_pressed) {  m->mothurRemove(outputFile);  }
 
                return 0;
        }