This repository compares Ensembl VEP output against local-checkout vepyr output using Python, Polars, and semantic CSQ normalization.
- Read
.agent/CONTINUITY.mdat the start of each turn. - Keep the repo container-first. Do not install system packages on the host unless explicitly requested.
- Default runtime path is
docker composeplus bind mounts for inputs, caches, and output directories. - Do not mutate a
vepyrcheckout automatically. Treat it as an input mount. - Use semantic comparison of parsed
INFO/CSQas the canonical equality rule. RawCSQstrings are supporting evidence only. - Preserve deterministic output structure under the selected run directory.
src/vepyr_diffly/: package code.tests/: unit and integration tests.presets/: staged TOML preset matrix.docker/: container definitions and helper entrypoints.
-
vepyr-diff runmust:- resolve one preset,
- optionally sample the first
Ndata rows from a source VCF while preserving headers, - run Ensembl VEP and
vepyrwith equivalent effective flags, - normalize annotated VCF outputs into variant and consequence tables,
- compare both tiers using
diffly, - emit clear console output plus file artifacts.
-
vepyr-diff list-presetsprints the staged preset matrix. -
vepyr-diff inspect-runsummarizes an existing artifact directory.
Run these from repo root when code changes:
uv run ruff format .
uv run ruff check .
uv run pytestIf runtime code changes substantially, also run:
uv run python -m vepyr_diffly.cli list-presets- Prefer small deterministic fixture VCFs for unit tests.
- Keep one integration-style sampled workflow test that exercises artifact generation end to end without requiring external VEP infrastructure.
- Validate normalized table schemas explicitly.
- Console output must remain concise and operator-friendly.
- File outputs must include machine-readable summary plus inspectable mismatch tables.
- When introducing a new comparison rule, add fixture coverage that demonstrates the failure mode it prevents.
- After every smoke test or benchmark-style non-golden run, clean its artifacts from
runs/once the result has been captured. - Keep long-lived artifacts in
runs/only for golden tests or explicitly requested retained runs.