Module noodles_sam::header
source · Expand description
SAM header and records.
A SAM header is a list of header records. There are 5 record types: header (HD
), reference
sequence (SQ
), read group (RG
), program (PG
), and comment (CO
).
Each record is effectively a map. It defines key-value pairs associated with that record type.
All records are optional, which means an empty header is considered a valid SAM header.
If there is a header record, it must appear as the first record.
Reference sequence, read group, program, and comment records are lists of records of the same
type. Reference sequences must be ordered; whereas read groups, programs, and comments can be
unordered. (sam::Header
defines them to be ordered.)
§Examples
§Parse a SAM header
use noodles_sam as sam;
let s = "\
@HD\tVN:1.6\tSO:coordinate
@SQ\tSN:sq0\tLN:8
@SQ\tSN:sq1\tLN:13
";
let header: sam::Header = s.parse()?;
assert!(header.header().is_some());
assert_eq!(header.reference_sequences().len(), 2);
assert!(header.read_groups().is_empty());
assert!(header.programs().is_empty());
assert!(header.comments().is_empty());
§Create a SAM header
use std::num::NonZeroUsize;
use noodles_sam::{
self as sam,
header::record::value::{map::ReferenceSequence, Map},
};
let header = sam::Header::builder()
.set_header(Default::default())
.add_reference_sequence(
"sq0",
Map::<ReferenceSequence>::new(NonZeroUsize::try_from(8)?),
)
.add_reference_sequence(
"sq1",
Map::<ReferenceSequence>::new(NonZeroUsize::try_from(13)?),
)
.build();
assert!(header.header().is_some());
assert_eq!(header.reference_sequences().len(), 2);
assert!(header.read_groups().is_empty());
assert!(header.programs().is_empty());
assert!(header.comments().is_empty());
Re-exports§
pub use self::record::Record;
Modules§
- SAM header record.
Structs§
- A SAM header builder.
- A SAM header.
- A SAM header parser.
Enums§
- An error returned when a raw SAM header fails to parse.
Type Aliases§
- An ordered map of programs.
- An ordered map of read groups.
- A reference sequence dictionary.