genebears 0.2.2

Lightweight Rust client for the GeneBe genetic variant annotation API with DuckDB caching and rate limiting
Documentation

genebears

genebe + rs (Rust) = genebears

A lightweight, async Rust client for the GeneBe genetic variant annotation API, with a DuckDB-backed cache and a token-bucket rate limiter built in.

Installation

[dependencies]
genebears = "*"
tokio     = { version = "1", features = ["full"] }

Quick start

use genebears::{GeneBears, ClientConfig, Variant, Genome, AnnotateOptions};

#[tokio::main]
async fn main() -> Result<(), genebears::GeneBearError> {
    // Unauthenticated — fine for low-volume usage.
    let client = GeneBears::new(ClientConfig::default())?;

    let variants = vec![
        Variant::new("22", 28_695_868, "AG", "A"),
        Variant::new("6",  160_585_140, "T",  "G"),
    ];

    let results = client
        .annotate_variants(&variants, Genome::Hg38, AnnotateOptions::default())
        .await?;

    for v in &results {
        println!(
            "gene={:?}  revel={:?}  alphamissense={:?}  acmg={:?}",
            v.gene_symbol,
            v.revel_score,
            v.alphamissense_score,
            v.acmg_classification,
        );
    }
    Ok(())
}

Credential and cache usage

use genebears::{GeneBears, ClientConfig};

let config = ClientConfig::with_credentials("you@example.com", "YOUR_API_KEY")
    .with_cache("variants.duckdb");

let client = GeneBears::new(config)?;

On every subsequent run the cache is consulted first; only variants that have never been seen before reach the network.

Annotation options

use genebears::AnnotateOptions;

let opts = AnnotateOptions {
    use_refseq:    Some(true), // RefSeq transcripts only
    omit_advanced: true,       // skip ClinVar etc. for speed
    ..Default::default()
};

Large variant lists

annotate_variants_chunked splits automatically at 1 000 and respects the rate limiter between chunks:

let results = client
    .annotate_variants_chunked(&my_big_vec, Genome::Hg38, AnnotateOptions::default())
    .await?;

Authors

  • Felix Wiegand