A library for managing and analyzing immunosequencing data
Project description
mirpy — Mining Immune Repertoires in Python
mirpy is a Python library for AIRR-seq and immune repertoire analysis.
It provides composable building blocks for parsing, filtering, comparing, and
characterising T-cell and B-cell receptor repertoires.
Contents
- Installation
- Module overview
- Quick start
- Diversity metrics
- Metaclonotypes
- TCRdist
- CDR3 Motif Logos
- Clonotype Association Scan
- ALICE and TCRNET
- Prototype-based embeddings (TCREmp)
- Copilot Agent Workflow
- Resources
- Project status
Installation
Requirements:
- Python 3.11+
- a C/C++ build toolchain for compiled extensions
Install from PyPI:
pip install mirpy-lib
Install from source (one-shot):
git clone https://github.com/antigenomics/mirpy.git
cd mirpy
pip install .
Install from source (editable development mode, conda):
git clone https://github.com/antigenomics/mirpy.git
cd mirpy
./setup.sh # creates the `mirpy` conda env + editable install
conda activate mirpy
setup.sh creates/updates the mirpy conda environment from environment.yml
and installs mirpy in editable mode (it builds the bundled C++ extensions).
Pass --no-conda to install into the already-active environment instead, or
--docs / --test for docs deps and the test suite. The base env is lean;
region-annotation tooling is the optional [arda] extra (pip install -e ".[arda]").
Prefer pip install mirpy-lib for project usage.
Use the cloned repo setup when developing or running docs/notebooks locally.
Module overview
| Package | Responsibilities |
|---|---|
mir.common |
Clonotypes, repertoires, parsers, segment libraries |
mir.distances |
Aligners, Hamming/Levenshtein search, graph utilities, TCRdist |
mir.basic |
Sampling, segment usage, alphabet helpers, Pgen utilities, OLGA germline-retention/trimming profiles + fast PgenLite |
mir.graph |
Edit-distance graphs, neighbourhood enrichment, token graphs, single-cell pairing |
mir.embedding |
Prototype embeddings: TCREmp, PairedTCREmp |
mir.comparative |
Pairwise overlap metrics (Jaccard, D, F, Morisita-Horn), trie-accelerated approximate matching, VDJBet Pgen-matched null distributions |
mir.biomarkers |
ALICE enrichment, TCRNET, clonotype association scans, CDR3 sequence logos |
mir.utils |
Embedding diagnostics, shared memory, notebook asset helpers |
Quick start
Load a segment library
from mir.common.gene_library import GeneLibrary
lib = GeneLibrary.load_default(
loci={"TRA", "TRB"},
species={"human"},
source="imgt",
)
If a requested organism/locus pair is absent from the default local segment file, mirpy downloads the missing V and J segments from IMGT and appends them automatically.
Parse a clonotype table
from mir.common.parser import VDJtoolsParser
parser = VDJtoolsParser(sep="\t")
clonotypes = parser.parse("example.tsv")
Supported parsers: VDJtoolsParser, AIRRParser, AdaptiveParser,
VDJdbFullPairedParser, and others in mir.common.parser.
VDJdb reference: Shugay M et al. 2018, Nucleic Acids Res., PMID:28977646.
V/J gene allele notation
mirpy uses consistent allele semantics throughout all V/J matching and distance paths.
Matching semantics
| Input form | Behaviour | Matches |
|---|---|---|
TRAV1 (bare) |
wildcard | TRAV1, TRAV1*01, TRAV1*02, … |
TRAV1*02 (specific) |
exact | TRAV1*02 and bare TRAV1 only |
A bare gene (no * suffix) acts as a wildcard and matches any allele of the
same base gene. A specific allele matches only that exact allele, plus bare
genes (which, having no allele information, cannot exclude any allele).
This applies to all V/J-restricted search paths:
- edit-distance graph construction (
v_call_match) - neighborhood enrichment stats (
match_v_call,match_j_call) - metaclonotype clustering
- association scans (
match_mode="v"/"j"/"vj") - TCRdist
find_metaclonotypes
Library resolution chain for distances
When a V/J gene is looked up in a pre-computed library (e.g., TCRdist germline distances, TCREmP embeddings), mirpy tries in order:
- Exact allele —
TRBV5-1*07as-is - Major allele (
*01) —TRBV5-1*01 - Bare gene —
TRBV5-1(for libraries without allele resolution) - Not found — returns
NaN; propagates to the overall distance
No silent substitution of max-distance sentinels for unknown genes.
Work with repertoires
from mir.common.repertoire import LocusRepertoire
repertoire = LocusRepertoire(clonotypes=clonotypes, locus="TRB")
print(repertoire.duplicate_count) # total read count
print(repertoire.clonotype_count) # unique clonotypes
# Functional / canonical filtering using IMGT annotations
from mir.common.filter import filter_functional, filter_canonical
from mir.common.gene_library import GeneLibrary
imgt_lib = GeneLibrary.load_default(loci={"TRB"}, species={"human"}, source="imgt")
functional_rep = filter_functional(repertoire, gene_library=imgt_lib)
canonical_rep = filter_canonical(repertoire, gene_library=imgt_lib)
Pool repertoires across samples
from mir.common.pool import pool_samples
# Pool by amino-acid CDR3 + V/J; retain contributing sample IDs
pooled = pool_samples(dataset, rule="aavj", include_sample_ids=True)
Supported pooling rules: ntvj, nt, aavj, aa.
For each rule the representative clonotype is selected by frequency
(duplicate_count when weighted=True); duplicate_count is reassigned to
the total sum, and incidence / occurrences metadata are added.
Diversity metrics
mir.common.diversity implements VDJtools-style summary indices
(Shugay et al. 2015, PMID:26606115) and iNEXT-style Hill diversity profiles
and rarefaction/extrapolation curves (Hsieh et al. 2016).
Summary statistics
from mir.common.diversity import summarize_counts
counts = [c.duplicate_count for c in repertoire.clonotypes]
div = summarize_counts(counts)
print(div.abundance) # total read count
print(div.diversity) # observed richness
print(div.chao1) # bias-corrected Chao1 species richness estimator
print(div.shannon) # Shannon entropy H′
print(div.gini_simpson) # Gini-Simpson index (1 − Σp²)
print(div.singletons) # clones seen exactly once
print(div.doubletons) # clones seen exactly twice
Hill diversity profile
from mir.common.diversity import hill_curve
# Returns a Polars DataFrame with columns q, D_q
profile = hill_curve(counts)
# q=0 → species richness; q=1 → exp(Shannon); q=2 → inverse Simpson
Rarefaction / extrapolation curve
from mir.common.diversity import rarefaction_curve
curve = rarefaction_curve(counts)
# Polars DataFrame with m, s_obs, s_est, s_lwr, s_upr, sample coverage C
See notebooks/diversity_analysis.ipynb for a full donor-level workflow
including rarefaction curves, Hill profiles, and Healthy vs MS cohort
comparisons.
Metaclonotypes
A metaclonotype is a lightweight cluster layer over an existing
LocusRepertoire. It stores cluster membership as a Polars DataFrame
(mapping cluster_id → clonotype_id) without rebuilding repertoire objects.
This supports any clustering backend: DBSCAN, ALICE/TCRNET enriched clusters,
TCRdist radius clusters, or pre-computed connected components.
Unified clustering interface
MetaclonotypeClusterConfig + cluster_metaclonotypes dispatch to any
supported backend (ALICE, TCRNET, TCRdist, edit-distance graph, TCREmp, GLIPH):
from mir.biomarkers.metaclonotype_cluster import (
MetaclonotypeClusterConfig,
cluster_metaclonotypes,
cluster_paired_metaclonotypes,
)
# Edit-distance graph, Leiden communities
cfg = MetaclonotypeClusterConfig(method="edit_distance", graph_algo="leiden")
meta = cluster_metaclonotypes(rep, cfg)
# TCRdist radius clusters
cfg_dist = MetaclonotypeClusterConfig(method="tcrdist", locus="TRB", max_distance=24.5)
meta_dist = cluster_metaclonotypes(rep, cfg_dist)
Paired-chain metaclonotypes via single-chain-combine (works for all methods):
# Computes per-chain edit-distance clusters, combines IDs as "TRA_cluster.TRB_cluster"
cfg = MetaclonotypeClusterConfig(method="edit_distance", min_cluster_size=1)
meta_paired = cluster_paired_metaclonotypes(paired_locus_rep, cfg)
For TCREmp, cluster_paired_metaclonotypes uses the built-in PairedTCREmp
joint embedding by default. See notebooks/metaclonotype_method_compare.ipynb
for a comparison of methods including concordance analysis.
Build metaclonotypes from cluster labels
from mir.common.metaclonotype import metaclonotypes_from_labels
# labels is a list of ints; -1 denotes noise/singleton (excluded by default)
meta = metaclonotypes_from_labels(clonotype_ids, labels)
print(meta.n_clusters) # number of clusters
print(meta.cluster_ids[:5]) # sorted cluster IDs
Build from pre-computed connected components
from mir.common.metaclonotype import metaclonotypes_from_components
# components: list of lists of clonotype IDs
meta = metaclonotypes_from_components(components)
Summarise cluster abundance
from mir.common.metaclonotype import summarize_metaclonotypes
# Returns a Polars DataFrame with cluster_id and aggregated duplicate_count
summary = summarize_metaclonotypes(repertoire, meta)
Functional diversity of the metaclonotype layer
from mir.common.metaclonotype import functional_diversity
# One-call wrapper: summarize → DiversitySummary
div = functional_diversity(repertoire, meta)
print(div.shannon) # Shannon entropy at the cluster level
print(div.chao1) # Chao1 estimator for cluster richness
print(div.gini_simpson) # Gini-Simpson index
Cross-repertoire functional overlap
from mir.common.metaclonotype import functional_overlap_1
# Fraction of metaclonotypes in rep_a that share a CDR3 identity with rep_b
overlap = functional_overlap_1(meta_a, meta_b, repertoire_a, repertoire_b)
TCRdist
TcrDist (mir.distances.tcrdist) computes the weighted V-gene + CDR3
alignment distance between TCR clonotypes, following the TCRdist3 metric
(Dash et al. 2017). All V-gene pairwise distances are pre-computed once
from full germline sequences; CDR3 alignment uses BLOSUM62 with a fixed-gap
C extension that releases the GIL for thread parallelism.
Gene input robustness: allele suffixes are optional for V/J genes in distance
calls. For example, TRBV19 and TRBJ2-7 are automatically interpreted as
TRBV19*01 and TRBJ2-7*01 before allele-indexed matrix lookup.
from mir.distances.tcrdist import TcrDist
from mir.common.clonotype import Clonotype
# Build once — loads OLGA library and pre-computes V-gene distances (~3–10 s)
td = TcrDist.from_defaults(
"TRB", "human",
w_v=1.0, w_j=0.0, w_cdr3=3.0,
fixed_gaps=(3, 4, -4, -3), # C-accelerated (default)
# fixed_gaps="Mid" → midpoint gap per pair (Python, ~330× slower)
# fixed_gaps=None → full BioPython DP (~780× slower)
)
cln1 = Clonotype(v_call="TRBV19*01", j_call="TRBJ2-7*01", junction_aa="CASSIRSSYEQYF")
cln2 = Clonotype(v_call="TRBV19*01", j_call="TRBJ2-7*01", junction_aa="CASSIRASYEQYF")
d = td.dist(cln1, cln2) # single pair
row = td.dist_one_to_many(cln1, refs) # (K,) array
mat = td.dist_matrix(queries, refs, n_jobs=4) # (N, K) matrix
Radius and metaclonotype discovery
from mir.basic.pgen import OlgaModel
model = OlgaModel(locus="TRB", species="human")
bg_seqs, _ = model.generate_sequences_counted(10_000, n_jobs=4, seed=42)
bg_clns = [Clonotype(junction_aa=s, locus="TRB") for s in bg_seqs]
# Median background distance for each query clonotype
radii = td.compute_radius(hits, bg_clns, percentile=50, n_jobs=4)
# Cluster around seeds whose radius falls in the bottom quartile
import numpy as np
threshold = float(np.percentile(radii, 25))
meta = td.find_metaclonotypes(rep, max_distance=threshold, n_jobs=4)
Performance (Apple M3, TRB, fixed_gaps=(3,4,-4,-3), n_jobs=1):
28 M pairs/s at 1K–5K scale; ~76 M pairs/s with n_jobs=8.
See notebooks/tcrdist_analysis.ipynb for an influenza GILGFVFTL worked example.
CDR3 Motif Logos
mir.biomarkers.motif_logo builds IC and selection sequence logos for
CDR3 motifs, following Pogorelyy et al. 2019 (PMID:31194732). The key
idea is to subtract an OLGA-derived background for the same V-gene / J-gene /
CDR3-length bin, which collapses the germline signal and reveals only the
antigen-driven component.
from mir.biomarkers.motif_logo import (
compute_pwm, compute_logo, get_vj_background,
build_terminal_anchored_pwm, load_motif_pwms, plot_logo,
)
motif_pwms = load_motif_pwms("motif_pwms.txt.gz") # OLGA backgrounds
seqs = ["CASSGRSYEQYF", "CASSGRTNEQYF", ...] # CDR3 sequences
bg = get_vj_background(
motif_pwms, v_call="TRBV19*01", j_call="TRBJ2-7*01",
length=13, species="HomoSapiens", gene="TRB",
)
pwm = compute_pwm(seqs)
logo = compute_logo(pwm, background=bg) # adds ic_height + bg_height columns
fig, ax = plt.subplots()
plot_logo(logo, ax, height_col="bg_height") # selection logo
For CDR3s of mixed lengths (different J-genes), use the terminal-anchored logo which anchors V-side and J-side blocks independently:
ta_pwm = build_terminal_anchored_pwm(seqs, n_term=8, c_term=7)
ta_logo = compute_logo(ta_pwm, background=bg)
For automated per-VJ-len logos from ALICE/TCRNET hit DataFrames use
build_motif_logos_vj. Background data (motif_pwms.txt.gz) is fetched
automatically by the notebook bootstrap helpers in mir.utils.notebook_assets.
See notebooks/motif_logos.ipynb for GILGFVFTL (Influenza A) and HLA-B27 AS
worked examples.
Clonotype Association Scan
mir.biomarkers.associations provides direct clonotype-to-metadata association
analysis for sample cohorts, including binary/multiclass labels, paired
clonotype support, and co-occurrence tests.
from mir.biomarkers.associations import (
AssociationParams,
associate_clonotype_metadata,
build_public_clonotype_panel,
)
# build candidate targets from public clonotypes in the cohort
targets = build_public_clonotype_panel(samples, locus="TRB", min_sample_fraction=0.03)
# sample-level Fisher test (auto-selects Fisher for binary labels)
res = associate_clonotype_metadata(
samples,
targets,
metadata_field="COVID_status",
metadata_value=["COVID", "healthy"],
params=AssociationParams(count_mode="sample", test="auto"),
)
# depth-aware mode (GLM with depth covariate) for uneven sequencing depth
res_depth = associate_clonotype_metadata(
samples,
targets,
metadata_field="COVID_status",
metadata_value=["COVID", "healthy"],
params=AssociationParams(count_mode="rearrangement", test="depth_glm"),
)
Returned table fields include per-group detected/background counts, p-values, BH-adjusted q-values, and odds-ratio estimates. Depth-aware mode reports a depth-adjusted group effect and falls back to table tests if GLM assumptions are not satisfied.
For an end-to-end COVID biomarker workflow (functional filtering, first-pass
batch correction, re-normalization, Fisher + depth-aware scans, and reference
concordance checks), see notebooks/covid19_biomarkers.ipynb and
tests/test_associations_covid19_benchmark.py.
ALICE and TCRNET
Both modules detect antigen-driven CDR3 clusters, but differ in how they model the background:
| Feature | ALICE | TCRNET |
|---|---|---|
| Background model | OLGA Pgen (analytical or MC pool) | Any MC control — real or synthetic |
| Pgen calls | OLGA 1mm Pgen (10M pool + fallback) | None |
| V/J restriction | match_mode="vj" (default) |
match_mode="none" (default) |
| Statistics | Poisson | Binomial / Beta-Binomial |
| Selection correction | q_factor |
q_factor (needed for synthetic controls) |
ALICE (mir.biomarkers.alice) implements the Pogorelyy et al. 2019
(PMID:31194732) Poisson enrichment test. Default is match_mode="vj" with
OLGA gene-usage conditioning: N and pgen are scaled by P_OLGA(V,J) so
that λ = N_total × pgen regardless of gene restriction, while the observed
count k is V/J-filtered. Uses a 10 M-sequence MC pool by default (the
paper uses 100 M, which requires ~17 GB; set mc_n_pool=100_000_000 if memory
allows) with fallback to OLGA analytical 1mm Pgen for rare sequences.
V/J-restricted neighbour counting uses a grouped-trie strategy: one small
trie per (V, J) gene group. This makes match_mode="vj" 1.5–2× faster
than match_mode="none" on natural repertoires (benchmark: 300 K sequences,
8 workers — unrestricted 9.9 s, V+J restricted 5.5 s).
TCRNET (mir.biomarkers.tcrnet) is a purely MC-control algorithm
(Lupyr et al. 2025, Brief. Bioinform., PMID:40996146).
When used with a real control it captures V/J bias automatically. Pass
q_factor ≈ 3–5 when using a synthetic OLGA pool to correct for the
pre-thymic selection deficit. TCRNET with a 100 M synthetic pool,
match_mode="vj", and q_factor=Q is statistically equivalent to the
original ALICE paper.
Prototype-based embeddings with TCREmp
TCREmp embeds immune receptor clonotypes as distance vectors to a fixed set
of prototype clonotypes, enabling rapid downstream analysis, dimensionality
reduction, and machine learning
(Kremlyakova et al. 2025, J. Mol. Biol., PMID:40368275).
Gene input robustness: allele suffixes are optional for v_call / j_call in
embedding input. Missing suffixes are normalized to *01 before matrix lookup
so TRBV5-1 behaves like TRBV5-1*01.
from mir.embedding.tcremp import TCREmp
from mir.common.clonotype import Clonotype
model = TCREmp.from_defaults("human", "TRB", n_prototypes=1000, junction_method="fixed_gap")
clonotypes = [
Clonotype(v_call="TRBV10-3*01", j_call="TRBJ2-7*01", junction_aa="CASSIRSSYEQYF"),
Clonotype(v_call="TRBV20-1*01", j_call="TRBJ1-1*01", junction_aa="CSARDSSYEQYF"),
]
X = model.embed(clonotypes) # shape (2, 3000) — float32 array
Column layout: [v_1, j_1, junc_1, v_2, j_2, junc_2, …, v_K, j_K, junc_K]
where each distance uses d(a, b) = s(a,a) + s(b,b) − 2·s(a,b).
For full DP alignment use junction_method="biopython" (~383× slower).
For custom prototypes use TCREmp.from_file("prototypes.tsv", ...).
Paired-chain embedding concatenates TRA and TRB embeddings per PairedClonotype:
from mir.embedding.tcremp import PairedTCREmp
paired_model = PairedTCREmp.from_defaults("human", "TRA_TRB", n_prototypes=500)
X_pair = paired_model.embed(paired_clonotypes)
n_jobs behaviour:
n_jobs=None(default): auto-select based onlen(clonotypes) × n_prototypes.n_jobs=1: force serial.n_jobs>1: force explicit worker count.
Mask and match sequences
from mir.basic.alphabets import (
aa_to_reduced, mask, matches, matches_aa_reduced, NT_MASK, AA_MASK,
)
nt_masked = mask("ATCGAT", (2, 5), NT_MASK)
assert nt_masked == b"ATNNNT"
aa = "CASTIV"
reduced = aa_to_reduced(aa)
# Matching ignores mask symbols: N (nucleotide) or X (amino acid)
assert matches(mask(aa, 0, AA_MASK), aa, AA_MASK)
assert matches_aa_reduced(aa, mask(reduced, 3, AA_MASK))
COVID-19 TCR Biomarker Notebooks
Three companion notebooks replicate and extend the findings of Vlasova et al. (2026) Genome Med. DOI:10.1186/s13073-025-01589-4 using 1 137 paired AIRR donors (761 COVID-19 / 376 healthy).
covid19_biomarkers.ipynb — Global Fisher scan and SVM classifier
- Public CDR3 panel: 4 093 TRB + 4 TRA candidates (≥ 5 % prevalence).
- 39 TRB + 4 TRA CDR3s reach FDR < 0.05 (BH, one-sided Fisher); all TRB hits are healthy-enriched (public clonotype dilution by SARS-specific expansion), all TRA hits are COVID-enriched.
- SVM classifier (RBF kernel, log-frequency features, 5-fold CV): AUC ≈ 0.70, replicating the paper's reported performance.
covid19_hla_biomarkers.ipynb — HLA × TCR stratification
- HLA allele–stratified sub-cohort Fisher tests (DRB1*16: n = 76, DQB1*05: n = 352).
- Focused TRBV12-3/CASS replication test (1 297 pre-specified candidates,
BH FDR within this set):
- CASSRTGTGSSYNSPLHF (TRBV12-3) — 26 COVID / 0 healthy DRB1*16 donors, log₂FE = 4.38, FDR = 0.035.
- 8 additional TRBV12-3 CDR3s with nc ≥ 5 / nh = 0.
- Global HLA × CDR3 scan (83 alleles × 43 significant CDR3s): CAGQLYGGSQGNLIF depleted in HLA-DPB1*02:01 donors (log₂FE = −1.51, q = 0.003).
covid19_pairing_biomarkers.ipynb — TRA × TRB co-occurrence and VDJdb overlap
- 156 TRA × TRB biomarker pairs tested (4 COVID-enriched TRA × 39 healthy-enriched TRB) across all-donor, COVID-only, and healthy-only strata.
- One significant negative co-occurrence in all donors: CALSEETSGSRLTF × CASSLGGGDTQYF (q = 0.027).
- Healthy-only positive co-occurrence: CAGQNYGGSQGNLIF with CASSLGETQYF (q = 0.001) and CASSPSTDTQYF (q = 0.013).
- VDJdb 2025-12 cross-validation (Hamming ≤ 1, V-gene fixed): 3 / 4 TRA CDR3s confirmed as SARS-CoV-2-specific; 2 (CAGQNYGGSQGNLIF, CAGQLYGGSQGNLIF) target the Spike epitope NCTFEYVSQPFLMDL via TRAV35*01 under HLA-DRB1*04:05 (class II); 15 / 39 TRB CDR3s match VDJdb records.
Copilot Agent Workflow
This repository ships a dedicated Copilot custom agent and companion prompt:
- Agent:
.github/agents/mirpy-analysis.agent.md - Companion prompt:
.github/prompts/mirpy-analysis.prompt.md
Use /mirpy-analysis from chat to supply input data paths, optional metadata
schema, and workflow definition. The agent creates dedicated notebooks,
installs/validates dependencies, executes cells sequentially, and reports
outcomes. For large datasets it benchmarks small chunks first and asks before
any run expected to exceed ~10–15 min on 4–8 cores or ~12–16 GB RAM.
Resources
- Example notebooks: notebooks/
- API reference: https://antigenomics.github.io/mirpy/modules.html
- Notebook gallery: https://antigenomics.github.io/mirpy/examples.html
- Docs source: docs/
- Agent skill guide (Claude, GitHub Copilot): skills/mirpy/SKILL.md
- Benchmark baselines: benchmarks.md
Skill packaging note: skills/mirpy/ is the single source of truth for agent skills.
The mirpy install skills CLI command installs from this directory.
Editable installs (git clone + ./setup.sh) are required for mirpy install skills to work.
References
If you use mirpy in your work, please cite the relevant methods:
| Method / data | Citation |
|---|---|
| VDJtools diversity metrics | Shugay M et al. (2015) PLoS Comput. Biol. PMID:26606115 |
| ALICE enrichment | Pogorelyy MV et al. (2019) PLoS Biol. PMID:31194732 |
| TCRNET neighbourhood enrichment | Lupyr KR et al. (2025) Brief. Bioinform. PMID:40996146 |
| TCREmp prototype embeddings | Kremlyakova Y et al. (2025) J. Mol. Biol. PMID:40368275 |
| VDJdb antigen-specific TCR database | Shugay M et al. (2018) Nucleic Acids Res. PMID:28977646 |
| VDJdb SARS-CoV-2 update | Goncharov M et al. (2022) Nat. Methods PMID:35970936 |
| Antigen-specificity annotation framework | Pogorelyy MV & Shugay M (2019) Front. Immunol. PMID:31616409 |
| TCRdist (V-gene + CDR3 distance) | Dash P et al. (2017) Nature PMID:28636592 |
| CDR3 motif logos / selection logos | Pogorelyy MV et al. (2019) PLoS Biol. PMID:31194732 |
| T cell repertoire aging dynamics | Britanova OV et al. (2016) J. Immunol. PMID:27183615 |
| Pre-immune antigen-specific landscape | Pogorelyy MV et al. (2018) Genome Med. PMID:30144804 |
| COVID-19 TCR biomarker SVM classifier | Vlasova EK et al. (2026) Genome Med. DOI:10.1186/s13073-025-01589-4 |
Project status
The library is actively evolving. Some modules are more mature than others, and parts of the public API may still change.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mirpy_lib-1.3.0b0.tar.gz.
File metadata
- Download URL: mirpy_lib-1.3.0b0.tar.gz
- Upload date:
- Size: 2.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75cd06e34ac774ae11390b4925c662d65c8cc794f5fec66600ef4959a76497d3
|
|
| MD5 |
a2b73afa96680a8d1d95bdd69d1b8e2f
|
|
| BLAKE2b-256 |
bd0b587ff3d88dbbb22730d74d3dc56a1fc5a56b52876edb162abee0f0be8351
|
Provenance
The following attestation bundles were made for mirpy_lib-1.3.0b0.tar.gz:
Publisher:
publish.yml on antigenomics/mirpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mirpy_lib-1.3.0b0.tar.gz -
Subject digest:
75cd06e34ac774ae11390b4925c662d65c8cc794f5fec66600ef4959a76497d3 - Sigstore transparency entry: 1898197641
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@1b00e7d2d720373bbd09374649d332f4241588b7 -
Branch / Tag:
refs/tags/v1.3.0b0 - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1b00e7d2d720373bbd09374649d332f4241588b7 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mirpy_lib-1.3.0b0-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: mirpy_lib-1.3.0b0-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c0f39c9bec46bdf8da0859bc13c437bb8f18f6abfceb0f9bef0141fda72fb98
|
|
| MD5 |
57bfb9616de3a834e96e1e0c86a98048
|
|
| BLAKE2b-256 |
bab275c0cad0f1226f8537adad7c7e653236a1da7a6fb815f734cae08bd110d1
|
Provenance
The following attestation bundles were made for mirpy_lib-1.3.0b0-cp313-cp313-win_amd64.whl:
Publisher:
publish.yml on antigenomics/mirpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mirpy_lib-1.3.0b0-cp313-cp313-win_amd64.whl -
Subject digest:
7c0f39c9bec46bdf8da0859bc13c437bb8f18f6abfceb0f9bef0141fda72fb98 - Sigstore transparency entry: 1898197904
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@1b00e7d2d720373bbd09374649d332f4241588b7 -
Branch / Tag:
refs/tags/v1.3.0b0 - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1b00e7d2d720373bbd09374649d332f4241588b7 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mirpy_lib-1.3.0b0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: mirpy_lib-1.3.0b0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47e98fb7b3b0c294af72930b475c133b2f684f7cf7bc89282156824effbc4390
|
|
| MD5 |
ead1c905f01082b7ed01423056ed17c8
|
|
| BLAKE2b-256 |
426d79430ed8a18fcf4e9c8e97b67f100f324591f4f7d54d50431c016866dee4
|
Provenance
The following attestation bundles were made for mirpy_lib-1.3.0b0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
publish.yml on antigenomics/mirpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mirpy_lib-1.3.0b0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
47e98fb7b3b0c294af72930b475c133b2f684f7cf7bc89282156824effbc4390 - Sigstore transparency entry: 1898199287
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@1b00e7d2d720373bbd09374649d332f4241588b7 -
Branch / Tag:
refs/tags/v1.3.0b0 - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1b00e7d2d720373bbd09374649d332f4241588b7 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mirpy_lib-1.3.0b0-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: mirpy_lib-1.3.0b0-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54014e848f2cfba689055363ff144ca2df4e007cda20f18f245a1332f3e13fa9
|
|
| MD5 |
d962c467e066ad97a0d39e73a8adfbd4
|
|
| BLAKE2b-256 |
db622e6e6b6eac857e94b01b9b5a7648acc2fc53e2954c87d61584c435f462f2
|
Provenance
The following attestation bundles were made for mirpy_lib-1.3.0b0-cp313-cp313-macosx_11_0_arm64.whl:
Publisher:
publish.yml on antigenomics/mirpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mirpy_lib-1.3.0b0-cp313-cp313-macosx_11_0_arm64.whl -
Subject digest:
54014e848f2cfba689055363ff144ca2df4e007cda20f18f245a1332f3e13fa9 - Sigstore transparency entry: 1898199090
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@1b00e7d2d720373bbd09374649d332f4241588b7 -
Branch / Tag:
refs/tags/v1.3.0b0 - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1b00e7d2d720373bbd09374649d332f4241588b7 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mirpy_lib-1.3.0b0-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: mirpy_lib-1.3.0b0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
107988c42a7168af03ef189c2b0b91d3b98a8f76bfed7962b2d4d88b468e54cd
|
|
| MD5 |
769e82bd884d1fe04fe56128a0b6f56a
|
|
| BLAKE2b-256 |
62f030eb5030e1a8d873f77b825ff7adb15d0c55ac7e102d571c1b521805218c
|
Provenance
The following attestation bundles were made for mirpy_lib-1.3.0b0-cp312-cp312-win_amd64.whl:
Publisher:
publish.yml on antigenomics/mirpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mirpy_lib-1.3.0b0-cp312-cp312-win_amd64.whl -
Subject digest:
107988c42a7168af03ef189c2b0b91d3b98a8f76bfed7962b2d4d88b468e54cd - Sigstore transparency entry: 1898198082
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@1b00e7d2d720373bbd09374649d332f4241588b7 -
Branch / Tag:
refs/tags/v1.3.0b0 - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1b00e7d2d720373bbd09374649d332f4241588b7 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mirpy_lib-1.3.0b0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: mirpy_lib-1.3.0b0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c6016f881872536b6b9ac9e4cb699d69d7a011378516f4e1c07c0f415e879f0
|
|
| MD5 |
aba555b6c76b230ca0b610f8f31a2141
|
|
| BLAKE2b-256 |
a22f1974e267fe582b870eeec0453d988abb97b6caac59792b9cef6bcc9d43e6
|
Provenance
The following attestation bundles were made for mirpy_lib-1.3.0b0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
publish.yml on antigenomics/mirpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mirpy_lib-1.3.0b0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
5c6016f881872536b6b9ac9e4cb699d69d7a011378516f4e1c07c0f415e879f0 - Sigstore transparency entry: 1898198680
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@1b00e7d2d720373bbd09374649d332f4241588b7 -
Branch / Tag:
refs/tags/v1.3.0b0 - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1b00e7d2d720373bbd09374649d332f4241588b7 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mirpy_lib-1.3.0b0-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: mirpy_lib-1.3.0b0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
131ad198fe30332b11fcbd60969391c552b8827e5ba07ab9c535e330f845f25b
|
|
| MD5 |
9550428da67e600ff078df65700d4cfb
|
|
| BLAKE2b-256 |
c6f4c8ab07580992b885f6fab8d8a57b623be2479ec062d17de4db71c906109b
|
Provenance
The following attestation bundles were made for mirpy_lib-1.3.0b0-cp312-cp312-macosx_11_0_arm64.whl:
Publisher:
publish.yml on antigenomics/mirpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mirpy_lib-1.3.0b0-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
131ad198fe30332b11fcbd60969391c552b8827e5ba07ab9c535e330f845f25b - Sigstore transparency entry: 1898198320
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@1b00e7d2d720373bbd09374649d332f4241588b7 -
Branch / Tag:
refs/tags/v1.3.0b0 - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1b00e7d2d720373bbd09374649d332f4241588b7 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mirpy_lib-1.3.0b0-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: mirpy_lib-1.3.0b0-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
647ae07b692b5d6822833cef4cc6ff3f1007139a518d02dbafa9d15e5484dd11
|
|
| MD5 |
325fc862bf11df6962524d8dc27a7773
|
|
| BLAKE2b-256 |
decb3e26cef9cb39c0aead69197619095ae7d3a07ef9ec56a8af5c2a02e21678
|
Provenance
The following attestation bundles were made for mirpy_lib-1.3.0b0-cp311-cp311-win_amd64.whl:
Publisher:
publish.yml on antigenomics/mirpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mirpy_lib-1.3.0b0-cp311-cp311-win_amd64.whl -
Subject digest:
647ae07b692b5d6822833cef4cc6ff3f1007139a518d02dbafa9d15e5484dd11 - Sigstore transparency entry: 1898198850
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@1b00e7d2d720373bbd09374649d332f4241588b7 -
Branch / Tag:
refs/tags/v1.3.0b0 - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1b00e7d2d720373bbd09374649d332f4241588b7 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mirpy_lib-1.3.0b0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: mirpy_lib-1.3.0b0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d8b32e006f31d65965cb95ac45b6d1d66b8c8b61f1d40c241a24e0bb3ac4d66
|
|
| MD5 |
24ae838c715b1bcc65bc883e9c92f9e7
|
|
| BLAKE2b-256 |
e38f4bf4f5a5dc67fda7cd928eb460e9ba55e5cf9914b52186106f2b11291a24
|
Provenance
The following attestation bundles were made for mirpy_lib-1.3.0b0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
publish.yml on antigenomics/mirpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mirpy_lib-1.3.0b0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
5d8b32e006f31d65965cb95ac45b6d1d66b8c8b61f1d40c241a24e0bb3ac4d66 - Sigstore transparency entry: 1898197748
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@1b00e7d2d720373bbd09374649d332f4241588b7 -
Branch / Tag:
refs/tags/v1.3.0b0 - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1b00e7d2d720373bbd09374649d332f4241588b7 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mirpy_lib-1.3.0b0-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: mirpy_lib-1.3.0b0-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21e19d1c6f141ea5097b9b62d782c2b66d09096483187fca09d8cb0a26c52847
|
|
| MD5 |
f4859ae8c9bea74b59d281d9a99b09fb
|
|
| BLAKE2b-256 |
5171db5c2745c3cc86efa7bd07e2a869d56693da4512b91d3013c350388a7a75
|
Provenance
The following attestation bundles were made for mirpy_lib-1.3.0b0-cp311-cp311-macosx_11_0_arm64.whl:
Publisher:
publish.yml on antigenomics/mirpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mirpy_lib-1.3.0b0-cp311-cp311-macosx_11_0_arm64.whl -
Subject digest:
21e19d1c6f141ea5097b9b62d782c2b66d09096483187fca09d8cb0a26c52847 - Sigstore transparency entry: 1898198492
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@1b00e7d2d720373bbd09374649d332f4241588b7 -
Branch / Tag:
refs/tags/v1.3.0b0 - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1b00e7d2d720373bbd09374649d332f4241588b7 -
Trigger Event:
release
-
Statement type: