SIMURGARRAY_FUNCTIONAL_SPEC.md defines externally visible behaviour: CLI, inputs, genotyping outputs, QC and report, cytogenetics CNV/LOH, targeted PGx copy number, star alleles, methylation control QC, edge-case catalogue, performance targets, open questions and a traceability table. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01814GKVzZVL3FuF3DeiZXhv
1.3 KiB
1.3 KiB
SimurgArray
Personal research toolkit for Illumina Infinium genotyping arrays (IDAT→GTC→VCF, QC, CN, PGx). The full spec and roadmap is SIMURGARRAY_MASTER_PLAN.md — read the relevant section before changing code. Externally visible behaviour (CLI options, file schemas, QC semantics, messages, edge cases) is defined item-by-item in SIMURGARRAY_FUNCTIONAL_SPEC.md (IDs like CLI-021, OUT-031); cite item IDs in commits and tests.
Rules
- Work phase by phase (§18). Don't start a phase until the previous gate passes.
- Science modules (signal/, genotype/, cn/, qc/, pgx/) are pure functions; no I/O inside them.
- Every algorithm cites its source (§7 tags) in its docstring.
- MIT/BSD/Apache/Unlicense code may be ported with attribution in THIRD_PARTY_NOTICES.md. GPL tools (plink2, illuminaio, verifyIDintensity) = subprocess oracles only; never copy their code.
- Never commit vendor data (BPM/CSV/EGT/IDAT) — only tests/fixtures/ (Artistic-2.0 Bioconductor files, synthetic data).
- Never hide oracle discrepancies; record them in docs/known_unknowns.md.
- Default mode is bit-exact vs Illumina-produced GTCs; keep a clean-math mode too.
Commands
- uv sync ; uv run pytest -q ; uv run ruff check . ; uv run mypy src
- bash scripts/fetch_data.sh p0|p1|p2 ; bash scripts/bootstrap_refs.sh