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.34.0

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.34.0
File Size Uploaded
arda_mapper-2.34.0.tar.gz 9.9 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for arda-mapper 2.34.0
File
arda_mapper-2.34.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
arda_mapper-2.34.0-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.34.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
arda_mapper-2.34.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
arda_mapper-2.34.0-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.34.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
arda_mapper-2.34.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
arda_mapper-2.34.0-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.34.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
arda_mapper-2.34.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
arda_mapper-2.34.0-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.34.0-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.34.0.tar.gz

Download URL arda_mapper-2.34.0.tar.gz
Size 9.9 MB
Tags Source
SHA-256 checksum
How to use checksums
499957dffd560870de4b60ef4bba303028185a57ab0676baf780f4af3c2da822
BLAKE2b-256 checksum
How to use checksums
846ad11fac0174db73f3f408deebde1b1a714c2bfebd8694df62d3fa1fe29bfa
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 Sep 30, 2026.

Transparency log

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

Download URL arda_mapper-2.34.0-cp313-cp313-win_amd64.whl
Size 651.4 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
43043aa883d939e8b5bd4b7779cb70ede3cd8bf795831983b9a5f7ff6f480bb5
BLAKE2b-256 checksum
How to use checksums
980d896804f24b6ace3a0e13b497e0aa369f6bfe07272569402e6e6f33bac58b
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 Sep 30, 2026.

Transparency log

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

Download URL arda_mapper-2.34.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 752.7 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d991ec344062db703f94db120d3d68d08ff67b588ee78d3444a094b26408a98d
BLAKE2b-256 checksum
How to use checksums
944399432804d8da3c7e702ee95a205251f1a2ce6f144c498c47d5ca540710e6
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 Sep 30, 2026.

Transparency log

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

Download URL arda_mapper-2.34.0-cp313-cp313-macosx_11_0_arm64.whl
Size 626.5 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
339bf30639ee26337f95c5d831280b425d7a23bf43da998b73a61d858f05d686
BLAKE2b-256 checksum
How to use checksums
d780f4945fb0bfe28945b6ba54ee0c785480be558a772bc219e0314e6dcfea5d
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 Sep 30, 2026.

Transparency log

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

Download URL arda_mapper-2.34.0-cp312-cp312-win_amd64.whl
Size 651.7 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
472eebecf9beefdfb0f66035e630d0a878e75682634e7ba8985670092abade24
BLAKE2b-256 checksum
How to use checksums
453ba59262847c211b593657c5cb3502f4b5caa0cd87c35917943d86a5ebb807
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 Sep 30, 2026.

Transparency log

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

Download URL arda_mapper-2.34.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 752.8 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
454df59d0dce6e2a6e594a75fa792941950ada48bf2168ce0b4d5ffbc43c7f62
BLAKE2b-256 checksum
How to use checksums
262ce6143b3f3485fdaed07d0c549db552ec0de34eee746a6e8f769e8ef96ca8
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 Sep 30, 2026.

Transparency log

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

Download URL arda_mapper-2.34.0-cp312-cp312-macosx_11_0_arm64.whl
Size 626.5 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d60d6df1d86fe7dff3a0d00f8a57c53bcc5daefc8e24841c850d404be7e44176
BLAKE2b-256 checksum
How to use checksums
fadcf553d1969e6fc995ee9d841b8b5224fc0e866f36f6a30322494cf07c8519
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 Sep 30, 2026.

Transparency log

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

Download URL arda_mapper-2.34.0-cp311-cp311-win_amd64.whl
Size 653.9 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
ffbe25e8e51d275e31e9f9898ea2cde063ced86da52043c4834c652698d20a68
BLAKE2b-256 checksum
How to use checksums
cb2bb3423282bf5e6186238784c5f095b1054066f9128efade3a77c948e5c811
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 Sep 30, 2026.

Transparency log

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

Download URL arda_mapper-2.34.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 756.9 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
eaf30e421fd6bf956808ae703f0927528b18160d473f39f961bf37eab1c6117e
BLAKE2b-256 checksum
How to use checksums
0beeb3a701980688dd72a6bac8a84308907a8c4fbd79276e62ebccc4ce9aa4a8
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 Sep 30, 2026.

Transparency log

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

Download URL arda_mapper-2.34.0-cp311-cp311-macosx_11_0_arm64.whl
Size 630.3 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
db5f8343b84943d4fc87897ee6ab2b2735a532b8fb3cdde59b4b168dd0a11f4a
BLAKE2b-256 checksum
How to use checksums
8e7b981872bf312a6fc2e0dc77d843dd9636fa65a0e6b8c47b1668e030955c32
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 Sep 30, 2026.

Transparency log

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

Download URL arda_mapper-2.34.0-cp310-cp310-win_amd64.whl
Size 654.2 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
a0432445eeac2b39660a27e25ba449bf033b85e38f11d2c28c87deb420b8c35a
BLAKE2b-256 checksum
How to use checksums
d21fd58d4dbc2f4d16cbd27a4261cb2d729fda54ee5b19536d12bebf5616a956
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 Sep 30, 2026.

Transparency log

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

Download URL arda_mapper-2.34.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 757.6 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
ebba7612c33ccc535d9cfc2caf41b1eae93cab10d913de1be3497ba6fe181153
BLAKE2b-256 checksum
How to use checksums
f120588ba3f2a91f55bbe4d1e08d6fc713b87253b22e2fceaa01252c79656b27
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 Sep 30, 2026.

Transparency log

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

Download URL arda_mapper-2.34.0-cp310-cp310-macosx_11_0_arm64.whl
Size 630.5 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0e4e630b86033330964754111485b5ff354ca3d202094e2144da281310dc7a78
BLAKE2b-256 checksum
How to use checksums
dc8d4105fdf288bac0eea08a18d1a4135d516bbe0bdd27af9b4b4b266459deb3
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 Sep 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.34.0 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