arda#
ANTIGEN RECEPTOR DOMAIN ANNOTATION
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.
pip install arda-mapper
arda amplicon --r1 R1.fq.gz --r2 R2.fq.gz -p SAMPLE -d out/
Quickstart
Install, run a library, read the table that comes out. Ten minutes.
Choosing a mode
Bulk RNA-seq, amplicon or single cell — and what each one writes.
Output reference
Every file a run produces, and every column in it.
Recipes
Copy-paste shell and polars snippets for the analyses that follow a run.
What it does#
Annotation. A sequence in, an AIRR Rearrangement record out: v_call, d_call,
j_call, c_call, the four framework regions, the three CDRs, the junction and its
translation, all in 1-based closed query coordinates. Nucleotide or amino acid input, FASTA or
FASTQ, all loci searched at once.
Repertoires. arda rnaseq, arda amplicon and arda cells take raw reads to a
clonotype table in one call, running mapping, contig assembly and error correction for you.
Records with no read behind them. A CDR3 amino acid plus a V and a J call — a VDJdb row —
can be marked up and its junction repaired against the germline anchors. For D inference
from an amino-acid junction, use vdjtools.model.annotate_junctions.
Why arda#
IgBLAST-quality regions, without IgBLAST at runtime
Region concordance with IgBLAST is 98–99.7 % on ~7,300 real GenBank mRNA records across five organisms. IgBLAST itself is needed only to rebuild the reference, never to annotate.
Cheap enough to run per sample on a shared node
Mapping holds a flat 300–650 MB of RAM at any read depth. On a 100,000-read TRA amplicon arda uses 3.2× less peak memory than MiXCR and 1.4× less CPU.
Precise on bulk RNA-seq
Across 16 bulk datasets and 5,273 real fragments, recall 0.986 [.982–.989] and a precision lower bound of 0.889 [.881–.897] — a precision bound above every compared tool's upper bound.
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.
Runs where your data already is
A plain CLI over named files: the same sample sheet drives the CLI, a SLURM array, the Nextflow module and the Snakemake workflow. A sharded run is byte-identical to a single-node one.
Embeddable
import arda; arda.annotate_sequences(...) returns AIRR record dicts.
Search subprocesses and temporary files are managed internally.
Every performance and accuracy figure quoted in these pages is measured, and the method behind each one is recorded on the Benchmarks page.
Where to go next#
If you want to… |
Read |
|---|---|
run a library end to end for the first time |
|
decide which mode your library needs |
|
understand a column in the output |
|
look up a command or a flag |
|
analyse a clonotype table |
|
scale to a cohort or a cluster |
|
know how the annotation is computed |