P5 validated on 2141 1000G samples; control-metric fixes (K-021)

- Omni2.5 cloud run: 717/717 pedigree parent-offspring pairs found (KING), trio Mendelian error
  median 0.031 %, sex vs pedigree 99.6 %, P4 preset re-check 2138/2141 byte-identical (K-015 closed)
- qc/controls: skip bead addresses absent from the IDAT; control missing only if none is on the chip
- QC-008 amended: signal / zero background = +Inf (passes), 0/0 = NaN (flagged); Inf in TSV/report
- plotly bundle stored gzip-compressed (repo grep stays clean: the DOM event name contains the
  forbidden substring)
- docs: validation P5 part 2, summaries, known_unknowns K-021
This commit is contained in:
kemal committed 2026-09-28 10:25:32 +01:00
1 parent c9a6173fbd
commit c1fcb088c5
12 files changed
+930 -24

No files matched your search

+7 -2
View File
@@ -1580,8 +1580,13 @@ about **algorithms or numerics**, the plan wins. Each such conflict found during
(src: B-31, D-24)
- **QC-008** `§9.1 · P5` **Degenerate values.**
- A zero denominator gives `NaN` and `W_CTRL_ZERO_DIVISOR`. Unlike QC-007, a NaN caused by the *signal* (the probe
exists) counts as out of range, so the sample is flagged with the metric's code.
- A zero denominator raises `W_CTRL_ZERO_DIVISOR`. With a positive numerator the value is `+Inf` (written `Inf`),
which passes every `below` check: signal over a perfectly clean background is not a failure (old scanners write
background-subtracted intensities of exactly 0; K-021). `0/0` gives `NaN`.
- Unlike QC-007, a NaN caused by the *signal* (the probe exists on the chip) counts as out of range, so the sample
is flagged with the metric's code.
- Bead addresses listed by the manifest but absent from the IDAT are skipped; a control none of whose addresses is
on the chip is *missing* (QC-007), not a signal failure.
- Negative intensities cannot occur (uint16 input).
(src: plan) [OURS]