ptr = new PeptideIndexing(); TEST_NOT_EQUAL(ptr, null_ptr) } END_SECTION START_SECTION(virtual ~PeptideIndexing()) { delete ptr; } END_SECTION START_SECTION((ExitCodes run(std::vector<FASTAFile::FASTAEntry>& proteins, std::vector<ProteinIdentification>& prot_ids, std::vector<PeptideIdentification>& pep_ids))) { PeptideIndexing pi; Param p = pi.getParameters(); PeptideIndexing::ExitCodes r; // easy case: std::vector<FASTAFile::FASTAEntry> proteins = toFASTAVec(QStringList() << "*MLT*EAXK"); // 1 X!! ; extra * chars (should be ignored) std::vector<ProteinIdentification> prot_ids; std::vector<PeptideIdentification> pep_ids = toPepVec(QStringList() << "MLTEAEK"); // requires 1 ambAA p.setValue("aaa_max", 0); pi.setParameters(p); r = pi.run(proteins, prot_ids, pep_ids); TEST_EQUAL(pep_ids[0].getHits()[0].extractProteinAccessions().size(), 0); // no hit or one hit! p.setValue("aaa_max", 1); pi.setParameters(p); r = pi.run(proteins, prot_ids, pep_ids); TEST_EQUAL(pep_ids[0].getHits()[0].extractProteinAccessions().size(), 1); // one hit! -- no ambAA's to spare p.setValue("aaa_max", 10);
ExitCodes main_(int, const char**) override { //------------------------------------------------------------- // parsing parameters //------------------------------------------------------------- String in = getStringOption_("in"); String out = getStringOption_("out"); PeptideIndexing indexer; Param param = getParam_().copy("", true); Param param_pi = indexer.getParameters(); param_pi.update(param, false, Log_debug); // suppress param. update message indexer.setParameters(param_pi); indexer.setLogType(this->log_type_); String db_name = getStringOption_("fasta"); if (!File::readable(db_name)) { String full_db_name; try { full_db_name = File::findDatabase(db_name); } catch (...) { printUsage_(); return ILLEGAL_PARAMETERS; } db_name = full_db_name; } //------------------------------------------------------------- // reading input //------------------------------------------------------------- // we stream the Fasta file std::vector<ProteinIdentification> prot_ids; std::vector<PeptideIdentification> pep_ids; IdXMLFile idxmlfile; idxmlfile.setLogType(this->log_type_); idxmlfile.load(in, prot_ids, pep_ids); //------------------------------------------------------------- // calculations //------------------------------------------------------------- FASTAContainer<TFI_File> proteins(db_name); PeptideIndexing::ExitCodes indexer_exit = indexer.run(proteins, prot_ids, pep_ids); //------------------------------------------------------------- // calculate protein coverage //------------------------------------------------------------- if (param.getValue("write_protein_sequence").toBool()) { for (Size i = 0; i < prot_ids.size(); ++i) { prot_ids[i].computeCoverage(pep_ids); } } //------------------------------------------------------------- // writing output //------------------------------------------------------------- idxmlfile.store(out, prot_ids, pep_ids); if (indexer_exit == PeptideIndexing::DATABASE_EMPTY) { return INPUT_FILE_EMPTY; } else if (indexer_exit == PeptideIndexing::UNEXPECTED_RESULT) { return UNEXPECTED_RESULT; } else if ((indexer_exit != PeptideIndexing::EXECUTION_OK) && (indexer_exit != PeptideIndexing::PEPTIDE_IDS_EMPTY)) { return UNKNOWN_ERROR; } return EXECUTION_OK; }
} END_SECTION START_SECTION(virtual ~PeptideIndexing()) { delete ptr; } END_SECTION START_SECTION((ExitCodes run(std::vector<FASTAFile::FASTAEntry>& proteins, std::vector<ProteinIdentification>& prot_ids, std::vector<PeptideIdentification>& pep_ids))) { // regression test: https://github.com/OpenMS/OpenMS/issues/3447 { PeptideIndexing indexer; Param p = indexer.getParameters(); indexer.setParameters(p); std::vector<FASTAFile::FASTAEntry> proteins = toFASTAVec(QStringList() << "AAAKEEEKTTTK"); std::vector<ProteinIdentification> prot_ids; std::vector<PeptideIdentification> pep_ids = toPepVec(QStringList() << "EEEK(Label:13C(6))"); indexer.run(proteins, prot_ids, pep_ids); TEST_EQUAL(pep_ids[0].getHits()[0].extractProteinAccessionsSet().size(), 1); // one exact hit indexer.run(proteins, prot_ids, pep_ids); TEST_EQUAL(pep_ids[0].getHits()[0].extractProteinAccessionsSet().size(), 1); // one exact hit } PeptideIndexing pi; Param p = pi.getParameters(); PeptideIndexing::ExitCodes r; // easy case: