BamNado
High-performance tools and utilities for working with BAM and BigWig files in modern genomics workflows. BamNado is written in Rust for speed and low memory use and provides both a command-line interface and Python bindings.
Overview
BamNado is designed for efficient, streaming manipulation of BAM files and signal tracks. It focuses on fast coverage generation, flexible filtering, and lightweight post-processing of bedGraph and BigWig data.
Common use cases include:
- Rapid generation of coverage tracks from large BAM files
- Filtering reads by tags or barcodes to produce targeted BigWigs
- Fragment-aware coverage for ATAC-seq and related assays
- BigWig comparison and aggregation across samples
- Post-processing of binned signal tracks for visualization
BamNado is useful in a range of workflows, including single-cell and Micro-Capture-C (MCC), but is not limited to those applications.
Features
- High-performance, streaming implementations in Rust
- Cross-platform support (Linux, macOS, Windows)
- BAM → bedGraph / BigWig coverage generation
- Fragment-aware and strand-specific pileups
- Read filtering by mapping quality, length, tags, and barcodes
- BigWig comparison (subtraction, ratio, log-ratio)
- BigWig aggregation (sum, mean, median, min, max)
collapse-bedgraphutility to merge adjacent bins with identical scores- Python bindings for selected functionality
Installation
Pre-built binaries (recommended)
Download the appropriate binary from: https://github.com/alsmith151/BamNado/releases
After downloading:
(Optional) install system-wide:
Docker
Images are available for linux/amd64 and linux/arm64.
Cargo
If you have Rust installed:
Build from source
Python Interface
BamNado provides Python bindings for selected high-performance operations and is available directly from PyPI.
Installation
# or
Example
=
Command-line usage
List available commands:
Get help for a specific command:
Available commands
bam-coverage– generate coverage from a BAM filemulti-bam-coverage– coverage from multiple BAMssplit– split BAMs based on filters (e.g. barcodes)split-exogenous– split endogenous vs exogenous readsmodify– apply transformations and filters to BAMsbigwig-compare– compare two BigWigsbigwig-aggregate– aggregate multiple BigWigscollapse-bedgraph– merge adjacent bedGraph bins with identical scores
Example: BAM coverage
Example: tag-filtered BigWig generation
BigWig comparison
BigWig aggregation
collapse-bedgraph
Development
License
Apache-2.0 OR MIT