How natera-open-source/vep-rs works
vep-rs is a Rust reimplementation of Ensembl VEP. Users provide variants and a transcript cache; the CLI parses and normalizes records, matches transcripts, computes consequences, adds plugin annotations, applies pick behavior, and writes VEP-compatible formats. The cache can be built from Ensembl inputs or converted from Perl VEP data. The map includes major documented capabilities, but some links to unsampled subsystems are based on README statements rather than inspected implementation details.
Main entry points: pipeline.rs Batch pipeline · runner.rs Run coordinator · consequences.rs Consequence calculation · output VEP output formats
Components 28
Cache preparation
- Cache builder
crates/vep-cache-builder/src/main.rs - Perl cache converter
crates/vep-cache-converter/src/main.rs - JSON transcript cache
Annotation runtime
- VEP CLI
crates/vep-cli/src/main.rs - Run coordinator
crates/vep-cli/src/runner.rs - Batch pipeline
crates/vep-cli/src/pipeline.rs - Cache loading
crates/vep-cli/src/json_cache.rs - Transcript lookup
crates/vep-cli/src/transcript_index.rs - Known variation match
crates/vep-cli/src/variation_matcher.rs - Consequence selection
crates/vep-cli/src/pick.rs
Effect computation
- Variant model
crates/vep-core/src/variant.rs - Transcript model
crates/vep-core/src/transcript.rs - Consequence terms
crates/vep-core/src/consequence.rs - Consequence calculation
crates/vep-effects/src/consequences.rs - Coding effects
crates/vep-effects/src/coding.rs - Structural variant effects
crates/vep-effects/src/sv/mod.rs - HGVS notation
crates/vep-effects/src/hgvs.rs
Annotation extensions
- Built-in databases
crates/vep-builtins/src/registry.rs - Tabix query engine
crates/vep-builtins/src/tabix.rs - Dynamic plugins
crates/vep-plugin/src/loader.rs - Plugin registry
crates/vep-plugin/src/registry.rs
Input and output
- VCF parsing
crates/vep-cli/src/vcf_parser.rs - VEP output formats
crates/vep-io/src/output - Parquet output
crates/vep-io/src/output/parquet.rs
Other components
- Variant data user
- Plugin libraries
- Ensembl files
- Existing Perl VEP cache
Connections 28
- Variant data user → VEP CLI: supplies variants
README.md - Ensembl files → Cache builder: provides source files
README.md - Cache builder → JSON transcript cache: builds cache
README.md - Existing Perl VEP cache → Perl cache converter: provides cache
README.md - Perl cache converter → JSON transcript cache: converts cache
README.md - VEP CLI → Run coordinator: starts run
- Run coordinator → Batch pipeline: runs batches
crates/vep-cli/src/runner.rs - Run coordinator → Cache loading: loads cache
crates/vep-cli/src/runner.rs - JSON transcript cache → Cache loading: reads cache
README.md - Batch pipeline → VCF parsing: parses records
crates/vep-cli/src/pipeline.rs - Batch pipeline → Transcript lookup: looks up transcripts
crates/vep-cli/src/pipeline.rs - Batch pipeline → Known variation match: matches variations
crates/vep-cli/src/pipeline.rs - Batch pipeline → Consequence calculation: calculates effects
- Batch pipeline → Consequence selection: selects results
crates/vep-cli/src/pipeline.rs - Batch pipeline → VEP output formats: renders output
- VCF parsing → Variant model: creates variants
crates/vep-cli/src/vcf_parser.rs - Consequence calculation → Coding effects: delegates coding
crates/vep-effects/src/consequences.rs - Consequence calculation → Structural variant effects: dispatches SVs
crates/vep-effects/src/consequences.rs - Consequence calculation → Consequence terms: assigns terms
crates/vep-effects/src/consequences.rs - Consequence calculation → Transcript model: evaluates overlap
- Run coordinator → HGVS notation: supports HGVS
- Run coordinator → Built-in databases: configures plugins
- Built-in databases → Tabix query engine: queries data
- Run coordinator → Plugin registry: loads plugins
- Plugin registry → Dynamic plugins: loads libraries
crates/vep-plugin/src/registry.rs - Dynamic plugins → Plugin libraries: loads at runtime
README.md - VEP output formats → Parquet output: supports Parquet
- VEP output formats → Variant data user: writes results
README.md