Struct noodles_sam::record::Record[][src]

pub struct Record { /* fields omitted */ }
Expand description

A SAM record.

A SAM record has 11 required fields:

  1. read name (QNAME),
  2. flags (FLAG),
  3. reference sequence name (RNAME),
  4. position (POS),
  5. mapping quality (MAPQ),
  6. CIGAR string (CIGAR),
  7. mate reference sequence name (RNEXT),
  8. mate position (PNEXT),
  9. template length (TLEN),
  10. sequence (SEQ), and
  11. 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 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 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 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 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

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

Formats the value using the given formatter. Read more

The associated error which can be returned from parsing.

Parses a string s to return a value of this type. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

Converts the given value to a String. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.