aa-tRNA-seq Pipeline¶
A Snakemake pipeline for analyzing Oxford Nanopore direct RNA sequencing of aminoacylated tRNAs.
Overview¶
This pipeline processes Oxford Nanopore Technologies (ONT) aa-tRNA-seq data to distinguish between charged (aminoacylated) and uncharged tRNA molecules. It uses a machine learning model, run by escpod classify, trained on nanopore signal data over the CCA 3' end of tRNA molecules.
flowchart TD
subgraph Input
POD5[POD5 files]
end
subgraph WDX [Optional: WarpDemuX demux]
W[warpdemux<br/>barcode classification] --> WS[split_pod5<br/>per-sample POD5]
end
subgraph LDX [Optional: escapepod LDX/FDX demux]
LD[escapepod_demux<br/>--annotate, writes .p5s sidecar] --> LB[rebasecall_ldx_run<br/>whole run, one dorado pass]
LB --> LS[split_ldx_ubam<br/>per-sample uBAM]
end
subgraph Processing
A[stage_pod5<br/>symlinks to raw POD5] --> B[rebasecall<br/>Dorado + move tables]
B --> D[bwa_align<br/>tRNA + adapter reference<br/>dorado tags carried through]
D --> CM[calmd<br/>MD/NM tags for the ref]
end
subgraph Classification
CM --> F[classify_charging<br/>escpod classify]
B -.-> F
A -.-> F
F --> G[add_adapter_tags<br/>finalize_bam]
end
subgraph Outputs
F --> CC[charging_calls<br/>per-read calls + no-call reason]
G --> H[charging_prob<br/>per-read cl scores]
G --> I[get_cca_trna_cpm<br/>CPM counts]
G --> J[bcerror<br/>basecalling errors]
G --> K[align_stats]
G --> L[modkit pileups]
L -.-> M[odds_ratios<br/>pairwise mod ORs]
H -.-> M
K -.-> N[qc_report<br/>Quarto HTML]
H -.-> N
end
POD5 --> A
POD5 -.-> W
POD5 -.-> LD
WS -.-> B
LS -.-> D
Pipeline Steps¶
Given a directory of POD5 files, this pipeline:
- (Optional) Demultiplexes pooled runs — by signal (WarpDemuX / WDX) or by basecalling (escapepod / LDX, with an optional 5′ FDX index)
- Stages each sample's raw POD5 files as a directory of symlinks (LDX hands dorado the raw run directly)
- Rebasecalls with Dorado to generate unmapped BAM with move tables (required by the charging model)
- Aligns to tRNA + adapter reference with BWA MEM, carrying dorado's tags through the FASTQ comment — no FASTQ file is written — then recomputes
MD/NMtags (calmd) - Classifies charged vs. uncharged reads with
escpod classify, against an ONNX model trained on nanopore signal over the CCA 3' end
The classification writes a cl tag (0-255) onto each scored read, round(P(charged) * 255). By default cl ≥ 200 is charged and < 200 uncharged. Reads the model abstains on get no cl tag; their rate is charging-correlated and is reported in read_attrition.tsv.gz.
Key Features¶
- Charging Classification: ML-based classification of charged vs uncharged tRNAs via
escpod classify - Modification Calling: Detection of RNA modifications (pseU, m5C, m6A, inosine) via Dorado and Modkit
- Full-Length Filtering: Only full-length tRNA reads with proper adapters are analyzed
- Barcode Demultiplexing: Optional WarpDemuX (signal) or escapepod LDX/FDX (basecall) support for pooled/multiplexed samples
- Cluster Support: Optimized profiles for LSF and SLURM schedulers
- Reproducibility: Git commit tracking and locked dependencies via Pixi
Quick Start¶
| Bash | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
See Installation for detailed setup instructions.
Documentation Sections¶
-
Getting Started
Install the pipeline and run your first analysis
-
User Guide
Configure samples, parameters, and understand outputs
-
Workflow
Detailed documentation of all rules and scripts
-
Cluster Setup
Configure LSF, SLURM, or other HPC schedulers
Output Overview¶
The pipeline produces several key output files per sample:
| Output | Description |
|---|---|
bam/final/{sample}/{sample}.bam |
Final BAM with charging (cl), adapter (pt) and barcode (BC) tags |
summary/tables/{sample}/{sample}.charging.cpm.tsv.gz |
CPM-normalized charging counts per tRNA |
summary/tables/{sample}/{sample}.charging_prob.tsv.gz |
Per-read charging probabilities |
summary/modkit/{sample}/{sample}.pileup.bed.gz |
Modification pileup consensus |
See Output Files for complete documentation.
Downstream Analysis¶
Downstream analysis to generate figures for the initial preprint can be found at: https://github.com/rnabioco/aa-tRNA-seq
Citation¶
If you use this pipeline, please cite:
White LK, Radakovic A, Sajek MP, Dobson K, Riemondy KA, Del Pozo S, Szostak JW, Hesselberth JR. Nanopore sequencing of intact aminoacylated tRNAs. Nat Commun. 2025;16:7781. doi:10.1038/s41467-025-62545-9
License¶
This project is licensed under the MIT License - see the LICENSE file for details.