![]() |
OpenMS
|
Rescore OpenSWATH OSW / OSWPQ peak groups and transitions with the in-process OpenMS Percolator implementation.
OpenSwathPercolatorScoring operates directly on existing OpenSWATH result containers:
.osw).oswpq)One or more scoring levels can be requested sequentially via level:
ms1 rescoring writes SCORE_MS1 or score_ms1_* ms2 rescoring writes SCORE_MS2 or score_ms2_* ms1ms2 combines MS2 and MS1 features and writes SCORE_MS2 or score_ms2_* transition rescoring writes SCORE_TRANSITION or score_transition_* Rows with missing active VAR_* features are excluded from rescoring rather than being imputed to zero. Peak-group q-values and PEPs are estimated from the top-ranked target/decoy peak groups and then propagated back onto all scored candidates, mirroring PyProphet's OpenSWATH scoring semantics.
If out is empty, the input is updated in place. Otherwise the input is first copied to out and all requested rescoring passes are applied there.
Transition rescoring requires prior precursor-level scores in the same file. Starting from an unscored result, run either -level ms2 transition or -level ms1ms2 transition in one invocation.
The command line parameters of this tool are:
OpenSwathPercolatorScoring -- Rescore OpenSWATH OSW / OSWPQ results with in-process Percolator.
Full documentation: http://www.openms.de/doxygen/nightly/html/TOPP_OpenSwathPercolatorScoring.html
Version: 3.7.0-pre-nightly-2026-11-05 Nov 6 2026, 01:20:00, Revision: 5e974cd
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:
OpenSwathPercolatorScoring <options>
Options (mandatory options marked with '*'):
-in <file>* Input OpenSWATH result file (.osw) or OSWPQ parquet archive
/directory (.oswpq). (valid formats: 'osw', 'oswpq')
-out <file> Optional output path. If empty, the input is updated in
place. (valid formats: 'osw', 'oswpq')
-level <levels> One or more scoring levels to run sequentially. Use 'ms2
transition' or 'ms1ms2 transition' to derive peak-group
and transition scores from an unscored input. (default:
'[ms1ms2]') (valid: 'ms1', 'ms2', 'ms1ms2', 'transition')
-training_main_score <text> Peak-group score that selects the best peak group of each
precursor for the Percolator training set of ms1, ms2 and
ms1ms2 rescoring (prefix '-' if lower values are better).
The training set holds these peak groups plus all peak grou
ps of precursors drawn at random, up to percolator:subset_m
ax_train further peak groups (0: train on all peak groups);
the model then scores all peak groups. If the score is
not among the features, all peak groups are used. (default:
'var_xcorr_shape')
transition:
-transition:peakgroup_max_rank <number> Transition scoring: maximum MS2 peak-group rank retained
for transition rescoring. (default: '1') (min: '1')
-transition:peakgroup_max_pep <value> Transition scoring: maximum MS2 peak-group PEP retained
for transition rescoring. (default: '0.7') (min: '0.0' max:
'1.0')
-transition:max_isotope_overlap <value> Transition scoring: maximum transition isotope-overlap scor
e retained for rescoring. (default: '0.5') (min: '0.0')
-transition:min_log_sn <value> Transition scoring: minimum log signal-to-noise score retai
ned for rescoring. (default: '0.0')
percolator:
-percolator:c_pos <value> Positive regularization constant (C+). (default: '0.1')
(min: '0.0')
-percolator:c_neg <value> Negative regularization constant (C-). 0 = auto-select.
(default: '0.0') (min: '0.0')
-percolator:test_fdr <value> Test FDR threshold for SVM direction selection. (default:
'0.01') (min: '0.0' max: '1.0')
-percolator:train_fdr <value> Training FDR for SVM iterations. (default: '0.01') (min:
'0.0' max: '1.0')
-percolator:num_iterations <number> Number of SVM training iterations. (default: '10') (min:
'1')
-percolator:initial_direction <text> Feature name to use as the initial scoring direction. Prefi
x with '-' if LOWER values are more target-like (e.g. 'COME
T:lnExpect' means higher is better; '-COMET:lnExpect' means
lower is better). Leave empty (default) to let Percolator
auto-select by testing every feature in both directions
and picking the one that separates the most targets at trai
n_fdr.
-percolator:pep_method <choice> Posterior error probability estimator: 'logistic_regression
' (target-decoy competition + isotonic fit; legacy name,
not actually logistic regression), 'isotonic' (target-q
→ pep monotone regression), or 'nonparametric' (kernel
smoothing). (default: 'logistic_regression') (valid: 'logis
tic_regression', 'isotonic', 'nonparametric')
-percolator:seed <number> Random seed for CV splitting. (default: '1')
-percolator:target_decoy_metavalue <text> Meta-value on PeptideHit indicating target/decoy ('target'/
'decoy'). (default: 'target_decoy')
-percolator:normalizer <choice> Feature normalizer: 'stdv' (zero-mean, unit-stdv, default),
'uni' (min/max), or 'none' (no normalization). (default:
'stdv') (valid: 'stdv', 'uni', 'none')
-percolator:train_best_positive <choice> During TRAINING, use only the best-scoring target PSM per
spectrum (file and ScanNr; with cv_group_keys: per group)
as a positive example, if it passes train_fdr. Affects the
SVM (weights change). Orthogonal to post_processing_tdc.
Default is 'true' because typical OpenMS inputs are multi-h
it-per-spectrum (Comet/MSGF+/Sage top-N, OSW peak groups).
Inert on one-hit-per-spectrum inputs. Note: the upstream
percolator binary defaults this to off — PercolatorAdapte
r preserves the CLI contract by mirroring its flag state
when writing this param. (default: 'true') (valid: 'true',
'false')
-percolator:post_processing_tdc <choice> AFTER training, before PEP/q-value calculation, apply Targe
t-Decoy Competition: keep only the highest-scoring PSM per
(scan, mass, charge) and drop the rest from the score set.
Does NOT touch the SVM — only the score distribution used
for FDR. Default is 'true' because without TDC on multi-hi
t input, q-values count every candidate as an independent
'chance' and drift optimistic. Inert on one-hit-per-spectru
m inputs. Note: the upstream percolator binary defaults
this to off — PercolatorAdapter preserves the CLI contrac
t by mirroring its flag state when writing this param. (def
ault: 'true') (valid: 'true', 'false')
-percolator:nested_xval_bins <number> Number of nested CV bins for grid search of Cpos/Cneg. Upst
ream default for cross validation is 3; 1 disables nested
search. (default: '1') (min: '1')
-percolator:subset_max_train <number> Cap on the training set size (0 = use all). Default 100000
bounds training time on very large inputs (>1M PSMs) at
negligible quality loss. Sampling is reservoir-based, keyed
by (scan, exp_mass) so all PSMs sharing a spectrum travel
together; the trained model is then applied to ALL input
rows via a second scoring pass (matches upstream Caller.cpp
behavior). Inert when the input size is at or below the
cap. Note: upstream percolator binary defaults this to 0
— PercolatorAdapter preserves the CLI contract by passing
its own int option (CLI default 0) through to this param.
(default: '100000') (min: '0')
-percolator:subset_mode <choice> How rescore() trains when subset_max_train caps the trainin
g set. 'in_sample' (default, as the percolator executable's
--subset-max-train): the cross-validation runs on the samp
le, and all rows are scored by the average of the fold mode
ls, so a sampled row is scored by two models that trained
on it. 'out_of_fold': every spectrum (spectrum file, scan)
is assigned to one of the cross-validation folds first; a
seeded random sample of whole spectra of at most subset_max
...
Inert when the input has at most subset_max_train rows.
(default: 'in_sample') (valid: 'in_sample', 'out_of_fold',
'out_of_fold_avg', 'learning_curve')
-percolator:report_as_main_score <choice> Which Percolator output to stamp as the main PeptideHit
score after rescoring. 'none' (default) leaves hit.getScore
() and the PeptideIdentification score_type untouched —
callers who want the original search score preserved (or
who run their own post-processing like PercolatorAdapter)
rely on this. 'q-value' sets main score to the PSM-level
q-value and marks higher_score_better=false. 'pep' sets
main score to the PEP and marks higher_score_better=false.
...
regardless of this setting. (default: 'none') (valid: 'non
e', 'q-value', 'pep', 'svm')
-percolator:num_threads <number> Maximum number of OpenMP threads for cross-validation; neve
r more than the threads the tool may use (-threads). With
the default settings, cross-validation trains 9 models (3
folds x 3 Cneg values) in parallel. Default and range match
upstream. A build without OpenMP tasks (cl.exe) runs the
models of each fold as a nested loop and may use up to two
threads more than this. (default: '3') (min: '1' max: '128'
)
-percolator:use_pi0 <choice> Pi0 correction of q-values and PEPs (mix-max): 'true' (defa
ult here) estimates pi0, as PyProphet does, since a target
precursor never competes with a decoy; 'false': pi0 = 1
(target-decoy FDR); 'auto': Percolator's default, as the
percolator executable (pi0 only without 'post_processing_td
c', for input from separate target and decoy searches).
(default: 'true') (valid: 'auto', 'true', 'false')
-percolator:calc_mass_feature RescorePSMs(): train on the CalcMass column too. 'false'
(default): as the percolator executable, which reads it as
metadata; 'true': the in-process training before OpenMS
#10717.
-percolator:solver <choice> Solver of the SVMs of the cross-validation. 'tron' (default
): the trust region Newton method (TRON) of Percolator,
from 0 in every step. 'newton': the modified finite Newton
method of Keerthi & DeCoste (2005) with the explicit Hessia
n (one pass over the active PSMs per step) and an exact
line search, warm-started from the weights of the step befo
re, with a looser tolerance in all steps but the last; for
a given training set it reaches the same optimum as 'tron'
...
percolator has no such option. (default: 'tron') (valid:
'tron', 'newton', 'lda')
-percolator:algorithm <choice> RescorePSMs(): 'percolator' = Percolator's cross-validated
PSM-level FDR (default); 'reset' = Percolator-RESET (Percol
atorReset): FDR control at the peptide (stem = unmodified
sequence) level, PSM-level q-values heuristic. rescore()
and train()/score() always use Percolator. (default: 'perco
lator') (valid: 'percolator', 'reset')
-percolator:peptide_level Rescore(): also estimate peptide-level q-values and PEPs
as the percolator executable does without -U (its peptide
output): after the target-decoy competition the best PSM
of each peptide and label (RescoreInput::peptide_keys, the
PIN 'Peptide' string between the flanks) is kept and q-valu
es (pi0 = 1 with post_processing_tdc, as the executable)
and PEPs are computed on these peptides (RescoreOutput::pep
tide_q_values, peptide_peps). rescorePSMs() then writes
...
(its own peptide-level q-value) or a scorer.
percolator:reset:
-percolator:reset:salt <text> RESET: salt of the decoy coins (an unsigned 64-bit integer)
. Empty = a fresh random salt per run (recorded in the log
and by ProSE in the search parameters). Never choose the
best of several salts.
-percolator:reset:learner <choice> RESET: 'svm' = linear L2-SVM (default); 'mlp' = ensemble
of small MLPs (experimental). (default: 'svm') (valid: 'svm
', 'mlp')
-percolator:reset:mlp_members <number> RESET learner 'mlp': networks per ensemble. (default: '8')
(min: '1')
-percolator:reset:mlp_hidden <number> RESET learner 'mlp': units of each of the two hidden layers
. (default: '16') (min: '1')
-percolator:reset:mlp_epochs <number> RESET learner 'mlp': training epochs of the first round
(of every round without warm starts). (default: '30') (min:
'1')
-percolator:reset:mlp_warm_epochs <number> RESET learner 'mlp': > 0 = warm starts: the networks contin
ue from the previous round for this many epochs; 0 = traine
d afresh every round. (default: '3') (min: '0')
-percolator:reset:mlp_crossfit <choice> RESET learner 'mlp': score each stem by the networks that
did not train on it (3 folds by a hash of the sequence, as
Percolator's cross-validation); 'false' = one final ensembl
e scores everything, which ranks the training decoys it
learned too low and selects too many positives. (default:
'true') (valid: 'true', 'false')
-percolator:reset:mlp_norm_min_decoys <number> RESET learner 'mlp', cross-fitted: normalize the fold ensem
bles' scores (as Percolator's folds) only if every fold
has at least this many training decoys (0 = always). (defau
lt: '1000') (min: '0')
-percolator:reset:representative <choice> RESET: the PSM that represents a stem: 'model' = after each
round, best score under the new model (default; the FDR
then also assumes that null targets and decoys are exchange
able over their whole PSM collections, including their size
s); 'search' = best search engine score (the paper). (defau
lt: 'model') (valid: 'search', 'model')
-percolator:reset:iterations <number> RESET: training rounds (the paper: 5, which do not converge
on DIA data). (default: '25') (min: '1')
-percolator:reset:audit RESET: feature-symmetry audit before training (per-feature
AUC and KS of training decoys vs low-scoring pseudo-targets
), reported in the log.
-percolator:reset:decoys <choice> RESET: 'single' = one decoy database (default); 'two' =
the two-decoy mode of Percolator-RESET: the PSMs come from
a search against the targets and two decoy databases of
the same construction (the second with accessions starting
with reset:second_decoy_prefix), and the FDR factors change
from 3 and 2 to 2 and 1 (see PercolatorReset). (default:
'single') (valid: 'single', 'two')
-percolator:reset:second_decoy_prefix <text> RESET 'two' decoys: accession prefix of the proteins of
the second decoy database (a decoy hit is of the second
set if all its proteins have this prefix). (default: 'DECOY
_X_')
-percolator:reset:stem_table <text> RESET: if not empty, rescorePSMs() writes every stem (consi
dered or not) to this tab-separated file: stem, representat
ive peptidoform, label, role, considered, search engine
score, RESET score, q-value (peptide level), spectrum refer
ence, charge.
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)
INI file documentation of this tool:
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:
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.