Skip to main content

ReadStructure

Struct ReadStructure 

Source
pub struct ReadStructure { /* private fields */ }
Expand description

A read structure made up of one or more ReadSegments.

Internally, in addition to the segments themselves, we cache per-segment start offsets (signed) and enough summary information to resolve the indefinite-length (+) segment’s end position at extract time without another pass over the segments.

Implementations§

Source§

impl ReadStructure

Source

pub fn new(segments: Vec<ReadSegment>) -> Result<Self, ReadStructureError>

Builds a new ReadStructure from a vector of ReadSegments.

At most one segment may have an indefinite length (+); it may appear in any position.

§Errors
  • Returns Err if no elements exist.
  • Returns Err if more than one segment has an indefinite length.
Source

pub fn extract<'rs, 'b>( &'rs self, bases: &'b [u8], quals: &'b [u8], skip_handling: SkipHandling, ) -> Result<ExtractedSegments<'rs, 'b>, ReadStructureError>

Extracts the bases and quality scores for every segment in this read structure.

Returns a no-alloc iterator over (&ReadSegment, &[u8] bases, &[u8] quals) triples. All error conditions are checked up front, so the returned iterator is infallible and can be cheaply .collect()ed into a Vec when an owned collection is needed.

skip_handling controls whether SegmentType::Skip segments are emitted (SkipHandling::Include) or silently dropped (SkipHandling::Exclude).

§Errors
  • ReadStructureError::MismatchingBasesAndQualsLen if bases.len() != quals.len().
  • ReadStructureError::ReadTooShort if the read cannot accommodate every fixed segment. When the structure also has a + segment, the read must be strictly longer than the sum of the fixed-segment lengths (since + means at least one base).
  • ReadStructureError::ReadTooLong if the structure has no + segment and bases.len() does not exactly match length_of_fixed_segments. Silently truncating trailing bases is almost always a bug (wrong structure, stray adapter, etc.), so we require an exact match.
Source

pub fn has_fixed_length(&self) -> bool

Returns true if the ReadStructure has a fixed (i.e. non-variable) length, false if any segment has an indefinite length.

Source

pub fn fixed_length(&self) -> Option<usize>

Returns the fixed length if there is one.

Source

pub fn number_of_segments(&self) -> usize

Returns the number of segments in this read structure.

Source

pub fn segments(&self) -> &[ReadSegment]

Returns the underlying elements in this read structure.

Source

pub fn iter(&self) -> impl Iterator<Item = &ReadSegment>

Returns an iterator over the read segments.

Source

pub fn segments_by_type( &self, kind: SegmentType, ) -> impl Iterator<Item = &ReadSegment>

Returns the ReadSegments in this read structure of the given kind.

Source

pub fn templates(&self) -> impl Iterator<Item = &ReadSegment>

Returns the template ReadSegments in this read structure.

Source

pub fn sample_barcodes(&self) -> impl Iterator<Item = &ReadSegment>

Returns the sample barcode ReadSegments in this read structure.

Source

pub fn molecular_barcodes(&self) -> impl Iterator<Item = &ReadSegment>

Returns the molecular barcode ReadSegments in this read structure.

Source

pub fn skips(&self) -> impl Iterator<Item = &ReadSegment>

Returns the skip ReadSegments in this read structure.

Source

pub fn cellular_barcodes(&self) -> impl Iterator<Item = &ReadSegment>

Returns the cellular barcode ReadSegments in this read structure.

Source

pub fn first(&self) -> Option<&ReadSegment>

Returns the first ReadSegment in this read structure.

Source

pub fn last(&self) -> Option<&ReadSegment>

Returns the last ReadSegment in this read structure.

Trait Implementations§

Source§

impl Clone for ReadStructure

Source§

fn clone(&self) -> ReadStructure

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ReadStructure

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for ReadStructure

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats this read structure as a string.

Source§

impl From<ReadStructure> for String

Source§

fn from(rs: ReadStructure) -> Self

Renders the read structure to its canonical string form (e.g. "8B+M10T").

Source§

impl FromStr for ReadStructure

Source§

fn from_str(rs: &str) -> Result<Self, Self::Err>

Returns a new read structure from a string, or Err if parsing failed.

Source§

type Err = ReadStructureError

The associated error which can be returned from parsing.
Source§

impl Index<usize> for ReadStructure

Source§

fn index(&self, idx: usize) -> &Self::Output

Returns the ReadSegment at the given index in the read structure.

Source§

type Output = ReadSegment

The returned type after indexing.
Source§

impl IntoIterator for ReadStructure

Source§

type Item = ReadSegment

The type of the elements being iterated over.
Source§

type IntoIter = IntoIter<<ReadStructure as IntoIterator>::Item>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
Source§

impl PartialEq for ReadStructure

Source§

fn eq(&self, other: &ReadStructure) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl TryFrom<&[ReadSegment]> for ReadStructure

Source§

fn try_from(elements: &[ReadSegment]) -> Result<Self, Self::Error>

Builds a new read structure from a slice of elements.

Source§

type Error = ReadStructureError

The type returned in the event of a conversion error.
Source§

impl TryFrom<String> for ReadStructure

Source§

fn try_from(s: String) -> Result<Self, Self::Error>

Parses a read structure from an owned string; equivalent to [FromStr].

Source§

type Error = ReadStructureError

The type returned in the event of a conversion error.
Source§

impl StructuralPartialEq for ReadStructure

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.