Expand description

noodles-sam handles the reading and writing of the SAM (Sequence Alignment/Map) format.

SAM is a format typically used to store biological sequences, either mapped to a reference sequence or unmapped. It has two sections: a header and a list of records.

The header mostly holds meta information about the data: a header describing the file format version, reference sequences reads map to, read groups reads belong to, programs that previously manipulated the data, and free-form comments. The header is optional and may be empty.

Each record represents a read, a linear alignment of a segment. Records have fields describing how a read was mapped (or not) to a reference sequence.


Read all records from a file

use noodles_sam as sam;

let mut reader = File::open("sample.sam")

let header = reader.read_header()?.parse()?;

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


pub use self::header::Header;
pub use self::reader::Reader;


Alignment record.

SAM header and records.

Lazily-evaluated SAM record and fields.

SAM reader and iterators.

SAM record and fields.


An async SAM reader.

An async SAM writer.

A SAM writer.


An alignment format reader.

An alignment format writer.