Proof of concept for sqlite-based indexing of ANViL-hosted VCFs annotated with VRS IDs and attributes.
From a VCF, ingest a VRS ID and the corresponding VCF-called location (i.e. sufficient inputs for a tabix lookup), and store them in a sqlite database.
% vrsix load chr1.vcf
Given a VRS ID, retrieve VCF-associated data (output format TBD)
% vrsix fetch-by-id --db-location=sqlite.db dwwiZdvVtfAmomu0OBsiHue1O-bw5SpG
ga4gh:VA.dwwiZdvVtfAmomu0OBsiHue1O-bw5SpG,1,783006
Or fetch all rows within a coordinate range:
% vrsix fetch-by-range --db-location=sqlite.db 1 783000 783200
ga4gh:VA.dwwiZdvVtfAmomu0OBsiHue1O-bw5SpG,1,783006
ga4gh:VA.MiasxyXMXtOpsZgGelL3c4QgtflCNLHD,1,783006
ga4gh:VA.5cY2k53xdW7WeHw2WG1HA7jl50iH-r9p,1,783175
ga4gh:VA.jHaXepIvlbnapfPtH_62y-Qm81hCrBYn,1,783175
Ensure that a recent version of the Rust toolchain is available.
Create a virtual environment and install developer dependencies:
python3 -m virtualenv venv
source venv/bin/activate
python3 -m pip install -e '.[dev,tests]'
This installs Python code as editable, but after any changes to Rust code, run maturin develop
to rebuild the Rust binary:
maturin develop
Be sure to install pre-commit hooks:
pre-commit install
Check Python style with ruff
:
python3 -m ruff format . && python3 -m ruff check --fix .
Use cargo fmt
to check Rust style (must be run from within the rust/
subdirectory):
cd rust/
cargo fmt