+//**********************************************************************************************************************
+
+int GetSeqsCommand::compareAccnos(){
+ try {
+
+ string thisOutputDir = outputDir;
+ if (outputDir == "") { thisOutputDir += m->hasPath(accnosfile); }
+ string outputFileName = thisOutputDir + m->getRootName(m->getSimpleName(accnosfile)) + "accnos.report";
+ ofstream out;
+ m->openOutputFile(outputFileName, out);
+
+ ifstream in;
+ m->openInputFile(accnosfile2, in);
+ string name;
+
+ set<string> namesAccnos2;
+ set<string> namesDups;
+ set<string> namesAccnos = names;
+
+ map<string, int> nameCount;
+
+ if (namefile != "") {
+ ifstream inName;
+ m->openInputFile(namefile, inName);
+
+
+ while(!inName.eof()){
+
+ if (m->control_pressed) { inName.close(); return 0; }
+
+ string thisname, repnames;
+
+ inName >> thisname; m->gobble(inName); //read from first column
+ inName >> repnames; //read from second column
+
+ int num = m->getNumNames(repnames);
+ nameCount[thisname] = num;
+
+ m->gobble(inName);
+ }
+ inName.close();
+ }
+
+ while(!in.eof()){
+ in >> name;
+
+ if (namesAccnos.count(name) == 0){ //name unique to accnos2
+ namesAccnos2.insert(name);
+ }else { //you are in both so erase
+ namesAccnos.erase(name);
+ namesDups.insert(name);
+ }
+
+ m->gobble(in);
+ }
+ in.close();
+
+ out << "Names in both files : " + toString(namesDups.size()) << endl;
+ m->mothurOut("Names in both files : " + toString(namesDups.size())); m->mothurOutEndLine();
+
+ for (set<string>::iterator it = namesDups.begin(); it != namesDups.end(); it++) {
+ out << (*it);
+ if (namefile != "") { out << '\t' << nameCount[(*it)]; }
+ out << endl;
+ }
+
+ out << "Names unique to " + accnosfile + " : " + toString(namesAccnos.size()) << endl;
+ m->mothurOut("Names unique to " + accnosfile + " : " + toString(namesAccnos.size())); m->mothurOutEndLine();
+
+ for (set<string>::iterator it = namesAccnos.begin(); it != namesAccnos.end(); it++) {
+ out << (*it);
+ if (namefile != "") { out << '\t' << nameCount[(*it)]; }
+ out << endl;
+ }
+
+ out << "Names unique to " + accnosfile2 + " : " + toString(namesAccnos2.size()) << endl;
+ m->mothurOut("Names unique to " + accnosfile2 + " : " + toString(namesAccnos2.size())); m->mothurOutEndLine();
+
+ for (set<string>::iterator it = namesAccnos2.begin(); it != namesAccnos2.end(); it++) {
+ out << (*it);
+ if (namefile != "") { out << '\t' << nameCount[(*it)]; }
+ out << endl;
+ }
+
+ out.close();
+
+ outputNames.push_back(outputFileName); outputTypes["accnosreport"].push_back(outputFileName);
+
+ return 0;
+
+ }
+ catch(exception& e) {
+ m->errorOut(e, "GetSeqsCommand", "readAccnos");
+ exit(1);
+ }
+}
+