Skip to main content

arda

arda — Antigen Receptor Domain Annotation

PyPI CI docs python license

Quickstart · Documentation · Commands · Output reference · Benchmarks


arda annotates T and B cell receptor sequences. Give it sequencing reads — bulk RNA-seq, targeted amplicon or single cell — and it returns AIRR Rearrangement records with V/D/J/C gene calls, FR1–FR4 and CDR1–CDR3 coordinates and the junction, plus a clonotype table. One command, no workflow engine, no container.

It works on nucleotide and amino-acid input, on FASTA and FASTQ, across all loci in one pass, for human and mouse (full IG + TR) and for rat, rabbit and rhesus macaque (IG only — IMGT ships no TR reference for those three). It also annotates records with no read behind them — a CDR3 amino acid plus a V and J call, as in a VDJdb row — marking up which residues each germline templates, repairing the junction, and inferring the D gene from junction length.

Install

pip install arda-mapper

That is all. The distribution is arda-mapper and imports as arda; binary wheels carry its C++ extensions for CPython 3.10–3.13 on Linux, macOS (arm64) and Windows. The MMseqs2 search binary and the curated germline reference are fetched automatically on first use into ~/.cache/arda — no conda, no manual reference build. Run arda info to see what got resolved.

For a development checkout, bash setup.sh builds a uv venv, compiles the extensions and fetches IgBLAST and MMseqs2. See the installation guide.

Quick start

Pick the mode that matches your library. The mode name carries that library's speed configuration, so there are no flags to get right:

arda rnaseq   --r1 R1.fq.gz --r2 R2.fq.gz -p SAMPLE -d out/   # bulk / whole-transcriptome
arda amplicon --r1 R1.fq.gz --r2 R2.fq.gz -p SAMPLE -d out/   # targeted RepSeq / 5'RACE
arda cells    asm/PBMC.consensus.fq.gz -p out/PBMC            # single cell, from UMI consensus

Each mode runs mapping → assembly → error correction and writes:

file contents
SAMPLE.clones.tsv one row per clonotype — the table most analyses start from
SAMPLE.airr.tsv one AIRR Rearrangement row per mapped read
SAMPLE.arda.json run report: reads in, reads mapped, why the rest were not, wall time, peak RSS
SAMPLE.stats.tsv run QC in long format, for per-sample and cohort checks

Progress goes to stderr; the output paths, one per line, to stdout.

Already have assembled sequences? Skip the pipeline:

arda annotate -i sequences.fasta -o out.airr.tsv --organism human

Full walkthrough with real output: Quickstart.

Why arda

IgBLAST-quality regions, without IgBLAST at runtime. arda does the expensive work once, offline, building a reference of every in-frame V·J germline scaffold already annotated by IgBLAST. At runtime it maps a query to that reference with MMseqs2 and projects the markup through the alignment in C++. Region concordance with IgBLAST is 98–99.7 % on ~7,300 real GenBank mRNA records across five organisms. IgBLAST is needed only to rebuild the reference.

Precise on bulk RNA-seq. Over 16 datasets where every compared tool ran (5,273 real fragments, Wilson 95 % CIs): recall 0.986 [.982–.989], precision lower bound 0.889 [.881–.897]. Recall ties TRUST4; precision does not — arda's lower bound sits above every competitor's upper bound.

Cheap, not only fast. Mapping holds a flat 300–650 MB at any read depth, which is what lets many samples share a node. On a 100,000-read TRA amplicon arda uses 3.2× less peak memory and 1.4× less CPU than MiXCR, and returns the most clonotypes over the most reads.

It declines rather than guessing. A D call carries the E-value it was accepted on. A junction whose Cys104 anchor is not in the read is not emitted. A germline with no derivable anchor is flagged, not invented. A j_call requires J evidence rather than inheriting it from the scaffold.

Embeddable and scriptable. import arda; arda.annotate_sequences(...) returns AIRR record dicts — no subprocess, no temp files. The CLI is plain files in, plain files out, so it drops into any workflow engine; the same sample sheet drives the CLI, a SLURM array, the Nextflow module and the Snakemake workflow, and a sharded run is byte-identical to a single-node one.

Every figure above is measured. Methods, repetition spread, and what each comparison is and is not entitled to claim: Benchmarks.

Documentation

Quickstart Install, run a library, read the table that comes out
Choosing a mode Bulk, amplicon or single cell, and what each writes
Output reference Every file a run produces, and every column in it
Command reference All 22 commands, grouped by task
Recipes Copy-paste shell and polars snippets for post-run analysis
Use cases Monoclonal QC, low-frequency variants, SHM, tool comparisons
Single cell Reference-free per-cell contigs, chain pairing, doublets
Quality control Per-sample metrics, cohort roll-up, the HTML dashboard
At scale SLURM sharding, sample sheets, Nextflow and Snakemake
How it works The offline reference, the runtime path, the C++ extensions
Background Error correction, SHM, D segments, productivity, genotypes, recombination models
Glossary Junction vs CDR3, scaffold, read group, regime, and the rest
API The Python library

From Python

import arda

records = arda.annotate_sequences(
    ["GACGTGCAG...", ("clone7", "CAGGTG...")],   # strings or (id, seq) pairs
    seqtype="nt", organism="human",
)

Each record is a dict of AIRR fields — v_call, d_call/d2_call, j_call, c_call/c_class, fwr1–fwr4, cdr1–cdr3 with 1-based closed *_start/*_end and *_aa, junction(_aa), np1–np3, d_support, the per-segment CIGARs, v_mutations/j_mutations, productive, and more. The TSV form passes airr.schema validation.

Reading arda's output — note that quoting is off, both when writing and when reading:

import polars as pl

clones = pl.read_csv("out/SAMPLE.clones.tsv", separator="\t", quote_char=None)
top = (clones.filter(pl.col("locus") == "TRB")
       .with_columns((pl.col("duplicate_count") / pl.col("duplicate_count").sum()).alias("frequency"))
       .sort("duplicate_count", descending=True))

Examples

examples/ is a runnable tour, every artifact derived from real data committed to this repository and regenerated by python examples/regenerate.py: one real mRNA per locus; the two human reads (of 7,341, across five organisms) carrying a tandem D-D; seven VDJdb records covering every junction-repair outcome; and a 1,035-read FASTQ that runs the whole bulk RNA-seq pipeline in about six seconds.

Development

bash setup.sh                                         # uv venv, C++ extensions, IgBLAST, mmseqs
source .venv/bin/activate

python -m pytest tests/unit tests/synthetic tests/realworld -q   # the CI gate
ruff check src/
make -C docs html                                                # zero warnings required

tests/realworld compares against IgBLAST on committed fixtures and runs offline. tests/benchmark is opt-in with RUN_BENCHMARK=1. Install -e '.[test]' before reading a green suite as full coverage — optional extras gate optional suites.

Layout: the package is src/arda/ (cli.py, annotate/, rnaseq/, refbuild/), the four nanobind C++ extensions are src/_markup/, src/_prefilter/, src/_segmap/, src/_denoise/, the committed references are in database/, and integrations/ holds the Nextflow module and Snakemake workflow. Contributor guidance is in CLAUDE.md; design records are in project/; planned work is in ROADMAP.md; data provenance is in SOURCES.md; per-release changes are in CHANGELOG.md.

arda is part of the antigenomics stack and stays deliberately inside annotation. Repertoire biology — diversity, clonality, rarefaction, overlap, cross-sample clonotype matching — belongs to vdjtools, which takes arda-mapper as a dependency.

License

GPLv3. See LICENSE.

Metadata

Release files for arda-mapper 2.36.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for arda-mapper 2.36.1
File Size Uploaded
arda_mapper-2.36.1.tar.gz 9.9 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for arda-mapper 2.36.1
File
arda_mapper-2.36.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
arda_mapper-2.36.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
arda_mapper-2.36.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
arda_mapper-2.36.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
arda_mapper-2.36.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
arda_mapper-2.36.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
arda_mapper-2.36.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
arda_mapper-2.36.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
arda_mapper-2.36.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
arda_mapper-2.36.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
arda_mapper-2.36.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
arda_mapper-2.36.1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 18.0 MB

Release files / arda_mapper-2.36.1.tar.gz

Download URL arda_mapper-2.36.1.tar.gz
Size 9.9 MB
Tags Source
SHA-256 checksum
How to use checksums
1522062af0cf65ecb93d28730fa45d689d7b4cbe958ed8bf36b9f7cb1590da03
BLAKE2b-256 checksum
How to use checksums
5b2956e4cb03176c380096a2d8825a112b24ad9ea5c0e85b60585be584f0524f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / arda_mapper-2.36.1-cp313-cp313-win_amd64.whl

Download URL arda_mapper-2.36.1-cp313-cp313-win_amd64.whl
Size 653.1 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
0a379bc9a7e8260f06253a5e6f85bcc7884d48044fe02e3678def26cd181c5ae
BLAKE2b-256 checksum
How to use checksums
7576f11055c282661e289bdee82bf07ec68101987a148c1d2538caf2a20bb2ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / arda_mapper-2.36.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL arda_mapper-2.36.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 754.4 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
762d9727ba94e6ca9811f286023b3f35d97feda59870e36297adbb4866a2a6ff
BLAKE2b-256 checksum
How to use checksums
6fcbbd652f72efa2bb81c6ecd975071c438c9f4bac9381ceca48ebee17b9b666
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / arda_mapper-2.36.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL arda_mapper-2.36.1-cp313-cp313-macosx_11_0_arm64.whl
Size 628.2 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9b7b85af2df05c4b4016253c856835f883449909b0e513a3caa6bcfeb1eb8cca
BLAKE2b-256 checksum
How to use checksums
c8c4ba5988048cae2f2a7d0635073366b7617935f83206f27819265d98cd8b18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / arda_mapper-2.36.1-cp312-cp312-win_amd64.whl

Download URL arda_mapper-2.36.1-cp312-cp312-win_amd64.whl
Size 653.4 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
43ca97268125b097dfc733e9dd6c630fab2be88e103b1c51e992749fb34c276f
BLAKE2b-256 checksum
How to use checksums
d4be7b6ae66e7a4098eda2c41acd6d59c9c958173946b90330c92d0914eac6cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / arda_mapper-2.36.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL arda_mapper-2.36.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 754.5 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
b27faeda2e433d81ddf4dc6e6e9d36171f6f6ec7b4c3ddc95871204e777fce44
BLAKE2b-256 checksum
How to use checksums
8a348227051c274cb5185c01fed246d225823dca88844830ad8fa86c4af42485
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / arda_mapper-2.36.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL arda_mapper-2.36.1-cp312-cp312-macosx_11_0_arm64.whl
Size 628.3 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7e918ca798a6aace8c92adb6d6e0e2db4ae80a42f66f485236ad79568bf5c1b0
BLAKE2b-256 checksum
How to use checksums
68e7f47362e4620c57b56ee0ad2b2ca8e9b45408d57e61762c8acdd1bd1d7e24
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / arda_mapper-2.36.1-cp311-cp311-win_amd64.whl

Download URL arda_mapper-2.36.1-cp311-cp311-win_amd64.whl
Size 655.6 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
98338960389696078d9e27e58016f1f50aecde5122c9ee0ee9b71c4c43c8ac5a
BLAKE2b-256 checksum
How to use checksums
a9f5e509843296b681657f026fb17ad17748914dbee2ed6e645b3390687541ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / arda_mapper-2.36.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL arda_mapper-2.36.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 758.6 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
99b072cd8982ad1ec53a03849540271605fcf415d2c00c2a0f0c2d9aa7fbe3f9
BLAKE2b-256 checksum
How to use checksums
853cab1f11fabc8a0d72ce7b6bb761d9b1580777895f1b21a41fc1ff0d16d5c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / arda_mapper-2.36.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL arda_mapper-2.36.1-cp311-cp311-macosx_11_0_arm64.whl
Size 632.0 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
01a081a9617608a1c2974d609e379c0a639d1e9c60bee61257aba37c1fb0a5d2
BLAKE2b-256 checksum
How to use checksums
62f1a38ce509125076fd3c1154919a0b3d91dd6ca17fc7dea84712c1eaab57fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / arda_mapper-2.36.1-cp310-cp310-win_amd64.whl

Download URL arda_mapper-2.36.1-cp310-cp310-win_amd64.whl
Size 655.9 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
855b124f2b469688656b8b89f0852664a1ad4677ee974ef7c87ae4b83957fa1b
BLAKE2b-256 checksum
How to use checksums
d86c55bafcf838865e368e17032f917672ba9f729ad5c7a33a52d4097b7b4472
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / arda_mapper-2.36.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL arda_mapper-2.36.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 759.3 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
6ad9303099e62d0711420bdad6b222307ca140efff4b324647a7f40533220231
BLAKE2b-256 checksum
How to use checksums
b836833ee1b2e56716de9f025ad83f9b3534cf5c5a2d7c10f970905bbd832045
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / arda_mapper-2.36.1-cp310-cp310-macosx_11_0_arm64.whl

Download URL arda_mapper-2.36.1-cp310-cp310-macosx_11_0_arm64.whl
Size 632.2 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
51f6bc2f04390f5e6e699a260d85a73a200c275858209a652325bc32e215226f
BLAKE2b-256 checksum
How to use checksums
955b64757d5a64349833579435de6f789c96ee00440d014046e7127ad753a231
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.36.1 This release

13 release files

2.5.7

13 release files

2.5.6

13 release files

2.5.5

13 release files

2.5.3

13 release files

2.5.2

13 release files

2.5.1

13 release files

2.5.0

13 release files

2.0.2

13 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page