Skip to main content

Pure-Python port of the R/CRAN package tigger — novel immunoglobulin V-allele discovery and subject-specific V genotype inference from AIRR-Seq / Rep-Seq data.

Project description

pytigger

Pure-Python port of the R/CRAN package tiggerTools for Immunoglobulin Genotype Elucidation via Rep-seq.

tigger is part of the Immcantation framework (Kleinstein Lab, Yale). It discovers novel immunoglobulin V alleles from adaptive immune receptor repertoire sequencing data (AIRR-Seq / Rep-Seq), infers a subject's V genotype, and corrects V-allele calls accordingly.

pytigger is a faithful, dependency-light re-implementation of tigger 1.1.3 in pure Python (numpy / scipy / pandas / matplotlib, no rpy2). Numerical parity with the R package is the design priority: on the bundled example data the novel-allele table, genotype membership and reassigned calls match R exactly, and the Bayesian likelihood numbers agree to a relative difference below 1e-13.

Installation

pip install pytigger

From source:

git clone https://github.com/omicverse/py-tigger
cd py-tigger
pip install -e .

The TIgGER trifecta

import pytigger as tg

# Bundled example data (the datasets shipped with R tigger)
data = tg.load_airrdb()                 # 17,559 AIRR-seq sequences
germ = tg.load_sample_germline_ighv()   # 344 IGHV germline alleles

# 1. Discover novel V alleles
novel = tg.find_novel_alleles(data, germ)
tg.select_novel(novel)[["germline_call", "polymorphism_call", "note"]]
#   germline_call  polymorphism_call               note
#   IGHV1-8*02     IGHV1-8*02_G234T   Novel allele found!

# 2. Infer the subject's V genotype
geno = tg.infer_genotype(data, germline_db=germ, novel=novel,
                         find_unmutated=True)
# ... or the full Bayesian model
geno_b = tg.infer_genotype_bayesian(data, germline_db=germ, novel=novel)

# 3. Correct the V-call assignments
gdb = tg.genotype_fasta(geno, germ, novel)
out = tg.reassign_alleles(data, gdb)        # adds 'v_call_genotyped'

# Evidence table for the inferred novel alleles
ev = tg.generate_evidence(out, novel, geno, gdb, germ)

Visualisation

fig1 = tg.plot_novel(data, tg.select_novel(novel).iloc[[0]])  # evidence plot
fig2 = tg.plot_genotype(tg.load_sample_genotype())            # genotype grid

API

The trifecta + core

function R equivalent
find_novel_alleles findNovelAlleles
select_novel selectNovel
infer_genotype inferGenotype
infer_genotype_bayesian inferGenotypeBayesian
reassign_alleles reassignAlleles
genotype_fasta genotypeFasta
generate_evidence generateEvidence
get_popular_mutation_count getPopularMutationCount

Sequence / IO utilities

read_ig_fasta, write_fasta, clean_seqs, update_allele_names, sort_alleles, get_mutated_positions, get_mut_count, find_unmutated_calls, insert_polymorphisms, super_substring.

Segment parsing (alakazam port)

get_gene, get_allele, get_family, translate_dna.

Plotting

plot_novel, plot_genotype.

Built-in data

load_airrdb, load_sample_germline_ighv, load_sample_novel, load_sample_genotype.

R-parity

pytigger is validated against tigger 1.1.3 (installed alongside alakazam 1.4.3). Running the trifecta on the bundled AIRRDb / SampleGermlineIGHV example data:

  • find_novel_alleles — all 30 output columns match R for all 12 rows; the single novel allele IGHV1-8*02_G234T is detected identically.
  • infer_genotype — gene/allele/count membership and the "Cannot distinguish" notes match R exactly.
  • infer_genotype_bayesian — discrete genotype matches R; the kh, kd, kt, kq, k_diff log-likelihoods agree to rel-diff < 1e-13.
  • reassign_alleles — the v_call_genotyped column matches R on 100% of 17,559 sequences.
  • generate_evidence — the evidence metrics match R exactly.

See tests/test_r_parity.py (skipped automatically when no R is available).

Citation

If you use pytigger, please cite the original tigger papers:

Gadala-Maria D, Yaari G, Uduman M, Kleinstein SH (2015). Automated analysis of high-throughput B-cell sequencing data reveals a high frequency of novel immunoglobulin V gene segment alleles. PNAS 112(8):E862-70.

Gadala-Maria D, Gidoni M, Marquez S, et al. (2019). Identification of Subject-Specific Immunoglobulin Alleles from Expressed Repertoire Sequencing Data. Front. Immunol. 10:129.

License

AGPL-3, retained from the original tigger package. See LICENSE.

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

pytigger-0.1.1.tar.gz (1.1 MB view details)

Uploaded Source

Built Distribution

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

pytigger-0.1.1-py3-none-any.whl (1.1 MB view details)

Uploaded Python 3

File details

Details for the file pytigger-0.1.1.tar.gz.

File metadata

  • Download URL: pytigger-0.1.1.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pytigger-0.1.1.tar.gz
Algorithm Hash digest
SHA256 775816c42ec4bb2c357e806cdf63de19d9a2a613773881fff23f25f80393abad
MD5 5b6824862dca9bee38b2f0763b9bc824
BLAKE2b-256 cdde9b66acc603a607c859a33546952cd0730225a9e0e4afaf1459341ba2eb3a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytigger-0.1.1.tar.gz:

Publisher: publish.yml on omicverse/py-tigger

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pytigger-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pytigger-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pytigger-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2ede370dcb4ba5cf458097217ee9cfab44f701b3f21fd31152437b6355bf5d4b
MD5 42c7c15bc64d225abad9320bfd376b12
BLAKE2b-256 14b1ad732f236d00c08d1b80b593e2fcab1c8c15f629f7e30c5b06e63170ae8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pytigger-0.1.1-py3-none-any.whl:

Publisher: publish.yml on omicverse/py-tigger

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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