P5a: QC — control metrics, thresholds, status, contamination, relatedness, locus summary

- qc/controls: canonical control names (QC-002), bkg/offset (QC-003), 13 genotyping metrics (QC-004/005),
  missing/zero-divisor handling (QC-007/008); controls_raw.tsv / controls_qc.tsv (QC-009/011) incl. compat CSVs
- qc/thresholds + profiles: YAML schema, validation codes, precedence, shipped profiles, auto (QC-020..025)
- qc/status: functional PASS/FAIL/NA, control CLEAR/FLAGGED, flags (QC-030..033)
- qc/contamination: BAF regression; bit-compatible with gtc2vcf BAFregress (36/36, K-017), exact mode too
- qc/relatedness: KING-robust, duplicates, Mendelian errors, pedigree from sheet (IN-018)
- qc/locus_summary: OUT-072, bit-identical to BeadArrayFiles except ChiTest (K-018)
- qc/suggest: suggest-thresholds (QC-026)
- pipeline/qc: disk-backed cohort store; CLI qc controls|samples|contamination|relatedness|loci|suggest-thresholds
- genotype: control tables (OUT-070), het_rate, QC columns, cohort QC
- tests: unit + oracle (BAFregress plugin, BeadArrayFiles locus summary)
This commit is contained in:
kemal committed 2026-09-28 08:35:10 +01:00
1 parent f469c97917
commit a4c9c2d7d8
28 files changed
+3355 -22

No files matched your search

+84
View File
@@ -0,0 +1,84 @@
# Canonical control-probe IDs (spec QC-002). Keys are *normalised* names: case-folded, whitespace collapsed,
# no spaces next to or inside parentheses, "bgnd" written as "bkg". Several manifest spellings map to one ID.
canonical:
# staining
biotin(high): biotin_high
biotin(bkg): biotin_bkg
biotin(5k): biotin_5k
dnp(high): dnp_high
dnp(bkg): dnp_bkg
dnp(20k): dnp_20k
# extension
extension(a): ext_A
extension(t): ext_T
extension(c): ext_C
extension(g): ext_G
# hybridization
hyb(high): hyb_high
hyb(medium): hyb_medium
hyb(low): hyb_low
# target removal
target removal: target_removal_1
target removal(1): target_removal_1
target removal 1: target_removal_1
target removal(2): target_removal_2
target removal 2: target_removal_2
# stringency
string(pm): string_pm
string(mm): string_mm
# non-specific binding (one bead type per colour label on genotyping chips)
nsb(bkg): nsb_bkg
nsb(bkg) red: nsb_bkg
nsb(bkg) green: nsb_bkg
nsb(bkg) blue: nsb_bkg
nsb(bkg) purple: nsb_bkg
# non-polymorphic
np(a): np_A
np(t): np_T
np(c): np_C
np(g): np_G
# restoration (FFPE)
restoration: restoration
restore: restoration
# methylation (metrics in v2; names mapped already so controls_raw.tsv is labelled consistently)
bs conversion i c1: bs1_C1
bs conversion i c2: bs1_C2
bs conversion i c3: bs1_C3
bs conversion i c4: bs1_C4
bs conversion i c5: bs1_C5
bs conversion i u1: bs1_U1
bs conversion i u2: bs1_U2
bs conversion i u3: bs1_U3
bs conversion i u4: bs1_U4
bs conversion i u5: bs1_U5
bs conversion ii-1: bs2_1
bs conversion ii-2: bs2_2
bs conversion ii-3: bs2_3
bs conversion ii-4: bs2_4
gt mismatch 1(pm): gtmm_1_pm
gt mismatch 2(pm): gtmm_2_pm
gt mismatch 3(pm): gtmm_3_pm
gt mismatch 4(pm): gtmm_4_pm
gt mismatch 5(pm): gtmm_5_pm
gt mismatch 6(pm): gtmm_6_pm
gt mismatch 1(mm): gtmm_1_mm
gt mismatch 2(mm): gtmm_2_mm
gt mismatch 3(mm): gtmm_3_mm
gt mismatch 4(mm): gtmm_4_mm
gt mismatch 5(mm): gtmm_5_mm
gt mismatch 6(mm): gtmm_6_mm
specificity 1: spec2_1
specificity 2: spec2_2
specificity 3: spec2_3
# Categories treated as methylation-only (dataset type detection, QC-043).
methylation_categories:
- bisulfite conversion i
- bisulfite conversion ii
- specificity i
- specificity ii
# Report exclusion list (QC-010): raw-probe views leave these out; derived metrics still use them.
report_exclude:
categories: [negative, norm]
names: ["np(g) 1", "np(g) 2", "np(g) 3", "np(g) 4", "np(g) 5", "biotin(5k)", "dnp(20k)"]