]> git.donarmstrong.com Git - mothur.git/blobdiff - sharedcommand.cpp
finished chimera changes
[mothur.git] / sharedcommand.cpp
index efc45c191482cc191fa204e526758a81af4bf910..4cc0ea73b6a4a561ce0a511ca5cbb5da4b9d581c 100644 (file)
@@ -65,7 +65,7 @@ int SharedCommand::execute(){
                //lookup.clear();
                string errorOff = "no error";
                //errorOff = "";
-cout << globaldata->inputFileName << endl;                     
+               
                //read in listfile
                read = new ReadOTUFile(globaldata->inputFileName);      
                read->read(&*globaldata); 
@@ -101,7 +101,7 @@ cout << globaldata->inputFileName << endl;
                                groups += globaldata->Groups[i] + ".";
                        }
                
-                       string newGroupFile = getRootName(globaldata->inputFileName) + groups + "groups";
+                       string newGroupFile = outputDir + getRootName(getSimpleName(globaldata->inputFileName)) + groups + "groups";
                        ofstream outGroups;
                        openOutputFile(newGroupFile, outGroups);
                
@@ -199,7 +199,13 @@ cout << globaldata->inputFileName << endl;
                        delete it3->second;
                }
 
+               
+               //change format to shared  to speed up commands
+               globaldata->setFormat("sharedfile");
+               globaldata->setListFile("");
+               globaldata->setGroupFile("");
                globaldata->setSharedFile(filename);
+
                
                return 0;
        }
@@ -274,7 +280,7 @@ void SharedCommand::eliminateZeroOTUS(vector<SharedRAbundVector*>& thislookup) {
 void SharedCommand::createMisMatchFile() {
        try {
                ofstream outMisMatch;
-               string outputMisMatchName = getRootName(globaldata->inputFileName);
+               string outputMisMatchName = outputDir + getRootName(getSimpleName(globaldata->inputFileName));
                
                //you have sequences in your list file that are not in your group file
                if (SharedList->getNumSeqs() > groupMap->getNumSeqs()) { 
@@ -283,6 +289,9 @@ void SharedCommand::createMisMatchFile() {
                        
                        openOutputFile(outputMisMatchName, outMisMatch);
                        
+                       map<string, string> listNames;
+                       map<string, string>::iterator itList;
+                       
                        //go through list and if group returns "not found" output it
                        for (int i = 0; i < SharedList->getNumBins(); i++) {
                        
@@ -292,13 +301,22 @@ void SharedCommand::createMisMatchFile() {
                                        string name = names.substr(0,names.find_first_of(','));
                                        names = names.substr(names.find_first_of(',')+1, names.length());
                                        string group = groupMap->getGroup(name);
-                               
+                                       
                                        if(group == "not found") {      outMisMatch << name << endl;  }
+                                       
+                                       itList = listNames.find(name);
+                                       if (itList != listNames.end()) {  mothurOut(name + " is in your list file more than once.  Sequence names must be unique. please correct."); mothurOutEndLine(); }
+                                       else { listNames[name] = name; }
                                }
                        
                                //get last name
                                string group = groupMap->getGroup(names);
-                               if(group == "not found") {      outMisMatch << names << endl;  }                                
+                               if(group == "not found") {      outMisMatch << names << endl;  }        
+                               
+                               itList = listNames.find(names);
+                               if (itList != listNames.end()) {  mothurOut(names + " is in your list file more than once.  Sequence names must be unique. please correct."); mothurOutEndLine(); }
+                               else { listNames[names] = names; }
+
                        }
                        
                        outMisMatch.close();
@@ -310,6 +328,7 @@ void SharedCommand::createMisMatchFile() {
                        mothurOut("For a list of names that are in your group file and not in your list file, please refer to " + outputMisMatchName + "."); mothurOutEndLine();
                        
                        map<string, string> namesInList;
+                       map<string, string>::iterator itList;
                        
                        //go through listfile and get names
                        for (int i = 0; i < SharedList->getNumBins(); i++) {
@@ -320,9 +339,16 @@ void SharedCommand::createMisMatchFile() {
                                        string name = names.substr(0,names.find_first_of(','));
                                        names = names.substr(names.find_first_of(',')+1, names.length());
                                        
+                                       itList = namesInList.find(name);
+                                       if (itList != namesInList.end()) {  mothurOut(name + " is in your list file more than once.  Sequence names must be unique. please correct."); mothurOutEndLine(); }
+
                                        namesInList[name] = name;
+                                       
                                }
                                
+                               itList = namesInList.find(names);
+                               if (itList != namesInList.end()) {  mothurOut(names + " is in your list file more than once.  Sequence names must be unique. please correct."); mothurOutEndLine(); }
+
                                //get last name
                                namesInList[names] = names;                             
                        }