27 breaking releases
new 0.28.0 | Mar 14, 2023 |
---|---|
0.26.0 | Feb 3, 2023 |
0.25.1 | Nov 29, 2022 |
0.20.0 | Jul 5, 2022 |
0.2.1 | Jul 30, 2021 |
#83 in Science
911 downloads per month
Used in 9 crates
(3 directly)
1MB
21K
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 std::{fs::File, io};
use noodles_bam as bam;
let mut reader = File::open("sample.bam").map(bam::Reader::new)?;
let header = reader.read_header()?.parse()?;
reader.read_reference_sequences()?;
for result in reader.records(&header) {
let record = result?;
println!("{:?}", record);
}
# Ok::<(), Box<dyn std::error::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 = reader.read_header()?.parse()?;
let index = bai::read("sample.bam.bai")?;
let region = "sq0:5-8".parse()?;
let query = reader.query(&header, &index, ®ion)?;
for result in query {
let record = result?;
println!("{:?}", record);
}
# Ok::<(), Box<dyn std::error::Error>>(())
Dependencies
~1.8–7MB
~105K SLoC