#sam #map-format #bio #bam-format

noodles-bam

Binary Alignment/Map (BAM) format reader and writer

84 breaking releases

Uses new Rust 2024

0.85.0 Dec 11, 2025
0.84.0 Nov 13, 2025
0.83.0 Aug 25, 2025
0.82.0 Jul 12, 2025
0.2.1 Jul 30, 2021

#2 in #map-format

Download history 2512/week @ 2025-10-23 1256/week @ 2025-10-30 1070/week @ 2025-11-06 1425/week @ 2025-11-13 858/week @ 2025-11-20 532/week @ 2025-11-27 1120/week @ 2025-12-04 654/week @ 2025-12-11 842/week @ 2025-12-18 301/week @ 2025-12-25 416/week @ 2026-01-01 513/week @ 2026-01-08 905/week @ 2026-01-15 1834/week @ 2026-01-22 1337/week @ 2026-01-29 962/week @ 2026-02-05

5,183 downloads per month
Used in 57 crates (5 directly)

MIT license

1MB
28K SLoC

noodles-bam handles the reading and writing of the BAM (Binary Alignment/Map) file format.

The BAM format contains the same information as SAM (Sequence Alignment/Map), namely a SAM header and a list of records.

Examples

Read all records

use noodles_bam as bam;

let mut reader = bam::io::reader::Builder::default().build_from_path("sample.bam")?;
let header = reader.read_header()?;

for result in reader.records() {
    let record = result?;
    // ...
}

Query records

Querying allows filtering records by region. It requires an associated BAM index (BAI).

use noodles_bam as bam;

let mut reader = bam::io::indexed_reader::Builder::default().build_from_path("sample.bam")?;
let header = reader.read_header()?;

let region = "sq0:5-8".parse()?;
let query = reader.query(&header, &region)?;

for result in query.records() {
    let record = result?;
    // ...
}

Dependencies

~3.5–5MB
~81K SLoC