Files
SimurgArray/README.md
T
kemal a4c9c2d7d8 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)
2026-09-28 08:35:10 +01:00

2.2 KiB

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.