![]() |
OpenMS
|
#include <OpenMS/CONCEPT/Types.h>#include <OpenMS/DATASTRUCTURES/TypeAliases.h>#include <cstdint>#include <optional>#include <string>#include <vector>Go to the source code of this file.
Classes | |
| class | PercolatorReset |
| Percolator-RESET: semi-supervised rescoring with FDR control at the peptide (stem) level. More... | |
| struct | PercolatorReset::Input |
| Rows: one per PSM (all hits of all spectra), in any order. More... | |
| struct | PercolatorReset::Options |
| struct | PercolatorReset::Stem |
| One considered or dropped stem. More... | |
| struct | PercolatorReset::AuditFeature |
| struct | PercolatorReset::Output |
Namespaces | |
| namespace | OpenMS |
| Main OpenMS namespace. | |
| struct OpenMS::PercolatorReset::Options |
| Class Members | ||
|---|---|---|
| bool | audit = false |
run the feature-symmetry audit |
| vector< double > | c_values = {0.1, 1.0, 10.0} | grid for C+ and C- (all pairs) |
| int | decoy_databases = 1 | decoy databases searched: 1 (default) or 2 (two-decoy mode, see the class description; needs Input::decoy_set) |
| int | iterations = 25 | training rounds (5 in the paper; they do not converge on DIA data) |
| string | learner = "svm" |
"svm" (linear) or "mlp" (small MLP ensemble, experimental) |
| bool | mlp_crossfit = true |
MLP cross-fitting: the stems (folds fixed by a hash of salt and sequence) are scored by the ensemble of the chosen C pair that did not train on their fold, in every round and at the end (no final fit); otherwise one final ensemble trained on all training stems scores everything, which ranks the training decoys it trained on too low |
| int | mlp_epochs = 30 |
MLP training epochs (the first round, or every round without warm starts) |
| int | mlp_hidden = 16 | MLP hidden units (two hidden layers) |
| int | mlp_members = 8 | MLP ensemble size. |
| int | mlp_norm_min_decoys = 1000 |
MLP cross-fitting: the fold ensembles' scores are normalized (as Percolator's folds: the fold's score at train_fdr against its training decoys -> 0, its median training decoy -> -1) only if every fold has at least this many training decoys (0 = always) |
| int | mlp_warm_epochs = 3 |
MLP warm starts: > 0 = the networks of each cross-validation task and of the final model continue from the previous round for this many epochs (a stem keeps its fold over the rounds); 0 = trained afresh every round |
| string | representative = "model" |
"model" (default): after each round a stem is represented by its PSM with the best score under the new model; "search": by its PSM with the best search engine score (the paper). With "model" masking holds, but the FDR also needs null targets and decoys to be exchangeable over their whole PSM collections, including their sizes (a null target with many more PSMs than a decoy gains from the maximum); entrapment validation decides. |
| optional< uint64_t > | salt | coin salt (never pick the best of several salts); unset = a fresh random salt, recorded in Output::salt |
| int | threads = 1 | threads for the cross-validation solves |
| double | train_fdr = 0.01 | FDR for the positive set and for the cross-validation counts. |
| vector< string > | zero_features = {"enzInt"} | features set to 0 (target-biased, as in the paper) |
| struct OpenMS::PercolatorReset::Stem |
One considered or dropped stem.
| Class Members | ||
|---|---|---|
| bool | considered = false | ranked (always true: PSM-only protocol; kept for the stem table format) |
| bool | decoy = false |
label of the search-score representative; fixed (masking) even if representative "model" later picks a PSM of the other label |
| double | q_value = 1.0 | RESET q-value (1 for training decoys and stems not considered) |
| Size | representative = 0 | row of the stem's best PSM (by search engine score) |
| Role | role = Role::TARGET | |
| double | score = 0.0 | final model score of the representative |
| double | search_score = 0.0 | search engine score of the representative |
| string | stem | unmodified sequence |
| struct OpenMS::PercolatorReset::AuditFeature |
| struct OpenMS::PercolatorReset::Output |
| Class Members | ||
|---|---|---|
| vector< AuditFeature > | audit | |
| Size | audit_decoys = 0 | |
| bool | audit_flagged = false | |
| double | audit_multivariate_auc = 0.5 | |
| Size | audit_proxy = 0 |
audit group sizes (training decoys, null proxy) |
| double | audit_proxy_ratio = 0.0 | null-proxy stems per training decoy in the audit (about 3 if all null) |
| Size | decoy_stems = 0 | |
| Size | decoy_stems_both_sets = 0 | |
| Size | decoy_stems_second_set = 0 |
two-decoy mode: considered decoy stems whose representative is a decoy of the second set (about half of decoy_stems if the two sets are exchangeable), and those whose representative is in both sets (Input::decoy_set 3; should be rare: a decoy sequence shared by the sets is one decoy, not two, for its spectra) |
| Size | discoveries_1pct = 0 | target stems with q <= 0.01 |
| Size | estimating_decoys = 0 | |
| string | learner | |
| string | learner_settings | learner "mlp": its settings (for reports); empty for "svm" |
| vector< double > | psm_peps |
per row, heuristic PSM-level posterior error probability: f p / (1 - p) (at most 1; f = 2, or 1 in two-decoy mode, where shared decoy stems count twice), with p the estimating-decoy fraction of the ranked PSMs by isotonic (antitonic in score) regression. 1 where q is 1 by definition (other hits, training decoys). |
| vector< double > | psm_q_values |
per row, heuristic PSM-level q-value: per spectrum, the hit with the best search engine score is the PSM (the competition that selects the stems' PSMs, so a stem's representative is always reported); PSMs of training-decoy sequences (decoy rows whose sequence's coin is "training") are dropped, and the remaining PSMs (targets, estimating decoys) get q = min over lower ranks of 2 (D_est + 1) / max(T, 1) (two-decoy mode: (D_est + 1) / max(T, 1); with shared decoy stems, as the final ranking, (sum of the decoy weights + 2) / max(T, 1)). 1 for the other hits and for training decoys. Not FDR-controlled (multiplicity of PSMs per peptide). |
| vector< Role > | roles | per row: role of the row's stem |
| vector< string > | rounds | training summary per round: chosen C+, C-, held-out discoveries, positives |
| uint64_t | salt = 0 | the effective salt and the learner (for reports) |
| vector< double > | scores | per row: score of the final model (all rows, also those that lost a competition) |
| vector< double > | stem_q_values | per row: q-value of the row's stem (Stem::q_value) |
| vector< Stem > | stems | all stems (considered or not) |
| Size | target_stems = 0 | |
| Size | training_decoys = 0 | |
| vector< string > | used_features | features the learner used (non-constant, not zeroed) |
| vector< double > | weights | linear learner: raw-feature weights of the final model, bias last |