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.31.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.31.0
File Size Uploaded
arda_mapper-2.31.0.tar.gz 10.0 MB Details

Built distributions (wheels)

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

Download URL arda_mapper-2.31.0.tar.gz
Size 10.0 MB
Tags Source
SHA-256 checksum
How to use checksums
ec50cee6e6c6539f2cd96ca97cd0640a1839b3997509f31d288617b6f48d7fa8
BLAKE2b-256 checksum
How to use checksums
6356acfb34d310e2d2fd3ccce9f56cd9f32bd8e82eff013f5f6b2494a6e41daf
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 29, 2026.

Transparency log

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

Download URL arda_mapper-2.31.0-cp313-cp313-win_amd64.whl
Size 640.8 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
8d766d5e06be3fa0aa6bfcf04abc23837b125dd5e3499b7312aea2b701671ee8
BLAKE2b-256 checksum
How to use checksums
405fa53ff1fa22b077fd760c96f314df841a2dff3b1ad95fc426a6d6177d639f
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 29, 2026.

Transparency log

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

Download URL arda_mapper-2.31.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 742.1 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
8af86132967e316f22854ab87a45e9573975636ff5e9107469610144095009fd
BLAKE2b-256 checksum
How to use checksums
f409341400df71fcab3ce1f34a1494380458a894809337f4c478545a1f303878
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 29, 2026.

Transparency log

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

Download URL arda_mapper-2.31.0-cp313-cp313-macosx_11_0_arm64.whl
Size 615.9 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0fe3e8bf8d9790a8eeef77f662d1862f0f596562d669d068418a9976175f362e
BLAKE2b-256 checksum
How to use checksums
98365157b749c4a58f70fe3c1e33cfd8f0b19ffcf580016d565e766fc90d545d
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 29, 2026.

Transparency log

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

Download URL arda_mapper-2.31.0-cp312-cp312-win_amd64.whl
Size 641.1 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
6c9b290cc39db38bb09b83f8b9943c50c5f0a4ecf69ece7a852346e5c3a4ee74
BLAKE2b-256 checksum
How to use checksums
39152afb1a5fce0a0d90f677fe53f1ff50d053bc4b1c38160c34c91b8d7dcb9b
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 29, 2026.

Transparency log

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

Download URL arda_mapper-2.31.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 742.2 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
53ebd87625e15e27ec78d074dd51f8860ea6370cf5f153ef3da18bc8dca0fcb1
BLAKE2b-256 checksum
How to use checksums
7eade2772cda374c67149266f24b48a3d3f4762fe0548fda875a4376e3eb5032
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 29, 2026.

Transparency log

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

Download URL arda_mapper-2.31.0-cp312-cp312-macosx_11_0_arm64.whl
Size 615.9 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
dd8fa900cb2d48a702c1e0dacb35bc36c2632609067ea4711a551db1deffa19f
BLAKE2b-256 checksum
How to use checksums
31eebb0d8e20afb9a124319a1adc5c99291a6c8b026d26cbb0b06b1b28842c4e
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 29, 2026.

Transparency log

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

Download URL arda_mapper-2.31.0-cp311-cp311-win_amd64.whl
Size 643.3 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
66cb678f9b5ae1023d78d901bdc69ed26d2404850cb6c3893fba915a1a47e9c5
BLAKE2b-256 checksum
How to use checksums
d8b073de4810facec8a035bf83e175ffe744927283171db7ff57fe6796e43550
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 29, 2026.

Transparency log

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

Download URL arda_mapper-2.31.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 746.3 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
5d17e795b6f382349848887b38315f792f9763bfd4dcac254be7ba837a9a1170
BLAKE2b-256 checksum
How to use checksums
31cea83e0e8a7ad8cb947961a11c60c1fc869d16345c7fde7f3b6d1f04b799d2
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 29, 2026.

Transparency log

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

Download URL arda_mapper-2.31.0-cp311-cp311-macosx_11_0_arm64.whl
Size 619.7 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8247d79890878df9d145af0677a670f25e4a6925d4a45f7520c9b46301b847c8
BLAKE2b-256 checksum
How to use checksums
28e5409d87d45182f2615ba866d546856b218ff0c019a0e2cc07a49f4562dd68
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 29, 2026.

Transparency log

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

Download URL arda_mapper-2.31.0-cp310-cp310-win_amd64.whl
Size 643.6 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
7204617869757d4a802e3d381065344cff6c117db3ed111d51f626fb4b66b985
BLAKE2b-256 checksum
How to use checksums
86db20d4d15d341be71dc8f3d09a0a1c7d8dee4a158b49d4d8335a47a354e96a
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 29, 2026.

Transparency log

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

Download URL arda_mapper-2.31.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 747.0 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
65d087a3c49f4f8e88fea12c17cc0e1a5e5370ea20b93dce52495789940b5192
BLAKE2b-256 checksum
How to use checksums
62e05fb473f9b629bf328974a11e0c59fcb62a67977ad6d440571c33741975f3
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 29, 2026.

Transparency log

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

Download URL arda_mapper-2.31.0-cp310-cp310-macosx_11_0_arm64.whl
Size 619.9 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
65d627b8909c2c3d910b169cb47172383a98ea2935561afea852c2f3e3877783
BLAKE2b-256 checksum
How to use checksums
074b4642f04caaf4a87f18a8ac531200e7051a8ea993ee542f9972b11bc06b39
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 29, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

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