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

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.2
File Size Uploaded Provenance
arda_mapper-2.36.2.tar.gz 9.9 MB With provenance Details

Built distributions (wheels)

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

Download URL arda_mapper-2.36.2.tar.gz
Size 9.9 MB
Tags Source
SHA-256 checksum
How to use checksums
e95c86bedcc837d7171d6209248668bd9e3c83d93230aa70f0a058a7e62332b7
BLAKE2b-256 checksum
How to use checksums
5ad2de41f5a030db2b5bd163e23ba78e836e8e745211e5744da0c25f68372fcc
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 17, 2026.

Transparency log

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

Download URL arda_mapper-2.36.2-cp313-cp313-win_amd64.whl
Size 653.1 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
3fe656932d745984c21e9eed0e416a0093c0fdc09a8448d5a12477ca0f61d930
BLAKE2b-256 checksum
How to use checksums
5807b1bce96d1e6768977dab8b5c4a84c08feb0c66efef01ca3ec9366bdce632
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 17, 2026.

Transparency log

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

Download URL arda_mapper-2.36.2-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
a94a4de1656e3e0b6ae2383ad32cf44949d6a4a00413e6f5518cb6e5816615ba
BLAKE2b-256 checksum
How to use checksums
aa0995bae118c449c8c3fe72f172bec701f03b0d4b96f78bf74dffd30f215b69
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 17, 2026.

Transparency log

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

Download URL arda_mapper-2.36.2-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
de5885fe365f611c929db6c79e0d06272b81e1f56c43611d15fd2b98de0f924f
BLAKE2b-256 checksum
How to use checksums
d6e62520cb66a30cbedb190adae3e2440be9c915c4541a4062ec097a9437d4b4
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 17, 2026.

Transparency log

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

Download URL arda_mapper-2.36.2-cp312-cp312-win_amd64.whl
Size 653.4 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
32708777493498c45805aca6fada49722918c5cc9942a5a068c0ab390e685593
BLAKE2b-256 checksum
How to use checksums
17a01ef123b88d3462e3d27c57130cdebbdeffe63b513325db006e4d4edd0429
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 17, 2026.

Transparency log

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

Download URL arda_mapper-2.36.2-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
5c680790b8290187352ba246ee6c85ea48f73e74b1a62691e784058599f3eb0d
BLAKE2b-256 checksum
How to use checksums
4f1a0f837aa580eef478979813ace5cb2a1cee77623d62987fc7f63b29d999c2
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 17, 2026.

Transparency log

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

Download URL arda_mapper-2.36.2-cp312-cp312-macosx_11_0_arm64.whl
Size 628.2 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
347dc7fd1890c992d0558662bb2fac24e825d6259b51f783797f00882c92da2a
BLAKE2b-256 checksum
How to use checksums
fea5d284944887afdc6ad988d53002442edba90d1bc917fc7e9fc98588dbe9a5
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 17, 2026.

Transparency log

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

Download URL arda_mapper-2.36.2-cp311-cp311-win_amd64.whl
Size 655.6 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
0eb9e18c1c8f967f4320e5a20efd011e08ffb62024b3fd1887311d947ea171de
BLAKE2b-256 checksum
How to use checksums
1e49cff219214e550c3f923e4b6662a661f0408827c77145f9d21096d9d0d032
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 17, 2026.

Transparency log

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

Download URL arda_mapper-2.36.2-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
47495d58fbafaee9e87b6fc636524e6f100dc1e0a97964c2971e20db8e7e8e6b
BLAKE2b-256 checksum
How to use checksums
4b0c5e9060bd104ac70f571227b73678ecffa1198eb58f0650c3f142bdbd9060
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 17, 2026.

Transparency log

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

Download URL arda_mapper-2.36.2-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
b3846d7ef995910f288a857bfcacaaca20807631eb0b3b05051cad32a8783091
BLAKE2b-256 checksum
How to use checksums
c8b0a017aa3a8d5c091d9f128c56530a091e21c136e0b4212f1d64667caa081a
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 17, 2026.

Transparency log

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

Download URL arda_mapper-2.36.2-cp310-cp310-win_amd64.whl
Size 655.9 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
161fcc1f08636414a072d846e921021336b0b2a491532bc4ec4cd8029c1a4684
BLAKE2b-256 checksum
How to use checksums
00c4358fa805c908ae774de7be643967a7f847d5c531a2b2cb5bc6b90ea940f3
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 17, 2026.

Transparency log

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

Download URL arda_mapper-2.36.2-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
ff9e02e6bf2b946ec3c4bf708d0e53ea701c82dd1d20df8988c199df45beac06
BLAKE2b-256 checksum
How to use checksums
3661301b8622de9d85e5e0378be7b6913caa1c91b9b455c30700264a1c72630c
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 17, 2026.

Transparency log

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

Download URL arda_mapper-2.36.2-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
1900740dbff6eef9f0097cbd4c9c996b2151b63acaa6486ef0da6bba18772b10
BLAKE2b-256 checksum
How to use checksums
549cd2dfb54096dc3ecd419076232c30c0a41186055432e681ca122efc9eff95
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 17, 2026.

Transparency log

Security for arda-mapper 2.36.2

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.

Full provenance

All 13 files in this release have been uploaded with provenance metadata.

Select from 13 files

Attestation for arda_mapper-2.36.2.tar.gz

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 17, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

2.36.2 This release

13 release files Full provenance

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