OpenMS
Loading...
Searching...
No Matches
IDPosteriorErrorProbability

Tool to estimate the probability of peptide hits to be incorrectly assigned.

potential predecessor tools → IDPosteriorErrorProbability → potential successor tools
CometAdapter (or other ID engines), PeptideIndexer FalseDiscoveryRate, Epifany
Experimental classes:
This tool has not been tested thoroughly and might behave not as expected!

Posterior error probabilities (PEPs) are estimated separately for each search engine (and charge state, if split_charge is set, and MS run, if split_run is set). The search engine scores are transformed such that higher scores are better (e.g. -log10 of e-values). X! Tandem, Mascot, MyriMatch, OMSSA, MS-GF+, Comet, MSFragger, SpectraST, Sage, SimpleSearchEngine and ProSE have a dedicated score selection. For other search engines, the main score of the identifications is used, unless it is already a probability (e.g. a q-value or PEP).

Target-decoy based estimation (recommended)

If the peptide hits are annotated as target or decoy (e.g. by PeptideIndexer after a search against a concatenated target+decoy database), the decoys are used (parameter fit_algorithm:decoy_handling, default 'auto'): the PEP is estimated non-parametrically from the local ratio of decoy and target top hits (target-decoy competition: each decoy top hit stands in for one incorrect target top hit). The decoy probability as a function of the score is estimated by isotonic regression, so the PEP decreases with the score. The estimate does not assume any shape of the score distributions and only depends on the ordering of the scores (up to the interpolation within and between blocks), so it works for any score type. This also works with very few decoys (or targets): even a single decoy carries information about the number of incorrect targets.

Only top hits (one per spectrum) are used for fitting. Lower-ranked target hits receive the PEP of a target top hit with the same score. Decoys receive the PEP that they would get as targets (label swap), which makes decoys and incorrect targets exchangeable, as target-decoy FDR estimates on the PEPs (e.g. FalseDiscoveryRate, or the protein FDR after protein inference) require. Decoys therefore need to be kept in the data, i.e. run this tool before FalseDiscoveryRate (or use its option to keep decoys). If a spectrum has several identifications (e.g. results of separate target and decoy searches of the same run), only its best top hit is used for fitting. With split_charge, charge states with fewer than fit_algorithm:min_decoys decoys (or without targets, or whose model cannot be fitted, or whose targets do not score better than their decoys) use the target-decoy data of all charge states.

Several runs

By default, all search runs of the input file that stem from the same search engine are modeled together (one PEP curve per search engine), with target-decoy competition per spectrum. Score types must be comparable across the runs (same search engine and settings; e-values are preferable to raw scores). One model for several runs is more accurate than a model per run if the runs are small (e.g. fractions, or runs with few identifications): with few decoys, the PEPs of a run depend strongly on the chance positions of its decoys, and the few incorrect targets that score above the best decoy of their run get low PEPs. With split_run, the PEPs of each MS run are estimated separately, e.g. if the score distributions of the runs differ strongly. An MS run is identified by its spectra file, so separate target and decoy searches of the same spectra file still compete per spectrum (identifications whose spectra file is unknown are grouped by their identification run). With out_plot, the plot files of the MS runs are numbered in the order of the runs in the input ('_run_1', '_run_2', ...).

PSM or peptide level

By default (fit_level 'psm'), the model is fitted to the PSMs. With fit_level 'peptide', it is fitted to the best PSM of each peptide (modified sequence; with split_charge: of each peptide and charge state): for the target-decoy estimate, the best top hit of each peptide after the competition per spectrum, as Percolator and mokapot do at the peptide level. Every PSM gets the PEP of this model at its score, so the best PSM of each peptide carries the PEP of the peptide. Use the peptide level for protein inference that takes the best PSM of each peptide (e.g. Epifany): the best of several PSMs is selected by its score, which PSM-level PEPs do not account for, while the decoys go through the same selection at the peptide level. For PSM-level uses of the PEPs (e.g. filtering PSMs by PEP, or the PEPs of all PSMs of a peptide), use the PSM level. The parameter fit_algorithm:min_decoys counts decoy peptides at the peptide level, and fit_algorithm:min_mixture_scores the peptides (their best scores) for the mixture model.

Mixture models

Without target/decoy information (or with fit_algorithm:decoy_handling 'ignore'), a mixture model is fitted to all scores (or only the top hits, if top_hits_only is set): By default an estimation is performed using the (inverse) Gumbel distribution for incorrectly assigned sequences and a Gaussian distribution for correctly assigned sequences. The probabilities are calculated by using Bayes' law, similar to PeptideProphet. Alternatively, a second Gaussian distribution can be used for incorrectly assigned sequences. Without decoys, the mixture model assumes that the data contain correct assignments: for data with few or no correct assignments, it might assign low PEPs to a few PSMs in the extreme upper tail of the scores. On real data (Comet e-values of a yeast/UPS1 dataset, validated with an entrapment database), the PEPs of the mixture model were about 1.5 times too high in total, and much too high for confident PSMs, while the target-decoy estimate was within a few percent. Use target/decoy information whenever possible. The mixture model needs at least fit_algorithm:min_mixture_scores scores (default 35, as PeptideProphet), also after outlier handling. With split_charge, a charge state with fewer scores, or whose mixture model cannot be fitted, uses the mixture model of all charge states. If there are still too few scores, the tool fails (with ignore_bad_data: the hits get a PEP of 1, the original score is kept as meta value).

Plots

In order to validate the computed probabilities an optional plot output can be generated. There are two parameters for the plot: The scores are plotted in the form of bins. Each bin represents a set of scores in a range of '(highest_score - smallest_score) / number_of_bins' (if all scores have positive values). The midpoint of the bin is the mean of the scores it represents. The parameter 'out_plot' should be used to give the plot a unique name. Two files are created. One with the binned scores and one with all steps of the estimation. If target/decoy information is available, an additional plot will be generated with the score distributions of the target and decoy top hits and the estimated PEPs ('out_plot' must not be empty). The plots are saved as a Gnuplot file. An attempt is made to call Gnuplot, which will create a PDF file containing all steps of the estimation. If this fails, the user has to run Gnuplot manually - or adjust the PATH environment such that Gnuplot can be found and retry.

Note
Currently mzIdentML (mzid) is not directly supported as an input/output format of this tool. Convert mzid files to/from idXML using IDFileConverter if necessary.

The command line parameters of this tool are:

IDPosteriorErrorProbability -- Estimates probabilities for incorrectly assigned peptide sequences and a set 
of search engine scores using target-decoy information or a mixture model.
Full documentation: http://www.openms.de/doxygen/nightly/html/TOPP_IDPosteriorErrorProbability.html
Version: 3.7.0-pre-nightly-2026-11-04 Nov  5 2026, 01:20:03, Revision: f358100
To cite OpenMS:
 + Pfeuffer, J., Bielow, C., Wein, S. et al.. OpenMS 3 enables reproducible analysis of large-scale mass spec
   trometry data. Nat Methods (2024). doi:10.1038/s41592-024-02197-7.

Usage:
  IDPosteriorErrorProbability <options>

This tool has algorithm parameters that are not shown here! Please check the ini file for a detailed descript
ion or use the --helphelp option

Options (mandatory options marked with '*'):
  -in <file>*         Input file  (valid formats: 'idXML')
  -out <file>*        Output file  (valid formats: 'idXML')
  -out_plot <file>    Txt file (if gnuplot is available, a corresponding PDF will be created as well.) (valid
                       formats: 'txt')
  -split_charge       The search engine scores are split by charge if this flag is set. Thus, for each charge
                       state a new model will be computed.
  -split_run          If set, the PEPs of each MS run (spectra file) are estimated separately. By default, 
                      one model is fitted to all runs of the input file (per search engine).
  -fit_level <level>  Fit the model to the PSMs ('psm'), or to the best PSM of each peptide ('peptide'; for 
                      protein inference that uses the best PSM per peptide, e.g. Epifany). Every PSM gets 
                      the PEP of the model at its score. (default: 'psm') (valid: 'psm', 'peptide')
  -top_hits_only      If set only the top hits of every PeptideIdentification will be used for fitting the 
                      mixture model without target/decoy information. (Target-decoy based estimates always 
                      use the top hits only.)
  -ignore_bad_data    If set errors will be written but ignored. Useful for pipelines with many datasets wher
                      e only a few are bad, but the pipeline should run through.
  -prob_correct       If set scores will be calculated as '1 - ErrorProbabilities' and can be interpreted as 
                      probabilities for correct identifications.
                      
                      
Common TOPP options:
  -ini <file>         Use the given TOPP INI file
  -threads <n>        Sets the number of threads allowed to be used by the TOPP tool (0 = all available cores
                      ) (default: '1')
  -write_ini <file>   Writes the default configuration file
  --help              Shows options
  --helphelp          Shows all options (including advanced)

The following configuration subsections are valid:
 - fit_algorithm   Algorithm parameter subsection

You can write an example INI file using the '-write_ini' option.
Documentation of subsection parameters can be found in the doxygen documentation or the INIFileEditor.
For more information, please consult the online documentation for this tool:
  - http://www.openms.de/doxygen/nightly/html/TOPP_IDPosteriorErrorProbability.html

INI file documentation of this tool:

Legend:
required parameter
advanced parameter

This section lists all parameters supported by the tool. Parameters are organized into hierarchical subsections that group related settings together. Subsections may contain further subsections or individual parameters.

Each parameter entry contains the following information:

  • Name The identifier used in configuration files and on the command line.
  • Default value The value used if the parameter is not explicitly specified.
  • Description A short explanation describing the purpose and behavior of the parameter.
  • Tags Additional metadata associated with the parameter.
  • Restrictions Allowed value ranges for numeric parameters or valid options for string parameters.

Parameter tags provide additional information about how a parameter is used. Some tags indicate whether a parameter is required or intended for advanced configuration, while others may be used internally by OpenMS or workflow tools.

Parameters highlighted as required must be specified for the tool to run successfully. Parameters marked as advanced allow fine-tuning of algorithm behavior and are typically not needed for standard workflows.

+IDPosteriorErrorProbabilityEstimates probabilities for incorrectly assigned peptide sequences and a set of search engine scores using target-decoy information or a mixture model.
version3.7.0-pre-nightly-2026-11-04 Version of the tool that generated this parameters file.
++1Instance '1' section for 'IDPosteriorErrorProbability'
in input file input file*.idXML
out output file output file*.idXML
out_plot txt file (if gnuplot is available, a corresponding PDF will be created as well.)output file*.txt
split_chargefalse The search engine scores are split by charge if this flag is set. Thus, for each charge state a new model will be computed.true, false
split_runfalse If set, the PEPs of each MS run (spectra file) are estimated separately. By default, one model is fitted to all runs of the input file (per search engine).true, false
fit_levelpsm Fit the model to the PSMs ('psm'), or to the best PSM of each peptide ('peptide'; for protein inference that uses the best PSM per peptide, e.g. Epifany). Every PSM gets the PEP of the model at its score.psm, peptide
top_hits_onlyfalse If set only the top hits of every PeptideIdentification will be used for fitting the mixture model without target/decoy information. (Target-decoy based estimates always use the top hits only.)true, false
fdr_for_targets_smaller0.05 Deprecated and ignored. Target and decoy hits are determined by their target/decoy annotation.
ignore_bad_datafalse If set errors will be written but ignored. Useful for pipelines with many datasets where only a few are bad, but the pipeline should run through.true, false
prob_correctfalse If set scores will be calculated as '1 - ErrorProbabilities' and can be interpreted as probabilities for correct identifications.true, false
log Name of log file (created only when specified)
debug0 Sets the debug level
threads1 Sets the number of threads allowed to be used by the TOPP tool (0 = all available cores)
no_progressfalse Disables progress logging to command linetrue, false
forcefalse Overrides tool-specific checkstrue, false
testfalse Enables the test mode (needed for internal use only)true, false
+++fit_algorithmAlgorithm parameter subsection
number_of_bins100 Number of bins used for visualization. Only needed if each iteration step of the EM-Algorithm will be visualized
incorrectly_assignedGumbel Distribution of the scores of incorrectly assigned sequences in the mixture model. For 'Gumbel', the Gumbel distribution is used (fitted by maximum likelihood). For 'Gauss', the Gauss distribution is used.Gumbel, Gauss
max_nr_iterations1000 Bounds the number of iterations for the EM algorithm when convergence is slow.
neg_log_delta6 The negative logarithm of the convergence threshold for the likelihood increase.
outlier_handlingignore_iqr_outliers What to do with outliers (mixture model only):
- ignore_iqr_outliers: ignore outliers outside of 3*IQR from Q1/Q3 for fitting
- set_iqr_to_closest_valid: set IQR-based outliers to the last valid value for fitting
- ignore_extreme_percentiles: ignore everything outside 99.9th and 1st percentile (also removes equal values like potential censored max values in XTandem)
- none: do nothing
ignore_iqr_outliers, set_iqr_to_closest_valid, ignore_extreme_percentiles, none
decoy_handlingauto How target/decoy annotations are used:
- auto: if decoy PSMs are present (even a single one), non-parametric target-decoy estimate from the local ratio of decoys and targets (isotonic regression); its blocks depend only on the order of the scores, i.e. it is suitable for any score type. Without decoys, mixture model of the target scores.
- ignore: ignore the annotations, i.e. targets and decoys are pooled and modeled without supervision (behavior of OpenMS 3.5 and earlier)
The target-decoy estimate assumes a search against a concatenated target+decoy database (target-decoy competition). Only top hits are used for fitting.
auto, ignore
decoy_ratio1.0 Number of decoy sequences per target sequence in the searched database (cf. DecoyDatabase's 'shuffle_decoy_ratio'). Under target-decoy competition, the number of incorrect targets is estimated as the number of decoys divided by this ratio.1.0e-06:∞
min_decoys10 Only used by IDPosteriorErrorProbability with 'split_charge': charge states with fewer decoy PSMs use the target-decoy data of all charge states (1: separate models for all charge states with decoys).1:∞
min_mixture_scores35 Minimum number of (finite) scores to fit the mixture model (used without decoys, or with decoy_handling 'ignore'), before and after outlier handling. With fewer scores, no model is fitted: the scores of so few PSMs without decoys do not determine the two components (PeptideProphet also requires 35 PSMs per model). IDPosteriorErrorProbability with 'split_charge' then uses the mixture model of all charge states.2:∞

For the parameters of the algorithm section see the algorithms documentation:
fit_algorithm