X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=sharedcommand.cpp;h=4cc0ea73b6a4a561ce0a511ca5cbb5da4b9d581c;hb=818dcf9513122fa52616a7722f4893f77685a621;hp=efc45c191482cc191fa204e526758a81af4bf910;hpb=315e38cf393c82be238da5b32574f225a020d25c;p=mothur.git diff --git a/sharedcommand.cpp b/sharedcommand.cpp index efc45c1..4cc0ea7 100644 --- a/sharedcommand.cpp +++ b/sharedcommand.cpp @@ -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& 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 listNames; + map::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 namesInList; + map::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; }