//------------------------------------------------------------------------------ int main(int argc, char **argv) { prgm_opt::variables_map option_map; prgm_opt::options_description options("Options"); try { prgm_opt::arg="[File]"; options.add_options() (CMDOPTIONS::HELP_OPTION,CMDOPTIONS::HELP_TEXT) (CMDOPTIONS::PERCOLATORFILE_OPTION,prgm_opt::value<string>()->required(),CMDOPTIONS::PERCOLATORFILE_TEXT) (CMDOPTIONS::MZIDFILE_OPTION,prgm_opt::value<string>()->required(),CMDOPTIONS::MZIDFILE_TEXT) (CMDOPTIONS::MZIDOUTPUT_OPTION,prgm_opt::value<string>()->required(),CMDOPTIONS::MZIDOUTPUT_TEXT) (CMDOPTIONS::MZIDFILES_OPTION,prgm_opt::value<string>()->required(),CMDOPTIONS::MZIDFILES_TEXT) (CMDOPTIONS::DECOY_OPTION,CMDOPTIONS::DECOY_TEXT) (CMDOPTIONS::VALIDATION_OPTION,CMDOPTIONS::VALIDATION_TEXT) (CMDOPTIONS::WARNING_OPTION,CMDOPTIONS::WARNING_TEXT); prgm_opt::store(prgm_opt::parse_command_line(argc,argv,options),option_map); if (option_map.count(CMDOPTIONS::HELP_TEST)) { printVersion(); cout << options; CleanUp(EXIT_SUCCESS); } if (option_map.count(CMDOPTIONS::DECOY_TEST)) percolator.setDecoy(); if (option_map.count(CMDOPTIONS::VALIDATION_TEST)) { percolator.unsetValidation(); mzid.unsetValidation(); } if (option_map.count(CMDOPTIONS::MZIDOUTPUT_TEST)) mzid.setOutputFileEnding(option_map[CMDOPTIONS::MZIDOUTPUT_TEST].as<string>()); if (option_map.count(CMDOPTIONS::PERCOLATORFILE_TEST)) if (!percolator.setFilename(option_map[CMDOPTIONS::PERCOLATORFILE_TEST].as<string>())) THROW_ERROR_VALUE(PRINT_TEXT::NO_PERCOLATOR_FILE,option_map[CMDOPTIONS::PERCOLATORFILE_TEST].as<string>()); if (option_map.count(CMDOPTIONS::MZIDFILE_TEST)) mzid.setFilename(option_map[CMDOPTIONS::MZIDFILE_TEST].as<string>()); if (option_map.count(CMDOPTIONS::MZIDFILES_TEST)) if (!mzid.addFilenames(option_map[CMDOPTIONS::MZIDFILES_TEST].as<string>())) THROW_ERROR_VALUE(PRINT_TEXT::NO_MZID_FILE,option_map[CMDOPTIONS::MZIDFILES_TEST].as<string>()); if (option_map.count(CMDOPTIONS::WARNING_TEST)) mzid.unsetWarningFlag(); if (!mzid.checkFilenames()) CleanUp(EXIT_FAILURE); if (percolator.noFilename()) THROW_ERROR(PRINT_TEXT::PERCOLATOR_FILE_NOT_ENTERED); xercesc::XMLPlatformUtils::Initialize(); percolator.setFirstMzIDFilename(mzid.getFirstFilename()); if (!percolator.getPoutValues(pout_values)) THROW_ERROR(PRINT_TEXT::CANNOT_LOAD_PERCOLATOR_FILE); if (!mzid.insertMZIDValues(pout_values)) THROW_ERROR(PRINT_TEXT::CANNOT_INSERT); CleanUp(EXIT_SUCCESS); } catch(exception &e) { cerr << e.what() << endl; CleanUp(EXIT_FAILURE); } }
//------------------------------------------------------------------------------ bool MzIDIO::insertMZIDValues(boost::unordered_map<PercolatorOutFeatures, string, PercolatorOutFeatures> &pout_values, vector <string> &filenames, bool multiplemzidfiles) { ifstream fpr; ofstream fpw; ostream *wout; string mzidname,s1,psmid; int i1,vi1,n,xmlindent; n=0; psmid=""; try { for (vi1=0; vi1<filenames.size(); vi1++) { mzidname=boost::lexical_cast<boost::filesystem::path>(filenames[vi1]).stem().string(); if (!multiplemzidfiles) mzidname=""; fpr.open(filenames[vi1].c_str()); if (outputfileending.length()>0) { fpw.open(setOutputFileName(filenames[vi1]).c_str()); wout=&fpw; } else wout=&cout; while (getline(fpr,s1)) { if (s1.find(MZID_PARAM::END_INSERT_TAG)!=string::npos) { if (psmid.length()==0) THROW_ERROR_VALUE(PRINT_TEXT::BAD_XML,filenames[vi1]); for (i1=0; i1<ARRAYSIZE(MZID_PARAM::ELEMENT_DATA::ELEMENTS); i1++) { if (pout_values.find(PercolatorOutFeatures(mzidname,psmid,i1))==pout_values.end()) continue; n++; switch (MZID_PARAM::ELEMENT_DATA::ELEMENTS[i1]) { case MZID_PARAM::CVPARAM: { *wout << boost::format(MZID_PARAM::CVPARAM_TAG) % string(xmlindent,' ') % MZID_PARAM::ELEMENT_DATA::ACCESSIONS[i1] % MZID_PARAM::ELEMENT_DATA::CVREFS[i1] % MZID_PARAM::ELEMENT_DATA::NAMES[i1] % pout_values[PercolatorOutFeatures(mzidname,psmid,i1)]; break; } case MZID_PARAM::USERPARAM: { *wout << boost::format(MZID_PARAM::USERPARAM_TAG) % string(xmlindent,' ') % MZID_PARAM::ELEMENT_DATA::NAMES[i1] % pout_values[PercolatorOutFeatures(mzidname,psmid,i1)]; break; } } pout_values.erase(PercolatorOutFeatures(mzidname,psmid,i1)); } psmid=""; } xmlindent=s1.find_first_not_of(" "); *wout << s1 << endl; if (s1.find(MZID_PARAM::PSMID_TAG)!=string::npos && s1.find(MZID_PARAM::START_INSERT_TAG)!=string::npos) { i1=s1.find(MZID_PARAM::PSMID_TAG)+strlen(MZID_PARAM::PSMID_TAG); psmid=s1.substr(i1,s1.find("\"",i1)-i1); } } fpr.close(); fpw.close(); } clog << boost::format(PRINT_TEXT::INSERTED) % n << endl; for (boost::unordered_map<PercolatorOutFeatures, string, PercolatorOutFeatures>::iterator it=pout_values.begin(); it!=pout_values.end(); it++) cerr << boost::format(PRINT_TEXT::PSM_NOT_ENTERED) % it->first.filename % it->first.psmid << endl; return true; } catch (exception &e) { cerr << e.what() << endl; fpr.close(); fpw.close(); return false; } }