P4: unit tests for calling/BAF/LRR/sex/CLI; vendor validation script

- tests/unit/test_genotype.py: fuzzy memberships incl. NaN rules, calls
  at cluster centres, intensity threshold, BAF/LRR interpolation and
  NaN pattern, LogR-dev locus set, sex rules v1/v2, TOP-strand base
  calls, invariant dates, end-to-end `simurg genotype` (summary schema,
  pass-through columns, thread/layout determinism, overwrite refusal)
- tests/oracle/test_p4_genotype.py: 36 GSA samples x 2 versions
  byte-identical to the oracle
- scripts/validate_p4_large.py + cloud task p4: compare every vendor
  GTC field by field and as whole files; reports which sex rule matches
This commit is contained in:
kemal committed 2026-09-28 00:10:47 +01:00
1 parent fcc1f6c3e3
commit 7032074bfe
3 files changed
+496

No files matched your search

+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash
# Phase P4: genotype every Omni2.5 IDAT pair and compare the GTC with the vendor's (fields + whole file).
# Args: <data dir with bpm/egt and data/> <results dir>
set -uo pipefail
D=$1; OUT=$2
SRC=s3://1000genomes/release/20130502/supporting/hd_genotype_chip/broad_intensities
mkdir -p $D/egt
aws s3 cp --no-sign-request "$SRC/HumanOmni2.5-4v1-Multi_H.egt" $D/egt/ --only-show-errors
cp $D/HumanOmni2.5-4v1-Multi_B.egt $D/egt/
/usr/bin/time -v .venv/bin/python scripts/validate_p4_large.py --root $D/data --bpm $D/HumanOmni2.5-4v1-Multi_B.bpm \
--egt-dir $D/egt --out $OUT/summary.json --norm-version 1.1.2 --sex-version 1 --workers "$(nproc)" \
2> $OUT/time.txt || echo "P4 validation reported differences"
tail -25 $OUT/time.txt