Thanks to visit codestin.com
Credit goes to lib.rs

#bam #bioinformatics #mcc #sc-atac-seq

bin+lib bamnado

Tools and utilities for manipulation of BAM files for unusual use cases. e.g. single cell, MCC

8 releases

Uses new Rust 2024

new 0.4.5 Jan 17, 2026
0.4.4 Jan 15, 2026
0.4.0 Dec 19, 2025
0.3.11 Oct 16, 2025
0.2.0 Jun 20, 2025

#130 in Biology

Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App

66 downloads per month

MIT/Apache and LGPL-3.0

245KB
4K SLoC

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-bedgraph utility to merge adjacent bins with identical scores
  • Python bindings for selected functionality

Installation

Download the appropriate binary from: https://github.com/alsmith151/BamNado/releases

After downloading:

chmod +x bamnado
./bamnado --version

(Optional) install system-wide:

sudo cp bamnado /usr/local/bin/

Docker

docker pull ghcr.io/alsmith151/bamnado:latest
docker run --rm ghcr.io/alsmith151/bamnado:latest --help

Images are available for linux/amd64 and linux/arm64.


Cargo

If you have Rust installed:

cargo install bamnado

Build from source

git clone https://github.com/alsmith151/BamNado.git
cd BamNado
cargo build --release

Python Interface

BamNado provides Python bindings for selected high-performance operations and is available directly from PyPI.

Installation

pip install bamnado
# or
uv pip install bamnado

Example

import bamnado
import numpy as np

signal = bamnado.get_signal_for_chromosome(
    bam_path="input.bam",
    chromosome_name="chr1",
    bin_size=50,
    scale_factor=1.0,
    use_fragment=False,
    ignore_scaffold_chromosomes=True
)

print(f"Mean coverage: {np.mean(signal)}")

Command-line usage

List available commands:

bamnado --help

Get help for a specific command:

bamnado <command> --help

Available commands

  • bam-coverage – generate coverage from a BAM file
  • multi-bam-coverage – coverage from multiple BAMs
  • split – split BAMs based on filters (e.g. barcodes)
  • split-exogenous – split endogenous vs exogenous reads
  • modify – apply transformations and filters to BAMs
  • bigwig-compare – compare two BigWigs
  • bigwig-aggregate – aggregate multiple BigWigs
  • collapse-bedgraph – merge adjacent bedGraph bins with identical scores

Example: BAM coverage

bamnado bam-coverage \
  --bam input.bam \
  --output output.bedgraph \
  --bin-size 100 \
  --norm-method rpkm \
  --scale-factor 1.5 \
  --use-fragment \
  --proper-pair \
  --min-mapq 30

Example: tag-filtered BigWig generation

bamnado bam-coverage \
  --bam input.bam \
  --output BCL2.bw \
  --bin-size 50 \
  --filter-tag "VP" \
  --filter-tag-value "BCL2" \
  --use-fragment \
  --min-mapq 30

BigWig comparison

bamnado bigwig-compare \
  --bw1 sample1.bw \
  --bw2 sample2.bw \
  --comparison log-ratio \
  --pseudocount 1e-3 \
  -o output.bw

BigWig aggregation

bamnado bigwig-aggregate \
  --bigwigs sample1.bw sample2.bw sample3.bw \
  --method mean \
  -o aggregated.bw

collapse-bedgraph

bamnado collapse-bedgraph \
  --input signal.bedgraph \
  --output signal.collapsed.bedgraph

Development

cargo build --release
cargo test

License

Apache-2.0 OR MIT

Dependencies

~92MB
~1.5M SLoC