A library for managing and analyzing immunosequencing data
Project description
mirpy
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
- 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):
git clone https://github.com/antigenomics/mirpy.git
cd mirpy
./setup.sh
setup.sh already installs mirpy in editable mode.
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 |
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, 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.
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.
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_gene="TRBV19*01", j_gene="TRBJ2-7*01", junction_aa="CASSIRSSYEQYF")
cln2 = Clonotype(v_gene="TRBV19*01", j_gene="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_gene="TRBV19*01", j_gene="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.
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.
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.
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_gene="TRBV10-3*01", j_gene="TRBJ2-7*01", junction_aa="CASSIRSSYEQYF"),
Clonotype(v_gene="TRBV20-1*01", j_gene="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))
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
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.1.1.tar.gz.
File metadata
- Download URL: mirpy_lib-1.1.1.tar.gz
- Upload date:
- Size: 8.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03cf3f48734d12e2ec8b4cdb6acef71950082782444552d235f3142a3f50a30a
|
|
| MD5 |
55d00db82a2fd59815b6805906babec6
|
|
| BLAKE2b-256 |
1692a96e6723fc468992b65934305719f916d446121864dffe932cf27c241b71
|
Provenance
The following attestation bundles were made for mirpy_lib-1.1.1.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.1.1.tar.gz -
Subject digest:
03cf3f48734d12e2ec8b4cdb6acef71950082782444552d235f3142a3f50a30a - Sigstore transparency entry: 1633818183
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Branch / Tag:
refs/heads/main - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file mirpy_lib-1.1.1-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: mirpy_lib-1.1.1-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 1.5 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 |
11d1fe53b20ba196fc4d982d192fab715ddc54a8f67cf9a707e29a7138cecb30
|
|
| MD5 |
88b3f6b43391aaa3b2c72352f8c450c7
|
|
| BLAKE2b-256 |
b4c1ae7ffbe4881ff151246c246335b1f3e035d8b9605c37932e897916b4c3d9
|
Provenance
The following attestation bundles were made for mirpy_lib-1.1.1-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.1.1-cp313-cp313-win_amd64.whl -
Subject digest:
11d1fe53b20ba196fc4d982d192fab715ddc54a8f67cf9a707e29a7138cecb30 - Sigstore transparency entry: 1633818281
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Branch / Tag:
refs/heads/main - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file mirpy_lib-1.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: mirpy_lib-1.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.5 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 |
d65d96d27434b61ae50f7ff9dc1e6f9cd191cc26a345ff65afde874a8870a1e8
|
|
| MD5 |
c5be3229a0870f1446c177f6eb8b0858
|
|
| BLAKE2b-256 |
938093cf5d4a4a88ef89404bd14f1838944b87c376b39fd8f035c1ab3cbdf6f9
|
Provenance
The following attestation bundles were made for mirpy_lib-1.1.1-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.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
d65d96d27434b61ae50f7ff9dc1e6f9cd191cc26a345ff65afde874a8870a1e8 - Sigstore transparency entry: 1633818300
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Branch / Tag:
refs/heads/main - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file mirpy_lib-1.1.1-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: mirpy_lib-1.1.1-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 |
cf6a60356b864f1df5a4e1eb68efc4e984f1cb404e703920cce0f7fa9aa3f7c3
|
|
| MD5 |
11c4113c6d592d4d2a67c47e325c1bfa
|
|
| BLAKE2b-256 |
5fd3e763c5646592c3bee224de653f5f507b0b3c22b1ca487f79f5202e6c4dd8
|
Provenance
The following attestation bundles were made for mirpy_lib-1.1.1-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.1.1-cp313-cp313-macosx_11_0_arm64.whl -
Subject digest:
cf6a60356b864f1df5a4e1eb68efc4e984f1cb404e703920cce0f7fa9aa3f7c3 - Sigstore transparency entry: 1633818217
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Branch / Tag:
refs/heads/main - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file mirpy_lib-1.1.1-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: mirpy_lib-1.1.1-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 1.5 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 |
ef12cd5793c3fc557c06f72d1098c01481f35dbd2d1eee4cd1f4328b1c7c9675
|
|
| MD5 |
6581c44c5d8cd695258eb61ff6d89f0a
|
|
| BLAKE2b-256 |
1cebc54454f19223ad4bb9b996b047ef0d1563b327086e5c0538ffa799bb9c34
|
Provenance
The following attestation bundles were made for mirpy_lib-1.1.1-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.1.1-cp312-cp312-win_amd64.whl -
Subject digest:
ef12cd5793c3fc557c06f72d1098c01481f35dbd2d1eee4cd1f4328b1c7c9675 - Sigstore transparency entry: 1633818201
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Branch / Tag:
refs/heads/main - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file mirpy_lib-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: mirpy_lib-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.5 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 |
155aa1d613ed848d95ff84e1812154c19e284d068bc3c6b1f6b577442656d5d6
|
|
| MD5 |
b4316ae7d4ddd94ae065909c67fac1f3
|
|
| BLAKE2b-256 |
8ed69272134173e06a1ae849e4de6283e056f2b2cf1f8cfce997b4ff93458882
|
Provenance
The following attestation bundles were made for mirpy_lib-1.1.1-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.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
155aa1d613ed848d95ff84e1812154c19e284d068bc3c6b1f6b577442656d5d6 - Sigstore transparency entry: 1633818239
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Branch / Tag:
refs/heads/main - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file mirpy_lib-1.1.1-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: mirpy_lib-1.1.1-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 |
722e6f47c06e6189abd7f6319b43e12c63f55773a766722ff59bbc69af95469e
|
|
| MD5 |
adc5a3de020a6b5fe560a22590b714c6
|
|
| BLAKE2b-256 |
ce5afc87c6f7708ecfb89aedaaf27156897d25dc79e00175b6ed839e24a3dabc
|
Provenance
The following attestation bundles were made for mirpy_lib-1.1.1-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.1.1-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
722e6f47c06e6189abd7f6319b43e12c63f55773a766722ff59bbc69af95469e - Sigstore transparency entry: 1633818353
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Branch / Tag:
refs/heads/main - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file mirpy_lib-1.1.1-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: mirpy_lib-1.1.1-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 1.5 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 |
e70f21c84e6137b3b8cdeebb54cf7cc0d1afaa8d8316b8102a8e46536b9e500b
|
|
| MD5 |
3cc115e83e6c6a177e24a5545b629b63
|
|
| BLAKE2b-256 |
6cc9fcfb631e4e08d31af8c6c1d812c1194692da00cba47151a3b9853d0a98de
|
Provenance
The following attestation bundles were made for mirpy_lib-1.1.1-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.1.1-cp311-cp311-win_amd64.whl -
Subject digest:
e70f21c84e6137b3b8cdeebb54cf7cc0d1afaa8d8316b8102a8e46536b9e500b - Sigstore transparency entry: 1633818319
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Branch / Tag:
refs/heads/main - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file mirpy_lib-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: mirpy_lib-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.5 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 |
af36851074995dac5ddb54694d7725d5f40e60dc3cfc1a9c9c6968c56465c03a
|
|
| MD5 |
ce21be46c833ac7722ffdd975e51f853
|
|
| BLAKE2b-256 |
6e1a997284056ab3df53279ff979404f6c3b7bb6271e9531bcb379c74d2e6d60
|
Provenance
The following attestation bundles were made for mirpy_lib-1.1.1-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.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
af36851074995dac5ddb54694d7725d5f40e60dc3cfc1a9c9c6968c56465c03a - Sigstore transparency entry: 1633818336
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Branch / Tag:
refs/heads/main - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file mirpy_lib-1.1.1-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: mirpy_lib-1.1.1-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 |
d7d67958832eda97b959e5c07009f2d7d0ca3c61dc52cebd36a1b074fd7e6a4d
|
|
| MD5 |
a4623b546053e7a7a82766bb269c2780
|
|
| BLAKE2b-256 |
048ed9f3afcd169d160bb5364e23c1943f169ee7a431c312f67467dcaee4252a
|
Provenance
The following attestation bundles were made for mirpy_lib-1.1.1-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.1.1-cp311-cp311-macosx_11_0_arm64.whl -
Subject digest:
d7d67958832eda97b959e5c07009f2d7d0ca3c61dc52cebd36a1b074fd7e6a4d - Sigstore transparency entry: 1633818268
- Sigstore integration time:
-
Permalink:
antigenomics/mirpy@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Branch / Tag:
refs/heads/main - Owner: https://github.com/antigenomics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@01eb78139fe3d638ae8128a38f5992fc02e91ada -
Trigger Event:
workflow_dispatch
-
Statement type: