- pipeline/qc_report: dataset discovery/labels/types (QC-041..043), robust TSV/CSV reading (QC-061), join + unmatched warning (QC-040), privacy options (QC-046), xlsx (4 sheets, conditional fills) / csv table (QC-045), byte-deterministic HTML with gzip+base64 embedded data (QC-044, QC-047) - qc/report: template, CSS and JS app — Control Dashboard, Automated QC (table with sort/filter/search/ paging/column menu/export, metric scatters with threshold lines), Sample Heatmaps (chip/plate, continuous/binary), Trend Analysis (grouped summary, Tukey box plots, counts, sex, PCA), thresholds modal (apply / download / upload YAML), linked selection across plots and table (QC-048..060) - bundled plotly.js 2.35.2 (MIT); openpyxl dependency (MIT) - tests: discovery/labels/errors/determinism/xlsx + headless-browser self-test - known_unknowns K-020: remaining report deviations Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01814GKVzZVL3FuF3DeiZXhv
SimurgArray
Personal research toolkit for Illumina Infinium genotyping BeadChip data (IDAT → normalization → genotype calling → BAF/LRR → QC → VCF/PLINK; later CN/LOH, PGx, cluster training).
- SIMURGARRAY_MASTER_PLAN.md — architecture, algorithms, roadmap
- SIMURGARRAY_FUNCTIONAL_SPEC.md — 416 itemised requirements (CLI, inputs, outputs, QC, CN, PGx, methylation, edge cases)
docs/validation/— per-phase validation reports ·docs/known_unknowns.md— findings log ·docs/research/— background
Status
Phases P0 (setup), P1 (file parsers), P2 (canonical model, raw X/Y), P3 (normalization) and P4 (genotype
calling, GTC output) are complete — see docs/validation/. Each is validated on 2141 vendor GTCs of the 1000 Genomes Omni2.5 set
(normalization bit-identical; genotypes/scores identical in 2138/2141 samples).
Phase P5 (QC) is in progress: control-probe metrics, thresholds/profiles, two-axis sample status, BAF-regression
contamination, KING-robust relatedness, Mendelian errors and the locus summary are implemented and match their open-source
references on the GSA demo set (docs/validation/P5.md); the cohort-scale validation and the HTML report are pending.
Available commands: simurg version, simurg inspect <files…> [--json], simurg ingest, simurg normalize, simurg genotype,
simurg qc controls|samples|contamination|relatedness|loci|suggest-thresholds.
Quick start
uv venv && uv pip install -e ".[dev]"
uv run pytest tests/unit # no downloads needed
bash scripts/bootstrap_refs.sh # reference open-source repos → refs/ (oracles)
bash scripts/fetch_data.sh p0 # ~1.4 GB of public test data → data/
bash scripts/make_oracle_gtcs.sh # builds gtc2vcf, writes oracle GTCs
bash scripts/make_oracle_qc.sh # locus-summary oracle (BeadArrayFiles, separate venv)
uv run pytest tests/oracle # real-data acceptance tests (add -m "not slow" to skip the long ones)
uv run simurg inspect data/p0/gsa_v4_pgx/idats_Demo_36/idats_Demo_36/207895980019/207895980019_R03C01_Grn.idat
Vendor data files are downloaded for personal research use only and are never committed. See THIRD_PARTY_NOTICES.md.