noodles-bam 0.12.0

Binary Alignment/Map (BAM) format reader and writer
Documentation

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 std::{fs::File, io};
use noodles_bam as bam;

let mut reader = File::open("sample.bam").map(bam::Reader::new)?;
reader.read_header()?;
reader.read_reference_sequences()?;

for result in reader.records() {
let record = result?;
println!("{:?}", record);
}
# Ok::<(), io::Error>(())

Query records

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

# use std::fs::File;
use noodles_bam::{self as bam, bai};
use noodles_core::Region;
use noodles_sam as sam;

let mut reader = File::open("sample.bam").map(bam::Reader::new)?;
let header: sam::Header = reader.read_header()?.parse()?;

let reference_sequences = header.reference_sequences();
let index = bai::read("sample.bam.bai")?;
let region = Region::mapped("sq0", 17711..=28657);
let query = reader.query(&reference_sequences, &index, &region)?;

for result in query {
let record = result?;
println!("{:?}", record);
}
# Ok::<(), Box<dyn std::error::Error>>(())