31#include <unordered_map>
32#include <unordered_set>
40class TheoreticalSpectrumGenerator;
65 static constexpr const char* CHIMERIC_RANK =
"chimeric_rank";
69 static constexpr double MIN_DECOYS_PER_TARGET = 0.5;
71 static constexpr double MAX_DECOYS_PER_TARGET = 2.0;
97 Size charge_out_of_range_spectra = 0;
101 bool fdr_applied =
false;
102 double achieved_psm_fdr = -1.0;
107 bool score_stats_valid =
false;
108 double hyperscore_min = 0.0;
109 double hyperscore_median = 0.0;
110 double hyperscore_max = 0.0;
115 bool prec_tol_valid =
false;
116 double prec_err_median = 0.0, prec_err_mad = 0.0, prec_err_recommended = 0.0;
119 bool frag_tol_valid =
false;
120 double frag_err_median = 0.0, frag_err_mad = 0.0, frag_err_recommended = 0.0;
121 double seconds_search = 0.0;
122 double seconds_calibration = 0.0;
123 double seconds_fdr = 0.0;
138 double precursor_tol_lower = 0.0, precursor_tol_upper = 0.0;
140 double fragment_tol = 0.0;
142 Int min_charge = 0, max_charge = 0;
144 std::vector<std::string>
fixed_mods, variable_mods, ion_series;
145 bool open_search =
false;
146 bool calibration_enabled =
false;
147 bool peptide_mass_mode =
false;
148 bool chunked =
false;
150 double psm_fdr_threshold = 0.0, protein_fdr_threshold = 0.0;
155 double seconds_index_build = 0.0;
156 double seconds_total = 0.0;
157 double seconds_output = 0.0;
158 double seconds_qpx_extended = 0.0;
169 bool applied =
false;
186 int subset_max_train = 0;
187 std::string subset_mode =
"out_of_fold";
188 int curve_start = 100000;
189 double curve_min_gain = 0.002;
191 double tron_epsilon = 1e-7;
192 bool warm_start =
false;
193 bool single_cneg =
false;
194 std::string solver =
"newton";
195 std::string use_pi0 =
"true";
196 bool calc_mass_feature =
false;
197 bool fixed_enzyme_termini =
false;
198 bool peptide_level =
true;
240 bool is_open_search =
false;
304 bool decoy_is_prefix =
true;
306 bool have_decoys =
false;
320 bool protein_fdr_applied =
false;
333 std::vector<FASTAFile::FASTAEntry>
db;
345 bool release_fragment_index_after_scoring =
false;
353 bool decoy_is_prefix =
true;
356 bool have_decoys =
false;
361 bool electron_ions =
false;
386 const std::string& in_db,
387 std::vector<ProteinIdentification>& prot_ids,
442 const std::string& decoy_string,
443 bool decoy_is_prefix,
466 static std::string
inferProteins(std::vector<ProteinIdentification>& protein_ids,
550 Size max_train_psms = 0);
667 const std::string& in_db,
668 const std::string& output_base_name =
"")
const;
688 const std::vector<FASTAFile::FASTAEntry>& fasta_db,
689 std::vector<ProteinIdentification>& prot_ids,
751 std::vector<ProteinIdentification>& prot_ids,
765 const std::vector<FASTAFile::FASTAEntry>& fasta_db,
766 const std::string& output_base_name =
"")
const;
819 const std::vector<std::string>& in_spectra_files,
820 const std::vector<FASTAFile::FASTAEntry>& fasta_db,
821 const std::vector<std::string>& output_base_names = {},
822 const std::string& aggregate_base_name =
"",
823 bool build_pooled_aggregate =
true)
const;
839 const std::vector<std::string>& in_spectra_files,
840 const std::string& in_db,
841 const std::vector<std::string>& output_base_names = {},
842 const std::string& aggregate_base_name =
"",
843 bool build_pooled_aggregate =
true)
const;
898 bool remove_decoys =
true)
const;
933 keep_pre_fdr_psms_ = keep;
959 file_result_consumer_ = std::move(consumer);
975 double delta_mass = 0.0;
976 float prefix_fraction = 0;
977 float suffix_fraction = 0;
978 float mean_error = 0.0f;
979 int isotope_error = 0;
980 uint16_t applied_charge = 0;
981 uint16_t matched_prefix_ions = 0;
982 uint16_t matched_suffix_ions = 0;
1016 double second_best = 0.0;
1022 int scoring_thread = 0;
1027 if (score > best) { second_best = best; best = score; }
1028 else if (score > second_best) { second_best = score; }
1030 sumsq += score * score;
1071 unsigned int min_peaks{3};
1072 bool charge_cap_precursor{
false};
1073 bool sum_intensity{
false};
1091 double fragment_mass_tolerance,
1092 bool fragment_mass_tolerance_unit_ppm,
1093 bool deisotope_requested,
1095 Int peaks_window_top,
1096 const std::string& window_type,
1099 bool ion_evidence_scored_peaks =
false,
1100 PeakMap* evidence_spectra =
nullptr,
1101 PeakMap* query_spectra =
nullptr);
1105 double fragment_mass_tolerance,
1106 bool fragment_mass_tolerance_unit_ppm,
1107 bool deisotope_requested,
1109 Int peaks_window_top,
1110 const std::string& window_type =
"auto");
1140 std::vector<ProteinIdentification>& protein_ids,
1166 bool generate{
false};
1167 bool strip_existing{
false};
1168 bool have_decoys{
false};
1170 bool is_prefix{
true};
1172 bool strip_is_prefix{
true};
1184 const std::vector<FASTAFile::FASTAEntry>& db)
const;
1202 struct SpectrumGenerators_;
1210 double chance_match_surprise = 0.0;
1211 double mass_competition_evidence = 0.0;
1237 const std::vector<double>& densities,
1238 double tolerance,
bool ppm);
1245 const std::vector<double>& densities,
1246 double tolerance,
bool ppm,
1247 std::vector<double>& alternatives);
1252 const std::vector<Int>& charges,
1254 const std::vector<double>& densities,
1255 double tolerance,
bool ppm,
1256 std::vector<double>& alternatives);
1272 const std::vector<FASTAFile::FASTAEntry>& fasta_db,
1277 std::vector<FASTAFile::FASTAEntry>&& fasta_db,
1284 const std::vector<std::string>& in_spectra_files,
1285 const std::vector<FASTAFile::FASTAEntry>& fasta_db_given,
1286 const std::string* in_db,
1287 const std::vector<std::string>& output_base_names,
1288 const std::string& aggregate_base_name,
1289 bool build_pooled_aggregate)
const;
1297 const std::function<
const PeakMap*(
Size)>& searched_spectra = {})
const;
1348 const std::vector<std::vector<AnnotatedHit_>>& annotated_hits,
1350 const std::vector<FASTAFile::FASTAEntry>& db,
1351 const SpectrumGenerators_& generators,
1352 double fragment_tol,
1353 bool fragment_tol_ppm,
1354 bool open_search_mode,
1355 std::vector<CoIsolatedPSM_>& psms,
1356 std::vector<std::vector<AnnotatedHit_>>& hits,
1357 std::vector<CandidatePoolStats_>& pool_stats)
const;
1377 const std::vector<FASTAFile::FASTAEntry>& full_db)
const;
1394 std::vector<FASTAFile::FASTAEntry>& full_db,
1396 std::vector<ProteinIdentification>& protein_ids,
1426 const std::vector<FASTAFile::FASTAEntry>& db,
1427 const SpectrumGenerators_& generators,
1428 double effective_fragment_tol,
1429 bool fragment_mass_tolerance_unit_ppm,
1430 bool open_search_mode,
1431 std::vector<std::vector<AnnotatedHit_>>& annotated_hits,
1432 std::vector<CandidatePoolStats_>& pool_stats,
1433 const std::string& progress_label,
1434 const PeakMap* query_spectra =
nullptr)
const;
1478 std::vector<std::vector<ProSEAlgorithm::AnnotatedHit_> >& annotated_hits,
1479 const std::vector<CandidatePoolStats_>& pool_stats,
1480 std::vector<ProteinIdentification>& protein_ids,
1485 Int peptide_missed_cleavages,
1486 double precursor_mass_tolerance,
1487 double fragment_mass_tolerance,
1488 const std::string& precursor_mass_tolerance_unit_ppm,
1489 const std::string& fragment_mass_tolerance_unit_ppm,
1490 const Int precursor_min_charge,
1491 const Int precursor_max_charge,
1492 const std::string& enzyme,
1493 const std::string& database_name,
1494 const PeakMap* evidence_spectra =
nullptr,
1495 const std::vector<Size>* evidence_parent =
nullptr,
1496 bool defer_peak_annotations =
false)
const;
1503 double fragment_mass_tolerance,
const std::string& fragment_mass_tolerance_unit_ppm)
const;
1513 std::vector<ProteinIdentification>& protein_ids,
1516 bool peptdeep_enable_{
false};
1519 std::string peptdeep_instrument_{
"QE"};
1520 double peptdeep_nce_{-1.0};
1521 std::string peptdeep_rt_model_type_{
"b_spline"};
1522 int peptdeep_batch_size_{500};
1527 mutable double precursor_mass_tolerance_lower_{10.0};
1528 mutable double precursor_mass_tolerance_upper_{10.0};
1529 std::string precursor_mass_tolerance_unit_{
"ppm"};
1542 bool deisotope_requested_{
true};
1543 bool scoring_multiple_charges_{
false};
1544 int scoring_max_charge_{2};
1545 bool mass_accuracy_score_{
false};
1546 double mass_error_sd_ppm_{7.0};
1551 return scoring_multiple_charges_ ? std::max(1, std::min(precursor_charge - 1, scoring_max_charge_)) : 1;
1555 std::string peaks_window_type_ {
"auto"};
1557 bool query_raw_spectrum_{
false};
1569 bool decoy_keep_termini_ =
false;
1570 bool decoy_parity_report_ =
false;
1574 mutable bool terminal_features_ =
false;
1575 mutable bool stratum_q_values_ =
false;
1576 mutable bool nterm_options_disabled_ =
false;
1578 bool rescore_{
true};
1582 std::string reuse_mode_{
"per_file"};
1585 double reuse_max_shift_{0.5};
1587 double fdr_psm_{0.0};
1588 bool fdr_psm_by_scored_charges_{
true};
1589 double fdr_protein_{0.0};
1590 double fdr_protein_inference_psm_{0.1};
1594 bool self_trained_ion_priors_{
false};
1596 bool ion_prior_scored_peaks_{
false};
1597 int ion_prior_max_fragment_charge_{2};
1598 double ion_prior_train_fdr_{0.01};
1600 bool ion_prior_feature_llr_{
true};
1601 bool ion_prior_feature_explained_{
true};
1602 bool ion_prior_feature_topk_{
false};
1616 return rescore_top_hits_ > 0 ? rescore_top_hits_ : report_top_hits_;
1623 if (!rescore_ || decoy_mode_ == DecoyMode_::IGNORE)
return report_top_hits_;
1624 return keep_pre_fdr_psms_ ? std::max(report_top_hits_, rescoreTopHits_()) : rescoreTopHits_();
1628 bool isotope_error_observed_minus_theoretical_{
true};
1630 bool add_a_ions_{
false};
1631 bool add_b_ions_{
true};
1632 bool add_c_ions_{
false};
1633 bool add_x_ions_{
false};
1634 bool add_y_ions_{
true};
1635 bool add_z_ions_{
false};
1636 bool add_zp1_ions_{
false};
1637 bool ions_by_activation_{
true};
1638 bool protein_mapping_from_index_{
true};
1642 bool calibration_enabled_{
false};
1643 double calibration_subset_ratio_{0.1};
1644 bool chimeric_enabled_{
false};
1646 double calibration_sigma_factor_{4.0};
1647 double calibration_precursor_sigma_factor_{0.0};
1648 double calibration_min_precursor_tol_{0.0};
1649 double calibration_min_fragment_tol_{0.0};
1660 double precursor_shift{0};
1661 double precursor_sigma{0};
1662 double precursor_spread{0};
1663 double cal_lower{0};
1664 double cal_upper{0};
1665 double fragment_tolerance{0};
1666 double fragment_shift{0};
1667 double fragment_sigma{0};
1668 double precursor_coverage{0};
1669 double fragment_coverage{0};
1672 bool extreme_bias{
false};
1673 bool success{
false};
1691 bool keep_pre_fdr_psms_ =
false;
1695 std::string
paramName_(
const std::string& name)
const {
return parameter_name_prefix_ + name; }
1698 mutable bool pool_rescoring_ =
false;
1724 struct ReuseScoring_;
1742 std::vector<std::vector<PeptideHit>>* dropped,
1745 const ReuseScoring_* reuse =
nullptr);
1749 std::shared_ptr<const ReuseModel_>
trainReuseModel_(
const std::vector<ReuseRun_>& runs,
int threads)
const;
1757 const ReuseModel_& model,
1760 std::vector<std::vector<PeptideHit>>* dropped)
const;
1780 mutable bool reuse_defer_ =
false;
1782 mutable Size reuse_file_index_ = 0;
1794 mutable double last_mod_match_tolerance_used_{-1.0};
1808 if (precursor_mass_tolerance_lower_ <= 0.0)
return precursor_mass_tolerance_upper_;
1809 if (precursor_mass_tolerance_upper_ <= 0.0)
return precursor_mass_tolerance_lower_;
1810 return std::min(precursor_mass_tolerance_lower_, precursor_mass_tolerance_upper_);
1828 const std::vector<FASTAFile::FASTAEntry>& db,
1829 const PeakMap* query_spectra =
nullptr)
const;
1857 std::vector<std::unordered_map<std::string_view, Size>>
entries;
1864 if (entries.empty())
return sequences.size();
1865 const auto& table = entries[std::hash<std::string_view>{}(sequence) % SHARDS];
1866 const auto entry = table.find(sequence);
1867 return entry == table.end() ? sequences.size() : entry->second;
1881 const std::vector<FASTAFile::FASTAEntry>& db,
1882 std::vector<UInt32> candidates,
1883 const Param& indexer_parameters);
1894 const std::vector<FASTAFile::FASTAEntry>& db,
1895 const Param& indexer_parameters,
1896 std::vector<ProteinIdentification>& protein_ids,
1898 std::string& fallback_reason);
1903 const std::string& marker,
bool is_prefix);
1914 static constexpr const char* SEARCH_ENGINE_SCORE =
"ln(hyperscore)";
1988 const ReuseScoring_* reuse =
nullptr);
2031 const std::vector<ProteinIdentification>& protein_ids,
2067 const std::string& enzyme,
2089 bool is_open_search,
2105 const std::vector<std::pair<std::string, std::vector<std::string>>>& manifest,
2114 return FragmentIndex::isOpenSearchMode(precursor_mass_tolerance_lower_,
2115 precursor_mass_tolerance_upper_,
2116 precursor_mass_tolerance_unit_ ==
"ppm");
Definition AASequence.h:96
A base class for all classes handling default parameters.
Definition DefaultParamHandler.h:66
Specificity
when querying for valid digestion products, this determines if the specificity of the two peptide end...
Definition EnzymaticDigestion.h:43
Generates from a set of Fasta files a 2D-datastructure which stores all theoretical masses of all b a...
Definition FragmentIndex.h:36
Compact peak lists of the spectra of one run: per peak only its m/z and its intensity-rank bin.
Definition FragmentIonLikelihoodModel.h:82
ContextSet
Ion contexts and outcomes the model distinguishes.
Definition FragmentIonLikelihoodModel.h:60
In-Memory representation of a mass spectrometry run.
Definition MSExperiment.h:49
The representation of a 1D spectrum.
Definition MSSpectrum.h:44
Combined result of open search modification analysis.
Definition OpenSearchModificationAnalysis.h:106
Management and storage of parameters / INI files.
Definition Param.h:46
Container for peptide identifications from multiple spectra.
Definition PeptideIdentificationList.h:66
Represents the set of candidates (SpectrumMatches) identified for a single precursor spectrum.
Definition PeptideIdentification.h:66
In-process Percolator: semi-supervised target/decoy rescoring with q-values + PEPs.
Definition Percolator.h:80
Precursor meta information.
Definition Precursor.h:37
Fragment-index-based peptide database search algorithm (experimental).
Definition ProSEAlgorithm.h:59
ExitCodes search(PeakMap &spectra, const std::vector< FASTAFile::FASTAEntry > &fasta_db, std::vector< ProteinIdentification > &prot_ids, PeptideIdentificationList &pep_ids) const
In-memory search: search spectra against a protein database without file I/O.
static LocalFragmentEvidence_ localFragmentEvidence_(const MSSpectrum &spectrum, const MSSpectrum &theoretical, const std::vector< double > &densities, double tolerance, bool ppm)
Compute local fragment-match evidence on the spectrum before window/top-N peak filtering.
static Size countDecoyEntries_(const std::vector< FASTAFile::FASTAEntry > &db, const std::string &marker, bool is_prefix)
Helper: the entries of db whose accession carries the decoy marker (accessionHasDecoyMarker_())
std::string enzyme_
Definition ProSEAlgorithm.h:1565
static std::string renderRunSummaryYaml(const MultiFileSearchResult &mfres, const std::vector< std::pair< std::string, std::vector< std::string > > > &manifest, Size files_failed, Size files_total)
static MSSpectrum residualSpectrum_(const MSSpectrum &spectrum, const std::vector< UInt32 > &removed, const Precursor &precursor)
Size searchTopHits_() const
Definition ProSEAlgorithm.h:1621
static std::string pinFeatureEnzyme(const std::string &enzyme, bool fixed_enzyme_termini)
The enzyme argument of PercolatorInfile (store(), the in-process rescoring) for the enzN/enzC/enzInt ...
static void preprocessSpectra_(PeakMap &exp, double fragment_mass_tolerance, bool fragment_mass_tolerance_unit_ppm, bool deisotope_requested, Size peaks_keep_n, Int peaks_window_top, const std::string &window_type, const DeisotopingSettings_ &deisotoping, FragmentIonLikelihoodModel::PeakLists *ion_evidence=nullptr, bool ion_evidence_scored_peaks=false, PeakMap *evidence_spectra=nullptr, PeakMap *query_spectra=nullptr)
filter, deisotope, decharge spectra
PercolatorRescoring last_percolator_
Definition ProSEAlgorithm.h:1690
static std::string inferProteins(std::vector< ProteinIdentification > &protein_ids, const PeptideIdentificationList &peptide_ids, const PeptideIdentificationList &inference_only_psms=PeptideIdentificationList())
The protein inference of the protein FDR (applyCompleteSetProteinFDR()) and of mergeFileResults().
const std::vector< ProteinIdentification > * protein_ids
Definition ProSEAlgorithm.h:1731
FragmentIndex fragment_index
Definition ProSEAlgorithm.h:334
std::string fragment_tol_unit
Definition ProSEAlgorithm.h:141
Size peptide_max_size_
Definition ProSEAlgorithm.h:1605
static void updateFinalStats(RunStatistics &stats, const PeptideIdentificationList &peptide_ids, const std::string &enzyme, bool fdr_applied)
PercolatorRescoring percolator
Outcome of the Percolator rescoring of this run (parameter 'rescore')
Definition ProSEAlgorithm.h:243
static void preprocessSpectra_(PeakMap &exp, double fragment_mass_tolerance, bool fragment_mass_tolerance_unit_ppm, bool deisotope_requested, Size peaks_keep_n, Int peaks_window_top, const std::string &window_type="auto")
preprocessSpectra_() with the DeisotopingSettings_ defaults (the behaviour before its parameters exis...
SearchResult searchWithModificationAnalysis(const std::string &in_spectra, const std::string &in_db, const std::string &output_base_name="") const
Search with comprehensive results including modification analysis tables.
Size precursor_max_charge_
Definition ProSEAlgorithm.h:1532
bool applyDeferredPsmFDR(const std::vector< ProteinIdentification > &protein_ids, PeptideIdentificationList &peptide_ids, bool rescored, double psm_fdr, PeptideIdentificationList *inference_only_psms=nullptr) const
Apply the PSM-level FDR to PSMs that were rescored separately, e.g. with rescoreWithPercolator() on t...
PeptideIdentificationList * peptide_ids
Definition ProSEAlgorithm.h:1732
Size precursor_min_charge_
Definition ProSEAlgorithm.h:1531
std::string decoy_prefix_
Definition ProSEAlgorithm.h:1568
static void markRescoredByPercolator_(std::vector< ProteinIdentification > &protein_ids, const Param &pp, const PercolatorTraining &training, const Percolator *perc=nullptr, const ReuseScoring_ *reuse=nullptr)
RunStatistics stats
Definition ProSEAlgorithm.h:241
PercolatorRescoring applyPsmFDR_(std::vector< ProteinIdentification > &protein_ids, PeptideIdentificationList &peptide_ids, bool has_decoys, RunStatistics &stats, PeptideIdentificationList *pre_fdr_psms=nullptr, PeptideIdentificationList *inference_only_psms=nullptr) const
void setParameterNamePrefix(const std::string &prefix)
Definition ProSEAlgorithm.h:926
Size report_top_hits_
Definition ProSEAlgorithm.h:1610
Size modifications_max_variable_mods_per_peptide_
Definition ProSEAlgorithm.h:1563
static PercolatorRescoring rescoreWithPercolator(std::vector< ProteinIdentification > &protein_ids, PeptideIdentificationList &peptide_ids, int threads, Size max_train_psms=0)
Rescore the PSMs of one search run in-process with Percolator, as the parameter 'rescore' does in eve...
static void renderModificationSummary(const OpenSearchModificationAnalysis::OpenSearchAnalysisResult &mod_analysis, std::ostream &os)
std::string warning
Definition ProSEAlgorithm.h:174
static std::vector< Size > transferSample_(const PeptideIdentificationList &ids, Size max_psms, Size hits_per_spectrum)
The spectra (positions in ids) of a seeded random sample of whole spectra with at most max_psms PSMs,...
SearchResult searchWithModificationAnalysis(PeakMap &spectra, const std::vector< FASTAFile::FASTAEntry > &fasta_db, const std::string &output_base_name="") const
In-memory search with modification analysis: no file I/O required.
void setKeepPreFdrPsms(bool keep)
Definition ProSEAlgorithm.h:931
std::string model
Definition ProSEAlgorithm.h:177
Precursor precursor
the co-isolated precursor: that of the spectrum with its m/z and charge
Definition ProSEAlgorithm.h:1319
void annotateFragmentPeaks_(const PeakMap &exp, PeptideIdentificationList &peptide_ids, double fragment_mass_tolerance, const std::string &fragment_mass_tolerance_unit_ppm) const
The fragment annotations that postProcessHits_() leaves out with defer_peak_annotations,...
void searchCoIsolated_(const PeakMap &spectra, const std::vector< std::vector< AnnotatedHit_ > > &annotated_hits, FragmentIndex &fi, const std::vector< FASTAFile::FASTAEntry > &db, const SpectrumGenerators_ &generators, double fragment_tol, bool fragment_tol_ppm, bool open_search_mode, std::vector< CoIsolatedPSM_ > &psms, std::vector< std::vector< AnnotatedHit_ > > &hits, std::vector< CandidatePoolStats_ > &pool_stats) const
Search the precursors co-isolated with the selected one in what the spectrum's other PSMs leave of it...
std::string input_file
spectrum file this run searched (basename or path)
Definition ProSEAlgorithm.h:94
SearchContext prepareContext_(std::vector< FASTAFile::FASTAEntry > &&fasta_db, bool electron_ions, const std::function< const PeakMap *(Size)> &searched_spectra={}) const
PeptideIdentificationList pre_fdr_peptide_ids
Definition ProSEAlgorithm.h:244
PercolatorRescoring rescoreWithReuseModel_(std::vector< ProteinIdentification > &protein_ids, PeptideIdentificationList &peptide_ids, Size file_index, const ReuseModel_ &model, bool check_shift, int threads, std::vector< std::vector< PeptideHit > > *dropped) const
std::map< Int, Size > charge_histogram
precursor charge -> PSM count
Definition ProSEAlgorithm.h:105
static void releaseInParallel(SearchResult &result)
SpectrumGenerators_ spectrumGenerators_() const
Generators for scoring, annotation and calibration, configured from the ions:* parameters.
StringList modifications_fixed_
Definition ProSEAlgorithm.h:1559
void setFileResultConsumer(FileResultConsumer consumer)
Lets the multi-file searchWithModificationAnalysis() overloads hand each file's result to consumer as...
Definition ProSEAlgorithm.h:957
MultiFileSearchResult searchWithModificationAnalysis(const std::vector< std::string > &in_spectra_files, const std::vector< FASTAFile::FASTAEntry > &fasta_db, const std::vector< std::string > &output_base_names={}, const std::string &aggregate_base_name="", bool build_pooled_aggregate=true) const
Multi-file search with modification analysis (in-memory FASTA).
std::string parameter_name_prefix_
Definition ProSEAlgorithm.h:1693
Param percolator_extra_
rescore_method 'reset': Percolator's RESET parameters (empty: Percolator)
Definition ProSEAlgorithm.h:1580
static void stratumQValues(PeptideIdentificationList &peptide_ids)
rescoring:stratum_q_values: grouped target-decoy competition on the best hit of every spectrum that h...
static void splitMergedPsms(MergedResult &merged, MultiFileSearchResult &result)
Makes the PSMs of each file of a multi-file search its part of the pooled result (mergeFileResults())...
static void capturePreFdrStats_(const PeptideIdentificationList &peptide_ids, RunStatistics &stats)
void annotateIonPriors_(const PeakMap &spectra, const FragmentIonLikelihoodModel::PeakLists &evidence, std::vector< ProteinIdentification > &protein_ids, PeptideIdentificationList &peptide_ids) const
Learn per-run fragment ion likelihoods from confident PSMs and annotate every hit with them.
PercolatorTraining percolator_training_
rescoring:...: options of Percolator's training
Definition ProSEAlgorithm.h:1579
void annotatePsmQValues(PeptideIdentificationList &peptide_ids) const
Annotate PSM q-values by target-decoy competition of the best hit of each spectrum,...
static bool hasPSMs_(const PeptideIdentificationList &ids)
Helper: whether a PSM of ids has a hit.
Size transferQuota_() const
std::vector< UInt32 > removed
the peaks of the spectrum that its residual spectrum leaves out (ascending)
Definition ProSEAlgorithm.h:1320
static int searchedFileOf_(const PeptideIdentification &id, const std::vector< SearchResult > &per_file)
std::vector< ProteinIdentification > protein_ids
Definition ProSEAlgorithm.h:237
bool restrictIndexToSpectra_() const
Definition ProSEAlgorithm.h:1302
bool chimericSearch_() const
Definition ProSEAlgorithm.h:1313
Size peptide_min_size_
Definition ProSEAlgorithm.h:1604
SpectraCounts_ countSpectra_(const PeakMap &spectra) const
Helper: the SpectraCounts_ of spectra.
std::vector< FASTAFile::FASTAEntry > buildDecoyAugmentedDB_(const std::vector< FASTAFile::FASTAEntry > &fasta_db, const DecoyStrategy_ &strategy) const
Build the searched database according to strategy.
static bool applyCompleteSetProteinFDR(std::vector< ProteinIdentification > &protein_ids, PeptideIdentificationList &peptide_ids, const std::string &decoy_string, bool decoy_is_prefix, double protein_fdr, bool remove_decoys, const PeptideIdentificationList &inference_only_psms)
Finalize protein-level FDR on a COMPLETE protein set (a single input file, or a merged cross-file agg...
MergedResult mergeFileResults(MultiFileSearchResult &result, const StringList &in_spectra_files, bool remove_decoys=true) const
Pools result (moving its PSMs out), infers proteins across files, applies FDR:protein of this instanc...
SearchResult aggregate
Definition ProSEAlgorithm.h:297
MultiFileSearchResult searchWithModificationAnalysis(const std::vector< std::string > &in_spectra_files, const std::string &in_db, const std::vector< std::string > &output_base_names={}, const std::string &aggregate_base_name="", bool build_pooled_aggregate=true) const
Multi-file search with modification analysis (FASTA file path).
void annotatePeptDeepFeatures_(const PeakMap &spectra, std::vector< ProteinIdentification > &protein_ids, PeptideIdentificationList &peptide_ids) const
Adds PeptDeep-prediction-derived rescoring features to the PSMs.
std::string reset_run_name_
spectra file of the run being rescored (names its RESET stem table)
Definition ProSEAlgorithm.h:1581
std::string database_file
FASTA path (empty for in-memory db)
Definition ProSEAlgorithm.h:136
static AASequence reversedNoiseSequence_(const AASequence &sequence)
Reversed sequence keeping the C-terminal residue and every residue's modification: the noise hypothes...
CalibrationResult_ runCalibrationPass_(PeakMap &spectra, FragmentIndex &fragment_index, const std::vector< FASTAFile::FASTAEntry > &db, const PeakMap *query_spectra=nullptr) const
Run a fast calibration pass on a subset of spectra to estimate mass accuracy.
std::vector< FASTAFile::FASTAEntry > buildDecoyAugmentedDB_(std::vector< FASTAFile::FASTAEntry > &&fasta_db, const DecoyStrategy_ &strategy) const
As above, but takes the entries of fasta_db over instead of copying them.
std::string strip_string
marker of pre-existing decoys to strip
Definition ProSEAlgorithm.h:1171
std::map< Size, Size > missed_cleavage_histogram
missed cleavages -> PSM count
Definition ProSEAlgorithm.h:106
static ProteinMapping_ buildProteinMapping_(const FragmentIndex &index, const std::vector< FASTAFile::FASTAEntry > &db, std::vector< UInt32 > candidates, const Param &indexer_parameters)
Collects the protein occurrences of the sequences of the index peptides candidates.
RunStatistics last_run_stats_
Definition ProSEAlgorithm.h:1686
std::string fragment_mass_tolerance_unit_
Definition ProSEAlgorithm.h:1536
static bool applyProteinMapping_(const ProteinMapping_ &mapping, const std::vector< FASTAFile::FASTAEntry > &db, const Param &indexer_parameters, std::vector< ProteinIdentification > &protein_ids, PeptideIdentificationList &peptide_ids, std::string &fallback_reason)
Writes what PeptideIndexing::run(db, protein_ids, peptide_ids) with indexer_parameters writes: the ev...
StringList annotate_psm_
Definition ProSEAlgorithm.h:1592
static void removeUnreportedProteins(std::vector< ProteinIdentification > &protein_ids, const PeptideIdentificationList &peptide_ids, const PeptideIdentificationList &also_referencing=PeptideIdentificationList())
Removes the proteins that no PSM references, and them from the protein groups.
static void filterLocalPeaks_(MSSpectrum &spectrum, Size peaks_per_window)
Keep the strongest peaks in each non-overlapping 100 Da window, including a short final window.
void applyRescoredPsmFDR_(std::vector< ProteinIdentification > &protein_ids, PeptideIdentificationList &peptide_ids, bool has_decoys, RunStatistics &stats, bool rescored, PeptideIdentificationList *inference_only_psms) const
Param fragmentIndexParameters_(bool electron_ions=false) const
ProSE parameters made safe to hand to a FragmentIndex.
static PeakMap loadSpectra(const std::string &filename, const std::function< bool(const MSSpectrum &)> &keep={})
The MS2 spectra of a spectrum file as the searches of this class read them.
OpenSearchModificationAnalysis::OpenSearchAnalysisResult modification_analysis
Definition ProSEAlgorithm.h:239
ExitCodes search(const std::string &in_spectra, const std::string &in_db, std::vector< ProteinIdentification > &prot_ids, PeptideIdentificationList &pep_ids) const
Search spectra in a spectrum file (mzML or Bruker .d) against a protein database using an FI-backed w...
std::vector< FASTAFile::FASTAEntry > db
Definition ProSEAlgorithm.h:333
static std::string renderTotalTime(const SharedSearchStats &sh)
The total time of a run, by part: "total <s>s | search of the file(s) <s>s | outputs <s>s (of ...
static bool accessionHasDecoyMarker_(const std::string &accession, const std::string &marker, bool is_prefix)
void finishDeferredRescoring_(MultiFileSearchResult &mfres, const std::vector< Size > &deferred) const
static void renderRunSummary(const RunStatistics &stats, const SharedSearchStats &shared, const OpenSearchModificationAnalysis::OpenSearchAnalysisResult &mod_analysis, bool is_open_search, std::ostream &os)
ExitCodes search(PeakMap &spectra, SearchContext &ctx, std::vector< ProteinIdentification > &prot_ids, PeptideIdentificationList &pep_ids) const
In-memory search using a pre-built SearchContext.
MultiFileSearchResult searchWithModificationAnalysis_(const std::vector< std::string > &in_spectra_files, const std::vector< FASTAFile::FASTAEntry > &fasta_db_given, const std::string *in_db, const std::vector< std::string > &output_base_names, const std::string &aggregate_base_name, bool build_pooled_aggregate) const
std::shared_ptr< void > released_hits_
Definition ProSEAlgorithm.h:1721
SharedSearchStats shared
Definition ProSEAlgorithm.h:310
bool isOpenSearchMode_() const
Helper function to determine if open search should be used based on tolerance.
Definition ProSEAlgorithm.h:2112
ExitCodes searchChunked_(PeakMap &spectra, std::vector< FASTAFile::FASTAEntry > &full_db, const DecoyStrategy_ &strategy, std::vector< ProteinIdentification > &protein_ids, PeptideIdentificationList &peptide_ids) const
Chunked database search implementation.
void postProcessHits_(const PeakMap &exp, std::vector< std::vector< ProSEAlgorithm::AnnotatedHit_ > > &annotated_hits, const std::vector< CandidatePoolStats_ > &pool_stats, std::vector< ProteinIdentification > &protein_ids, PeptideIdentificationList &peptide_ids, Size top_hits, const StringList &modifications_fixed, const StringList &modifications_variable, Int peptide_missed_cleavages, double precursor_mass_tolerance, double fragment_mass_tolerance, const std::string &precursor_mass_tolerance_unit_ppm, const std::string &fragment_mass_tolerance_unit_ppm, const Int precursor_min_charge, const Int precursor_max_charge, const std::string &enzyme, const std::string &database_name, const PeakMap *evidence_spectra=nullptr, const std::vector< Size > *evidence_parent=nullptr, bool defer_peak_annotations=false) const
Filter and annotate search results.
static double calibrationPassWindow_(double configured, bool ppm)
The window the calibration pass searches with, from the configured one (ppm or Da)
Size rescoreTopHits_() const
The hits per spectrum that Percolator rescores: rescoring:top_hits, or report:top_hits if that is 0.
Definition ProSEAlgorithm.h:1614
PeptideIdentificationList inference_only_peptide_ids
Definition ProSEAlgorithm.h:250
void collectInferenceOnlyPsms_(const PeptideIdentificationList &peptide_ids, double psm_fdr, PeptideIdentificationList &inference_only_psms) const
std::string decoy_string
Definition ProSEAlgorithm.h:302
DecoyStrategy_ resolveDecoyStrategy_(const std::vector< FASTAFile::FASTAEntry > &db) const
Decide how to obtain/recognise decoys for db.
Size countElectronActivated_(const PeakMap &spectra) const
Number of spectra that ions:by_activation also scores with c and z+1 ions (0 if it is off)
DeisotopingSettings_ deisotoping_
MS2 deisotoping rule (fragment:deisotope_*)
Definition ProSEAlgorithm.h:1556
std::vector< FASTAFile::FASTAEntry > buildCalibrationSample_(const std::vector< FASTAFile::FASTAEntry > &full_db) const
Build a strided protein sample for chunked calibration.
static std::vector< double > localPeakDensities_(const MSSpectrum &spectrum)
Peak counts per Da in a fixed +/-50 m/z window around each peak of a sorted spectrum.
void scoreSpectraAgainstIndex_(const PeakMap &spectra, FragmentIndex &fi, const std::vector< FASTAFile::FASTAEntry > &db, const SpectrumGenerators_ &generators, double effective_fragment_tol, bool fragment_mass_tolerance_unit_ppm, bool open_search_mode, std::vector< std::vector< AnnotatedHit_ > > &annotated_hits, std::vector< CandidatePoolStats_ > &pool_stats, const std::string &progress_label, const PeakMap *query_spectra=nullptr) const
Score all spectra against one FragmentIndex.
static void returnPooledPsms_(PeptideIdentificationList &pooled, std::vector< SearchResult > &per_file)
static bool isElectronActivated_(const MSSpectrum &spectrum)
True if the precursor of spectrum was activated by electrons (ETD, ECD, EThcD or ETciD)
bool keepPreRescoringPsms_() const
Whether a search keeps the PSMs of each file before the rescoring (SearchResult::pre_fdr_peptide_ids)
Definition ProSEAlgorithm.h:1700
std::string paramName_(const std::string &name) const
Helper: name as the user sets the parameter (setParameterNamePrefix()), for messages.
Definition ProSEAlgorithm.h:1695
std::string decoy_mode
"generated" | "external" | "none (target-only)"
Definition ProSEAlgorithm.h:149
std::function< void(Size, const SearchResult &)> FileResultConsumer
The consumer of the files' results (setFileResultConsumer()): file index, result. Must only read the ...
Definition ProSEAlgorithm.h:938
Size file_index
Definition ProSEAlgorithm.h:1730
PeptideIdentificationList peptide_ids
Definition ProSEAlgorithm.h:238
std::string enzyme
Definition ProSEAlgorithm.h:137
static LocalFragmentEvidence_ localFragmentEvidence_(const MSSpectrum &spectrum, const MSSpectrum &theoretical, int max_charge, const std::vector< double > &densities, double tolerance, bool ppm, std::vector< double > &alternatives)
static bool reuseCalibrationDraw(UInt64 seed, Size file, Size spectrum, double fraction)
static std::string pinEnzymeName(const std::string &enzyme)
The name of enzyme as PercolatorInfile computes the enzN/enzC/enzInt features of a ....
std::string skipped_reason
Why the PSMs were not rescored, as a sentence to show to the user (empty if applied or not attempted)
Definition ProSEAlgorithm.h:171
void updateMembers_() override
This method is used to update extra member variables at the end of the setParameters() method.
static void tdcQValues_(PeptideIdentificationList &peptide_ids, bool plus_one=false)
ExitCodes
Exit codes.
Definition ProSEAlgorithm.h:75
std::shared_ptr< const ReuseModel_ > reuse_model_
rescore_reuse: the models of a multi-file search ('static': trained on its first files; null otherwis...
Definition ProSEAlgorithm.h:1778
void rescoreFilesTogether_(MultiFileSearchResult &mfres, const std::vector< std::string > &in_spectra_files) const
The end of a multi-file search with 'rescore' (with pool_rescoring_), for the files with PSMs that Pe...
StringList modifications_variable_
Definition ProSEAlgorithm.h:1561
static double maxRetainedScore_(const PeptideIdentificationList &peptide_ids)
PeptideIdentificationList pre_fdr_peptide_ids_
Definition ProSEAlgorithm.h:1717
std::vector< SearchResult > per_file
Definition ProSEAlgorithm.h:296
double fragment_mass_tolerance_
Definition ProSEAlgorithm.h:1534
std::shared_ptr< const ReuseModel_ > trainReuseModel_(const std::vector< ReuseRun_ > &runs, int threads) const
PeptideIdentificationList inference_only_peptide_ids_
Definition ProSEAlgorithm.h:1785
SearchContext prepareContext(const std::vector< FASTAFile::FASTAEntry > &fasta_db) const
Build a SearchContext (decoy-augmented database + FragmentIndex) for reuse.
static std::vector< SignedSize > scoringOrder_(const PeakMap &spectra, const PeakMap *query_spectra)
The order in which scoreSpectraAgainstIndex_() scores the spectra: the scan indices sorted by the neu...
static Size removeDuplicateProteins(std::vector< FASTAFile::FASTAEntry > &db, const std::string &source)
Removes the repeated entries of a protein database, which searching would report twice (e....
int scoringMaxCharge_(int precursor_charge) const
Fragment charges that score a candidate of the given precursor charge; also used by the calibration p...
Definition ProSEAlgorithm.h:1549
static void removeProteinsReferencedByNeither_(std::vector< ProteinIdentification > &protein_ids, const PeptideIdentificationList &peptide_ids, const PeptideIdentificationList &also_referencing)
SearchContext prepareContext(const std::vector< FASTAFile::FASTAEntry > &fasta_db, bool electron_ions) const
Build a SearchContext whose FragmentIndex also holds c and z+1 ions.
void reportDecoyParity_(const SearchContext &ctx) const
static PercolatorRescoring rescoreWithPercolator_(std::vector< ProteinIdentification > &protein_ids, PeptideIdentificationList &peptide_ids, int threads, std::vector< std::vector< PeptideHit > > *dropped, const PercolatorTraining &training, const Param &extra, const ReuseScoring_ *reuse=nullptr)
Size peptide_missed_cleavages_
Definition ProSEAlgorithm.h:1606
CalibrationResult_ last_calibration_result_
Definition ProSEAlgorithm.h:1679
double computeModMatchTolerance_() const
Definition ProSEAlgorithm.h:1806
static LocalFragmentEvidence_ localFragmentEvidence_(const MSSpectrum &spectrum, const MSSpectrum &theoretical, const std::vector< Int > &charges, int max_charge, const std::vector< double > &densities, double tolerance, bool ppm, std::vector< double > &alternatives)
localFragmentEvidence_() with the charges of the peaks of theoretical given (charges,...
static void poolSearchedFiles_(std::vector< SearchResult > &per_file, bool move_psms, const StringList &in_spectra_files, std::vector< ProteinIdentification > &protein_ids, PeptideIdentificationList &peptide_ids)
FileResultConsumer file_result_consumer_
see setFileResultConsumer()
Definition ProSEAlgorithm.h:1692
void collectRunStatistics_(const PeakMap &spectra, const std::vector< ProteinIdentification > &protein_ids, const PeptideIdentificationList &peptide_ids, RunStatistics &stats) const
std::vector< std::string > fixed_mods
Definition ProSEAlgorithm.h:144
void buildFragmentIndex_(SearchContext &ctx, const Param ¶ms, const std::function< const PeakMap *(Size)> &searched_spectra) const
static bool useSearchEngineScore_(PeptideIdentificationList &ids)
static bool reuseTrainingDraw(UInt64 seed, Size file, Size spectrum, double fraction)
rescore_reuse: whether spectrum spectrum (its index in the run) of file file is drawn for the trainin...
std::string peptdeep_ms2_model_
Definition ProSEAlgorithm.h:1517
static void keepTopHits_(PeptideIdentificationList &peptide_ids, Size n)
static bool searched_(const SearchResult &pf)
Helper: whether the file of pf was searched (exit code EXECUTION_OK, with a run)
std::string precursor_tol_unit
Definition ProSEAlgorithm.h:139
DecoyMode_
How decoys are obtained/recognised for a search (parameter "decoys").
Definition ProSEAlgorithm.h:1151
std::string peptdeep_rt_model_
Definition ProSEAlgorithm.h:1518
void preprocessSearchedSpectra_(PeakMap &spectra, const std::string &input, FragmentIonLikelihoodModel::PeakLists &ion_evidence, PeakMap *evidence_spectra, PeakMap *query_spectra) const
Result of a calibration pass.
Definition ProSEAlgorithm.h:1659
The PSM of a precursor co-isolated with the selected one (chimeric:enabled), until its residual spect...
Definition ProSEAlgorithm.h:1317
Resolved decoy handling for one concrete input database.
Definition ProSEAlgorithm.h:1165
MS2 deisotoping rule of preprocessSpectra_().
Definition ProSEAlgorithm.h:1070
Local fragment evidence of one candidate (annotate:local_fragment_evidence).
Definition ProSEAlgorithm.h:1209
The pooled evaluation of a multi-file search (the ProSE tool's -out_merged).
Definition ProSEAlgorithm.h:315
Multi-file search result bundle.
Definition ProSEAlgorithm.h:295
Outcome of the Percolator rescoring of one search run (see rescoreWithPercolator() and the parameter ...
Definition ProSEAlgorithm.h:167
Options of Percolator's training for the rescoring (the parameters 'rescoring:...'; the defaults are ...
Definition ProSEAlgorithm.h:185
rescore_reuse: a run that trains models: its index in the search (the random halves depend on it) and...
Definition ProSEAlgorithm.h:1729
Per-run identification statistics for the end-of-search report.
Definition ProSEAlgorithm.h:93
Prepared per-database state shared across multiple spectrum files.
Definition ProSEAlgorithm.h:332
Comprehensive search result including modification analysis.
Definition ProSEAlgorithm.h:235
Configuration, database and fragment-index facts shared across all input files of one ProSE invocatio...
Definition ProSEAlgorithm.h:135
Definition ProSEAlgorithm.h:2038
Base class for all classes that want to report their progress.
Definition ProgressLogger.h:28
int Int
Signed integer type.
Definition Types.h:72
uint32_t UInt32
Unsigned integer type (32bit)
Definition Types.h:33
uint64_t UInt64
Unsigned integer type (64bit)
Definition Types.h:47
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition Types.h:97
std::vector< std::string > StringList
Vector of String.
Definition TypeAliases.h:39
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
Slimmer structure as storing all scored candidates in PeptideHit objects takes too much space.
Definition ProSEAlgorithm.h:967
static bool hasBetterScore(const AnnotatedHit_ &a, const AnnotatedHit_ &b)
Definition ProSEAlgorithm.h:985
double score
main score
Definition ProSEAlgorithm.h:974
AASequence sequence
Definition ProSEAlgorithm.h:968
Running summary of the complete candidate pool of one spectrum.
Definition ProSEAlgorithm.h:1012
std::unordered_set< std::string > seen_candidates
Definition ProSEAlgorithm.h:1020
void add(double score)
Fold one freshly scored candidate into the summary.
Definition ProSEAlgorithm.h:1025
double deltaScore() const
Best minus runner-up over the full pool.
Definition ProSEAlgorithm.h:1035
double zScore() const
How much of an outlier the best score is within its own candidate pool.
The protein occurrences of the sequences of a search's hits (peptide:protein_mapping = index).
Definition ProSEAlgorithm.h:1849
std::vector< std::string_view > sequences
The unmodified hit sequences (views into the database), one entry each.
Definition ProSEAlgorithm.h:1853
std::string fallback_reason
Why PeptideIndexing has to run instead; empty if the mapping applies.
Definition ProSEAlgorithm.h:1859
Size find(std::string_view sequence) const
The entry of sequence, or sequences.size() if there is none.
Definition ProSEAlgorithm.h:1862
std::vector< std::vector< std::pair< UInt32, UInt32 > > > occurrences
Per entry: its occurrences {protein index, position}, ascending (PeptideIndexing's evidence order)
Definition ProSEAlgorithm.h:1855
std::vector< std::unordered_map< std::string_view, Size > > entries
Sequence -> entry, in SHARDS hash tables.
Definition ProSEAlgorithm.h:1857