Assessing False Discovery Rate Claims in Proteomics
Overview
Provides scope, calibration and stability diagnostics to assess false discovery rate (FDR) claims in peptide and protein identification workflows based on target-decoy competition and related confidence measures. Includes the recomputed decoy ratio of the reported list, accepted decoy counts and local decoy support, threshold elasticity, posterior error probability (PEP) concordance with the decoys, equal-chance checks and p-value calibration, with an HTML report. If you used this package in your research, please cite the associated preprint doi:10.64898/2026.04.16.718468. Detailed examples of using this package can also be found on the GitHub repository (https://github.com/Jacky11/diagFDR).
Diagnostics
dfdr_ipe(): decoy-reference PEP concordance (internal PEP calibration error, IPE) with the target-decoy comparatorD_b/T_b(mean target PEP per bin, weightsn_b = T_b + D_b, bins with mean target PEP <= 0.5 andn_b >= 200). The headlineIPEuses it;IPE_pooledgives the same summary with the pooled comparatorD_b/(T_b + D_b).dfdr_headline()returns the decoy-support indexsupport_index(D^-1/2) and the FDP-CV benchmarkCV_benchmark(sqrt(2) * D^-1/2).flag_headline(): review alerts, not a verdict. Flag valuesOK,CAUTION*,ALERT_*,NE_*(not evaluable) andNA; statusNO_ALERT,CAUTIONorALERT. IPE alerts above 0.05. The equal-chance flag isNE_two_passon two-pass exports andCAUTION_imbalance_pass_unknownon a DIA-NN list whose pass status was not given.
Show all changes in 0.1.2Hide the rest of the changes in 0.1.2
dfdr_alert_basis(): evidential basis of each alert (derived check, simulation-informed alert, heuristic alert, descriptive).dfdr_p_summary()/dfdr_p_interpretation(): pi0 by the eight cp4p estimators on targets + decoys, targets and decoys, grouped into a converging set (consensus value) and the others; p-value threshold, and score or PEP threshold, giving an estimated FDR of alpha on targets with the consensus pi0 and with pi0 = 1 (Benjamini-Hochberg); comparison with target-decoy counting; pooled targets + decoys check; caveats.dfdr_pep_summary()/dfdr_pep_interpretation(): whether PEPs agree with, under- or overestimate the decoy-derived reference, and the sum of the PEPs of the accepted targets against the number of accepted decoys.
Inputs
as_dfdr_tbl()and the DIA-NN builders taketwo_pass(setTRUEfor--reanalyse/ match-between-runs reports); the DIA-NN builders say once per session when it is not given.dfdr_run_all(compute_pseudo_pvalues = TRUE)warns, and records the reason in the list metadata (p_source), when a list has noscorecolumn (DIA-NN 2.x reports carry noCScore).pseudo_pvalue_score = "pep"uses-PEPas an approximate surrogate score.mokapot_competed_universe(q_mode = c("as_exported", "recount")): mokapot computes q-values over all PSMs it receives;"recount"recomputes(D+1)/Tq-values on the competed winners.- DIA-NN builders keep the largest
scoreof a collapsed unit (higher is better), and the smallest q-value and PEP.
HTML report
- Executive summary with alerts to review, each tagged with its evidential basis; lists without alert shown as "no internal alert"; checks that are not evaluable shown as "n/e".
- Every table is followed by a legend of its columns; small values are shown in scientific notation; formulas are written in HTML (no MathJax needed).
- "What the p-value diagnostics say" and a PEP interpretation, written from the summaries above.
- The recomputed decoy ratio is labelled
D/T; the Jaccard guide treats overlap as descriptive. dfdr_render_report()accepts a relativeout_dirand renders from a temporary copy of the template.- A plot that cannot be built for a list (e.g. too few p-values) is skipped with a warning.
From NEWS.md in the release
Install
Health
- OK13 OK2026-08-05
- NOTE12 OK, 1 NOTE2026-08-01
- OK13 OK2026-06-09
- ERROR12 OK, 1 ERROR2026-06-08
- OK13 OK2026-05-06
Show 2 earlier changesHide 2 earlier changes
- ERROR9 OK, 1 ERROR2026-04-15
- OK5 OK2026-04-14
Documentation
- Help pages
- 85 (27 internal)
- Examples that run
- 98%54 run in a plain check (7 of them under a condition) · 1 only when donttest examples are enabled (R CMD check --as-cran)
- Exported functions with examples
- 95%
- Documented parameters
- 91%
- Return-value docs
- 100%
- Help pages citing references
- 0%
Downloads
Dependencies
Installing diagFDR adds 92 packages (48 with compiled code, 85 MB of source tarballs). Heaviest: stringi 11 MB, ggformula 6.0 MB, ggplot2 6.0 MB. 3 more not on CRAN are not measured.
Code & Tests
People & History
Package metadata
- First published
- 2026-04-13
- Total releases
- 3 / 1 yrs
- License
- GPL-3 OSI
- Minimum R
- ≥ 4.2.0
- Download size
- 327 KB
Cite
Cite this package
Run in R for the authors' preferred citation:
citation("diagFDR")This package has no citation file, so citation() returns this entry built from DESCRIPTION.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-25, which the citation names so these numbers can be found later. More on citing and the projects behind them.