Skip to main content

Python bindings for the mehari variant annotator

Project description

mehari

Python bindings for the mehari Rust library.

Features

  • Single variants: Annotate a single variant using a format string (chr:pos:ref:alt) or keyword arguments.
  • Multiple variants (experimental): Evaluate the compound effect of multiple variants.
  • DataFrames: Process batches of variants by passing a polars.DataFrame.
  • LazyFrames: Support for polars.LazyFrame to process large datasets (like Parquet files) without loading everything into memory.

Usage

Initialize SeqvarsAnnotator with your transcript database (see mehari-data-tx) and a reference genome (FASTA, uncompressed, with index).

from mehari import SeqvarsAnnotator

annotator = SeqvarsAnnotator(
    transcript_db_paths=["path/to/txs.bin.zst"],
    reference_path="path/to/reference.fa"
)

To annotate a single variant either use colon separated format string or keyword arguments:

result1 = annotator.annotate("17:41197701:G:C")
result2 = annotator.annotate(chromosome="3", position=193332511, reference="G", alternative="T")

To annotate multiple phased variants together as a single compound event (Experimental):

Note: Mehari does not infer phasing. When using annotate_multiple, mehari assumes all provided variants are on the same chromosome, exist on the same haplotype, and do not overlap.

result1 = annotator.annotate_multiple(["1:37799635:TA:A", "1:37799639:C:CG"])

result2 = annotator.annotate_multiple([
    {"chromosome": "1", "position": 37799635, "reference": "TA", "alternative": "A"},
    {"chromosome": "1", "position": 37799639, "reference": "C", "alternative": "CG"}
])

To annotate a batch of variants, pass a polars.DataFrame or polars.LazyFrame.

import polars as pl

df = pl.DataFrame(
    {
        "chromosome": ["17", "3"],
        "position": [41197701, 193332511],
        "reference": ["G", "G"],
        "alternative": ["C", "T"],
    },
    schema={
        "chromosome": pl.Categorical, "position": pl.Int32,
        "reference": pl.String, "alternative": pl.String
    }
)

annotated_df = annotator.annotate(df)

Schemas and types

Enums

Mehari exports its internal enums to Python so you can use them for filtering or comparisons:

from mehari import ConsequenceEnum, ImpactEnum

DataFrame Schema

When annotating a DataFrame or LazyFrame, mehari appends an "annotation" column. This column is a polars List(Struct) with the following fields:

  • allele: String
  • consequences: List(ConsequenceEnum)
  • putative_impact: ImpactEnum
  • gene_symbol: String
  • gene_id: String
  • feature_type: String
  • feature_id: String
  • feature_biotype: List(String)
  • feature_tags: List(String)
  • rank: Struct(ord: Int32, total: Int32)
  • cdna_pos: Struct(ord: Int32, total: Int32)
  • cds_pos: Struct(ord: Int32, total: Int32)
  • protein_pos: Struct(ord: Int32, total: Int32)
  • hgvs_g: String
  • hgvs_n: String
  • hgvs_c: String
  • hgvs_p: String
  • distance: Int32
  • strand: Int32
  • messages: List(String)

Building a transcript database

To build a transcript database, you can use the build_transcript_db function:

from mehari import build_transcript_db
build_transcript_db(
    assembly="grch38",
    annotation=["grch38.gff.gz"],
    transcript_sequences="grch38.fasta",
    transcript_source="ensembl",
    output="grch38.bin.zst"
)

This may take a while (several minutes for GRCh38 + Ensembl).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mehari-0.45.1.tar.gz (1.7 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

mehari-0.45.1-cp313-cp313-manylinux_2_28_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

mehari-0.45.1-cp312-cp312-manylinux_2_28_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

mehari-0.45.1-cp311-cp311-manylinux_2_28_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

File details

Details for the file mehari-0.45.1.tar.gz.

File metadata

  • Download URL: mehari-0.45.1.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for mehari-0.45.1.tar.gz
Algorithm Hash digest
SHA256 775a803a03b7c5396309d26fc83acfbe6bb8e53f604370ff0b547fc62db199c7
MD5 5e5500209e8b8ca524e06dbbc256cedf
BLAKE2b-256 1bd1f77e387e6a99af300eb96d13abc6489d80a40dce94837754f7d30765155f

See more details on using hashes here.

File details

Details for the file mehari-0.45.1-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mehari-0.45.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e9f22f101fb2a16a3aeaad9b2afdd83e0bc8b5a974e794ac35febedc8251b948
MD5 1129d96553dacb4e39e92543f5a9e656
BLAKE2b-256 27ac0918bd6ee64381e5fdf691fa8dfacc18bfebaa6048b8794e237809d4e97d

See more details on using hashes here.

File details

Details for the file mehari-0.45.1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mehari-0.45.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3fec6aa278cd7ea383541e2e8f75fd3a6c2270a7125b1cb484c9699706d7a1c0
MD5 b5ba987d45be7e551f510d51b5b83011
BLAKE2b-256 80caa2ec263e2b5aa27370ed83caae93541ea95aa0706eacb5b8642b70e40b1b

See more details on using hashes here.

File details

Details for the file mehari-0.45.1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mehari-0.45.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bc16f199bf2f8cab7c92e5bc76687db353cb1527d2284324c8e219754e222394
MD5 2f35f17473a92a9774bd0c7044e2044f
BLAKE2b-256 d55fc66906e4a5be5bea2b8d39012ed56632244bbf6c78bb13438942f31fa02a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page