+}
+//**********************************************************************************************************************
+void SharedCommand::createMisMatchFile() {
+ try {
+ ofstream outMisMatch;
+ 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()) {
+ outputMisMatchName += "missing.group";
+ mothurOut("For a list of names that are in your list file and not in your group file, please refer to " + outputMisMatchName + "."); mothurOutEndLine();
+
+ 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++) {
+
+ string names = SharedList->get(i);
+
+ while (names.find_first_of(',') != -1) {
+ 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; }
+
+ 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();
+
+
+ }else {//you have sequences in your group file that are not in you list file
+
+ outputMisMatchName += "missing.name";
+ 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++) {
+
+ string names = SharedList->get(i);
+
+ while (names.find_first_of(',') != -1) {
+ 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;
+ }
+
+ //get names of sequences in groupfile
+ vector<string> seqNames = groupMap->getNamesSeqs();
+
+ map<string, string>::iterator itMatch;
+
+ openOutputFile(outputMisMatchName, outMisMatch);
+
+ //loop through names in seqNames and if they aren't in namesIn list output them
+ for (int i = 0; i < seqNames.size(); i++) {
+
+ itMatch = namesInList.find(seqNames[i]);
+
+ if (itMatch == namesInList.end()) {
+
+ outMisMatch << seqNames[i] << endl;
+ }
+ }
+ outMisMatch.close();
+ }
+
+ }
+ catch(exception& e) {
+ errorOut(e, "SharedCommand", "createMisMatchFile");