genome-sh 0.1.0

The jq of genomics. Fast, local, human-readable variant analysis.
use anyhow::Result;

use crate::variant::AnnotatedVariant;

pub fn print(variant: &AnnotatedVariant) -> Result<()> {
    let rsid = variant.rsid.as_deref().unwrap_or(".");
    let gene = variant.gene.as_deref().unwrap_or(".");
    let significance = variant
        .clinvar
        .as_ref()
        .map(|c| c.significance.as_str())
        .unwrap_or(".");
    let af = variant
        .gnomad
        .as_ref()
        .map(|g| format!("{:.6}", g.af_global))
        .unwrap_or_else(|| ".".to_string());

    println!(
        "{rsid}\t{}:{}\t{}>{}  \t{gene}\t{significance}\tAF={af}",
        variant.chrom, variant.pos, variant.reference, variant.alt,
    );

    Ok(())
}