Struct noodles::sam::Record [−][src]
pub struct Record { /* fields omitted */ }
Expand description
A SAM record.
A SAM record has 11 required fields:
- read name (
QNAME
), - flags (
FLAG
), - reference sequence name (
RNAME
), - position (
POS
), - mapping quality (
MAPQ
), - CIGAR string (
CIGAR
), - mate reference sequence name (
RNEXT
), - mate position (
PNEXT
), - template length (
TLEN
), - sequence (
SEQ
), and - quality scores (
QUAL
).
Additionally, optional data fields can be included with any record.
Implementations
Returns a builder to create a record from each of its fields.
Examples
use noodles_sam::{self as sam, record::Flags};
let record = sam::Record::builder()
.set_read_name("r0".parse()?)
.set_flags(Flags::UNMAPPED)
.build()?;
assert_eq!(record.read_name().map(|name| name.as_str()), Some("r0"));
assert_eq!(record.flags(), Flags::UNMAPPED);
assert!(record.reference_sequence_name().is_none());
assert!(record.position().is_none());
Returns the read name of this record.
This is also called the query name.
Examples
use noodles_sam as sam;
let record = sam::Record::default();
assert!(record.read_name().is_none());
let record = sam::Record::builder()
.set_read_name("r0".parse()?)
.build()?;
assert_eq!(record.read_name().map(|name| name.as_str()), Some("r0"));
Returns a mutable reference to the read name.
This is also called the query name.
Examples
use noodles_sam as sam;
let mut record = sam::Record::default();
record.read_name_mut().insert("r0".parse()?);
assert_eq!(record.read_name().map(|name| name.as_str()), Some("r0"));
*record.read_name_mut() = None;
assert!(record.read_name().is_none());
Returns the SAM flags of this record.
Examples
use noodles_sam::{self as sam, record::Flags};
let record = sam::Record::default();
assert_eq!(record.flags(), Flags::UNMAPPED);
assert_eq!(u16::from(record.flags()), 4);
let record = sam::Record::builder()
.set_flags(Flags::PAIRED | Flags::READ_1)
.build()?;
assert_eq!(record.flags(), Flags::PAIRED | Flags::READ_1);
Returns a mutable reference to the SAM flags.
Examples
use noodles_sam::{self as sam, record::Flags};
let mut record = sam::Record::builder()
.set_flags(Flags::PAIRED | Flags::READ_1)
.build()?;
record.flags_mut().set(Flags::DUPLICATE, true);
assert_eq!(record.flags(), Flags::PAIRED | Flags::READ_1 | Flags::DUPLICATE);
record.flags_mut().set(Flags::PAIRED | Flags::QC_FAIL, false);
assert_eq!(record.flags(), Flags::READ_1 | Flags::DUPLICATE);
Returns the reference sequence name of this record.
Examples
use noodles_sam as sam;
let record = sam::Record::default();
assert_eq!(record.reference_sequence_name(), None);
let record = sam::Record::builder()
.set_reference_sequence_name("sq0".parse()?)
.build()?;
assert_eq!(record.reference_sequence_name().map(|name| name.as_str()), Some("sq0"));
Returns the start position of this record.
This value is 1-based.
Examples
use noodles_sam::{self as sam, record::Position};
let record = sam::Record::default();
assert!(record.position().is_none());
let record = sam::Record::builder()
.set_position(Position::try_from(13)?)
.build()?;
assert_eq!(record.position().map(i32::from), Some(13));
Returns the mapping quality of this record.
Mapping quality ranges from 0 to 254, inclusive. A value of 255 means no mapping quality is set.
Examples
use noodles_sam::{self as sam, record::MappingQuality};
let record = sam::Record::default();
assert!(record.mapping_quality().is_none());
assert_eq!(u8::from(record.mapping_quality()), 255);
let record = sam::Record::builder().set_mapping_quality(MappingQuality::from(8)).build()?;
assert_eq!(*record.mapping_quality(), Some(8));
Returns a mutable reference to the mapping quality.
Examples
use noodles_sam::{self as sam, record::MappingQuality};
let mut record = sam::Record::default();
*record.mapping_quality_mut() = MappingQuality::from(8);
assert_eq!(*record.mapping_quality(), Some(8));
*record.mapping_quality_mut() = MappingQuality::from(255);
assert!(record.mapping_quality().is_none());
Returns the CIGAR operations that describe how the read as mapped.
Examples
use noodles_sam::{self as sam, record::cigar::{op, Op}};
let record = sam::Record::default();
assert!(record.cigar().is_empty());
assert_eq!(record.cigar().to_string(), "*");
let record = sam::Record::builder().set_cigar("34M2S".parse()?).build()?;
assert_eq!(record.cigar().to_string(), "34M2S");
let mut ops = record.cigar().iter();
assert_eq!(ops.next(), Some(&Op::new(op::Kind::Match, 34)));
assert_eq!(ops.next(), Some(&Op::new(op::Kind::SoftClip, 2)));
assert_eq!(ops.next(), None);
Returns a mutable reference to the CIGAR operations.
Examples
use noodles_sam::{self as sam, record::{cigar::{op, Op}, Cigar}};
let mut record = sam::Record::default();
assert!(record.cigar().is_empty());
let cigar = Cigar::from(vec![
Op::new(op::Kind::Match, 36),
Op::new(op::Kind::SoftClip, 2),
]);
*record.cigar_mut() = cigar.clone();
assert_eq!(record.cigar(), &cigar);
Returns the mate reference sequence name of this record.
Examples
use noodles_sam as sam;
let record = sam::Record::default();
assert!(record.mate_reference_sequence_name().is_none());
let record = sam::Record::builder()
.set_mate_reference_sequence_name("sq0".parse()?)
.build()?;
assert_eq!(
record.mate_reference_sequence_name().map(|name| name.as_str()),
Some("sq0")
);
Returns the start position of the mate of this record.
This value is 1-based.
Examples
use noodles_sam::{self as sam, record::Position};
let record = sam::Record::default();
assert!(record.mate_position().is_none());
let record = sam::Record::builder()
.set_mate_position(Position::try_from(21)?)
.build()?;
assert_eq!(record.mate_position().map(i32::from), Some(21));
Returns the template length of this record.
Examples
use noodles_sam as sam;
let record = sam::Record::default();
assert_eq!(record.template_length(), 0);
let record = sam::Record::builder().set_template_length(101).build()?;
assert_eq!(record.template_length(), 101);
Returns a mutable reference to the template length.
Examples
use noodles_sam::{self as sam, record::MappingQuality};
let mut record = sam::Record::default();
*record.template_length_mut() = 101;
assert_eq!(record.template_length(), 101);
Returns the bases in the sequence of this record.
Examples
use noodles_sam::{self as sam, record::sequence::Base};
let record = sam::Record::default();
assert!(record.sequence().is_empty());
assert_eq!(record.sequence().to_string(), "*");
let record = sam::Record::builder()
.set_sequence("AT".parse()?)
.build()?;
assert_eq!(record.sequence().to_string(), "AT");
let mut bases = record.sequence().iter();
assert_eq!(bases.next(), Some(&Base::A));
assert_eq!(bases.next(), Some(&Base::T));
assert_eq!(bases.next(), None);
Returns a mutable reference to the sequence.
Examples
use noodles_sam::{self as sam, record::{sequence, Sequence}};
let mut record = sam::Record::default();
assert!(record.sequence().is_empty());
let sequence: Sequence = "ACGT".parse()?;
*record.sequence_mut() = sequence.clone();
assert_eq!(record.sequence(), &sequence);
Returns the quality score for each base in the sequence.
Examples
use noodles_sam::{self as sam, record::quality_scores::Score};
let record = sam::Record::default();
assert!(record.quality_scores().is_empty());
assert_eq!(record.quality_scores().to_string(), "*");
let record = sam::Record::builder()
.set_sequence("AC".parse()?)
.set_quality_scores("ND".parse()?)
.build()?;
assert_eq!(record.quality_scores().to_string(), "ND");
let mut scores = record.quality_scores().iter().copied().map(u8::from);
assert_eq!(scores.next(), Some(45));
assert_eq!(scores.next(), Some(35));
assert_eq!(scores.next(), None);
Returns a mutable reference to the quality scores.
Examples
use noodles_sam::{self as sam, record::{quality_scores, QualityScores}};
let mut record = sam::Record::default();
assert!(record.quality_scores().is_empty());
let quality_scores: QualityScores = "NDLS".parse()?;
*record.quality_scores_mut() = quality_scores.clone();
assert_eq!(record.quality_scores(), &quality_scores);
Returns the optional data fields for this record.
Examples
use noodles_sam::{self as sam, record::{data, Data}};
let record = sam::Record::default();
assert!(record.data().is_empty());
let data = Data::try_from(vec![data::Field::new(
data::field::Tag::AlignmentHitCount,
data::field::Value::Int(1),
)])?;
let record = sam::Record::builder().set_data(data).build()?;
assert_eq!(record.data().to_string(), "NH:i:1");
Returns a mutable reference to the data fields for this record.
Examples
use noodles_sam::{self as sam, record::data};
let mut record = sam::Record::default();
assert!(record.data().is_empty());
let field = data::Field::new(
data::field::Tag::AlignmentHitCount,
data::field::Value::Int(1),
);
let data = record.data_mut();
data.insert(field.tag().clone(), field.clone());
let data = record.data();
assert_eq!(data.len(), 1);
assert_eq!(data.get(field.tag()), Some(&field));
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Record
impl UnwindSafe for Record
Blanket Implementations
Mutably borrows from an owned value. Read more