noodles_bam/lib.rs
1//! **noodles-bam** handles the reading and writing of the BAM (Binary Alignment/Map) file format.
2//!
3//! The BAM format contains the same information as SAM (Sequence Alignment/Map), namely a SAM
4//! header and a list of records.
5//!
6//! # Examples
7//!
8//! ## Read all records
9//!
10//! ```no_run
11//! # use std::{fs::File, io};
12//! use noodles_bam as bam;
13//!
14//! let mut reader = File::open("sample.bam").map(bam::io::Reader::new)?;
15//! let header = reader.read_header()?;
16//!
17//! for result in reader.records() {
18//! let record = result?;
19//! // ...
20//! }
21//! # Ok::<_, io::Error>(())
22//! ```
23//!
24//! ## Query records
25//!
26//! Querying allows filtering records by region. It requires an associated BAM index (BAI).
27//!
28//! ```no_run
29//! # use std::fs::File;
30//! use noodles_bam as bam;
31//!
32//! let mut reader = bam::io::indexed_reader::Builder::default().build_from_path("sample.bam")?;
33//! let header = reader.read_header()?;
34//!
35//! let region = "sq0:5-8".parse()?;
36//! let query = reader.query(&header, ®ion)?;
37//!
38//! for result in query.records() {
39//! let record = result?;
40//! // ...
41//! }
42//! # Ok::<_, Box<dyn std::error::Error>>(())
43//! ```
44
45#[cfg(feature = "async")]
46pub mod r#async;
47
48pub mod bai;
49pub mod fs;
50pub mod io;
51pub mod record;
52
53pub use self::record::Record;