- 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) Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01814GKVzZVL3FuF3DeiZXhv
35 lines
2.2 KiB
Markdown
35 lines
2.2 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
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`.
|