diagFDR report

diagfdr (Python) {{ version }} · {{ date }} · headline threshold α = {{ params.alpha_main }}

Executive summary

Alerts motivate inspection; they are not pass/fail verdicts. Items 1–4 of the reporting standard are internal checks (specification and consistency with the exported decoys); they cannot show that the decoys behave like incorrect targets — only external evidence (entrapment, known composition) can.

Lists

{% for nm, m in lists.items() %} {% endfor %}
ListUnitScopeq-value sourceExport ceilingTwo-passn rowsn decoysProvenance
{{ nm }}{{ m.unit }}{{ m.scope }}{{ m.q_source }} {{ m.q_max_export if m.q_max_export is not none else "unknown" }}{{ m.two_pass if m.two_pass is not none else "unknown" }} {{ "{:,}".format(m.n) }}{{ "{:,}".format(m.n_decoy) }}{{ m.provenance }}

Headline summary (Table)

{% for r in headline %} {% endfor %}
ListTαDαDecoy ratio D/TDα-1/2FDP-CV benchmark Dα,winIPEπD (low conf.)Status
{{ r.list }}{{ "{:,}".format(r.T_alpha) }}{{ "{:,}".format(r.D_alpha) }} {{ "%.3f%%"|format(100*r.FDR_hat) if r.FDR_hat==r.FDR_hat else "n/a" }} {{ "%.3f"|format(r.support_index) }}{{ "%.3f"|format(r.CV_benchmark) }} {{ r.D_alpha_win if r.D_alpha_win==r.D_alpha_win else "n/a" }} {{ "%.4f"|format(r.IPE) if r.IPE==r.IPE else "n/a" }} {{ "%.3f"|format(r.pi_D_hat) if r.pi_D_hat==r.pi_D_hat else "n/a" }} ({{ r.flag_equalchance }}) {{ r.status }}

Decoy ratio: a consistency check of the exported q-values on the reported list (expected ≤ α by construction), not the realised error. FDP-CV benchmark √2·Dα-1/2: an independence reference for the dispersion of the realised FDP across experiments, neither a confidence interval nor a bound for this list. IPE: decoy-reference PEP concordance error (target mean PEP vs Db/Tb per PEP bin), not a calibration against the truth. πD: decoy fraction among entries with q in [{{ params.low_conf[0] }}, {{ params.low_conf[1] }}]; evaluable only for single-pass paired competition.

{% if sentences %}

Reporting sentences (five-item standard)

{% endif %}

Alert basis

{% for r in basis %}{% endfor %}
FlagDiagnosticThresholdBasis
{{ r.flag }}{{ r.diagnostic }}{{ r.threshold }}{{ r.basis }}

Stability across thresholds

{% for r in stability %} {% endfor %}
ListαTαDαD/TFDP-CV benchmarkDwinElasticity J(α, {{ 1+params.eps }}α)
{{ r.list }}{{ r.alpha }}{{ "{:,}".format(r.T_alpha) }}{{ "{:,}".format(r.D_alpha) }} {{ "%.4f"|format(r.FDR_hat) if r.FDR_hat==r.FDR_hat else "n/a" }}{{ "%.3f"|format(r.CV_benchmark) }} {{ r.D_alpha_win if r.D_alpha_win==r.D_alpha_win else "n/a" }}{{ "%.3f"|format(r.jaccard) if r.jaccard==r.jaccard else "n/a" }}
{% if eq_bands %}

Equal chance by q-value band

{% for r in eq_bands %}{% endfor %}
Listq bandnn decoyDecoy fractionmean q
{{ r.list }}{{ r.qbin }}{{ "{:,}".format(r.n) }}{{ "{:,}".format(r.n_decoy) }} {{ "%.3f"|format(r.decoy_frac) }}{{ "%.4f"|format(r.q_mean) }}
{% endif %} {% if pep_bins %}

PEP concordance by bin (IPE)

{% for r in pep_bins %}{% endfor %}
ListPEP binTbDbmean target PEPDb/Tbused
{{ r.list }}{{ r.bin }}{{ "{:,}".format(r.n_target) }}{{ "{:,}".format(r.n_decoy) }} {{ "%.4f"|format(r.pep_mean_targets) if r.pep_mean_targets==r.pep_mean_targets else "n/a" }}{{ "%.4f"|format(r.e_b) }}{{ r.used }}
{% endif %} {% if entrap %}

External validation (entrapment)

{% for r in entrap %}{% endfor %}
ListαTαEαRaw FDP (lower bound)Wilson 95%rCorrected (upper bound on average)
{{ r.list }}{{ r.alpha }}{{ "{:,}".format(r.T_alpha) }}{{ r.E_alpha }} {{ "%.3f%%"|format(100*r.fdp_raw) }}[{{ "%.3f"|format(100*r.lo) }}, {{ "%.3f"|format(100*r.hi) }}]% {{ "%.3f"|format(r.r) if r.r==r.r else "n/a" }}{{ "%.3f%%"|format(100*r.fdp_corrected) if r.fdp_corrected==r.fdp_corrected else "n/a" }}

Wilson intervals are descriptive and ignore clustering of errors within protein groups; the corrected value assumes the entrapment proteome is a valid model of incorrect matches and uses the size correction of Wen et al. (2025).

{% endif %}

Parameters

{{ params }}

Reference: Chion M, Godmer A, Douché T, Matondo M, Giai Gianetto Q (2026). diagFDR: Assessing False Discovery Rate Claims in Proteomics with Scope, Calibration and Stability Diagnostics. bioRxiv 10.64898/2026.04.16.718468. R package: https://cran.r-project.org/package=diagFDR