Skip to content

aa-tRNA-seq Pipeline

A Snakemake pipeline for analyzing Oxford Nanopore direct RNA sequencing of aminoacylated tRNAs.

GitHub Snakemake

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:

  1. (Optional) Demultiplexes pooled runs — by signal (WarpDemuX / WDX) or by basecalling (escapepod / LDX, with an optional 5′ FDX index)
  2. Stages each sample's raw POD5 files as a directory of symlinks (LDX hands dorado the raw run directly)
  3. Rebasecalls with Dorado to generate unmapped BAM with move tables (required by the charging model)
  4. Aligns to tRNA + adapter reference with BWA MEM, carrying dorado's tags through the FASTQ comment — no FASTQ file is written — then recomputes MD/NM tags (calmd)
  5. 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
# Clone repository
git clone https://github.com/rnabioco/aa-tRNA-seq-pipeline.git
cd aa-tRNA-seq-pipeline

# Install environment
pixi install

# One-time setup: download tools, models, and test data
pixi run setup
pixi run dl-test-data

# Run test pipeline
pixi run dry-run   # Preview what will run
pixi run test      # Execute with test data

See Installation for detailed setup instructions.

Documentation Sections

  • Getting Started


    Install the pipeline and run your first analysis

    Installation

  • User Guide


    Configure samples, parameters, and understand outputs

    Configuration

  • Workflow


    Detailed documentation of all rules and scripts

    Overview

  • Cluster Setup


    Configure LSF, SLURM, or other HPC schedulers

    LSF Setup

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.