Installation¶
Prerequisites¶
- Rust 1.95 or later
- Cargo (comes with Rust)
Installing the CLI¶
From Source¶
Clone the repository and build:
git clone https://github.com/rnabioco/escapepod-rs.git
cd escapepod-rs
cargo build --release
The binary will be at target/release/escpod. You can copy it to a directory in your PATH:
cp target/release/escpod ~/.local/bin/
# or
sudo cp target/release/escpod /usr/local/bin/
Optional features¶
The default build ships the stable CLI surface (summary, view, inspect, merge, filter, bam-filter, subset). Extra commands live behind Cargo features:
| Feature | Commands unlocked |
|---|---|
experimental |
repack, resquiggle, index |
demux |
demux detect, fingerprint, classify, split, train |
train |
implies demux; adds demux train-svm |
gpu |
implies demux; batched GPU DTW for classify / train-svm (CUDA driver + libnvrtc required at runtime) |
cnn-detect |
implies demux; ADAPTed-style CNN adapter detection (bring-your-own ONNX model) |
Combine as needed:
cargo build --release --features experimental,demux
cargo install --git https://github.com/rnabioco/escapepod-rs --features experimental
See the Experimental section for per-command details.
Verify Installation¶
escpod --version
escpod --help
Installing the Python package¶
The escapepod Python package provides a pod5-compatible API. Install it
from PyPI:
uv pip install escapepod
Wheels are published for CPython 3.9+ (abi3) on Linux (x86_64/aarch64, manylinux + musllinux) and macOS (x86_64/arm64). To build from a checkout instead (or on an unsupported platform), use maturin:
uv pip install maturin
maturin develop --release --manifest-path crates/escapepod-python/Cargo.toml
This installs escapepod into the active environment. See the
Python API for usage.
Using the Rust Library¶
The workspace splits the library layer in two: escapepod-pod5 for format
I/O and escapepod-signal for signal-processing algorithms. escapepod-signal
re-exports the full escapepod-pod5 surface, so most users only need to
depend on the signal crate:
[dependencies]
escapepod-signal = { git = "https://github.com/rnabioco/escapepod-rs.git" }
If you only need POD5 file I/O without the signal algorithms:
[dependencies]
escapepod-pod5 = { git = "https://github.com/rnabioco/escapepod-rs.git" }
Barcode demultiplexing lives in its own crate, escapepod-demux, which
mirrors the CLI's demux feature gate.
Building Documentation¶
To build the API documentation locally:
cargo doc --open --no-deps
Development Setup¶
For contributing to escapepod-rs:
# Clone the repository
git clone https://github.com/rnabioco/escapepod-rs.git
cd escapepod-rs
# Run tests (cargo-nextest)
cargo nextest run
# Run doctests separately — nextest does not execute them
cargo test --doc --workspace
# Run clippy lints
cargo clippy
# Format code
cargo fmt