Skip to main content

ReadInfo

Struct ReadInfo 

Source
pub struct ReadInfo {
    pub ref_index1: i32,
    pub start1: i32,
    pub strand1: u8,
    pub ref_index2: i32,
    pub start2: i32,
    pub strand2: u8,
    pub library: Arc<str>,
    pub cell_barcode: Option<String>,
}
Expand description

Information about read positions needed for grouping and ordering.

This structure stores genomic position information for one or two reads (paired-end), along with library and optional cell barcode information. The R1/R2 positions are stored in their original order without normalization, matching fgbio’s behavior.

§Fields

  • ref_index1 - Reference sequence index for R1 (first read of pair)
  • start1 - Unclipped 5’ start position for R1
  • strand1 - Strand for R1 (0=forward, 1=reverse)
  • ref_index2 - Reference sequence index for R2 (or UNKNOWN_REF if unpaired)
  • start2 - Unclipped 5’ start position for R2
  • strand2 - Strand for R2
  • library - Library identifier from RG tag
  • cell_barcode - Optional cell barcode for single-cell applications

§Ordering

ReadInfo implements Ord matching fgbio’s case class field order:

  1. Reference index 1 (R1)
  2. Start position 1 (R1)
  3. Strand 1 (R1)
  4. Reference index 2 (R2)
  5. Start position 2 (R2)
  6. Strand 2 (R2)
  7. Library
  8. Cell barcode (optional)

Fields§

§ref_index1: i32

Reference sequence index for first read

§start1: i32

Unclipped 5’ position for first read

§strand1: u8

Strand for first read (0=forward, 1=reverse)

§ref_index2: i32

Reference sequence index for second read

§start2: i32

Unclipped 5’ position for second read

§strand2: u8

Strand for second read (0=forward, 1=reverse)

§library: Arc<str>

Library identifier (from RG tag). Uses Arc<str> to avoid cloning for every read.

§cell_barcode: Option<String>

Optional cell barcode (for single-cell data)

Implementations§

Source§

impl ReadInfo

Source

pub fn new( ref_index1: i32, start1: i32, strand1: u8, ref_index2: i32, start2: i32, strand2: u8, library: Arc<str>, cell_barcode: Option<String>, ) -> Self

Creates a new ReadInfo, automatically ordering by lower coordinate first.

This constructor automatically normalizes the order so that the read with the genomically earlier position becomes position 1. This matches fgbio’s behavior where the lower of the two mates’ positions comes first.

§Arguments
  • ref_index1 - Reference index for first read
  • start1 - Start position for first read
  • strand1 - Strand for first read (0=forward, 1=reverse)
  • ref_index2 - Reference index for second read
  • start2 - Start position for second read
  • strand2 - Strand for second read
  • library - Library identifier
  • cell_barcode - Optional cell barcode
§Returns

A new ReadInfo with reads ordered by genomic position (lower position first)

Source

pub fn single( ref_index: i32, start: i32, strand: u8, library: Arc<str>, cell_barcode: Option<String>, ) -> Self

Creates ReadInfo for a single-end or fragment read.

This constructor is used for unpaired reads or when only one read of a pair is available. The second read fields are set to UNKNOWN values.

§Arguments
  • ref_index - Reference sequence index
  • start - Unclipped 5’ start position
  • strand - Strand (0=forward, 1=reverse)
  • library - Library identifier
  • cell_barcode - Optional cell barcode
§Returns

A new ReadInfo for a single read

Source

pub fn unmapped(library: Arc<str>, cell_barcode: Option<String>) -> Self

Creates ReadInfo for an unmapped read.

All position and reference fields are set to UNKNOWN values since the read has no genomic alignment.

§Arguments
  • library - Library identifier
  • cell_barcode - Optional cell barcode
§Returns

A new ReadInfo for an unmapped read

Source

pub fn strand_to_byte(positive: bool) -> u8

Converts a strand boolean to a byte representation.

Converts the strand direction to the byte format used by ReadInfo:

  • true (positive/forward strand) -> 0
  • false (negative/reverse strand) -> 1
§Arguments
  • positive - true for forward strand, false for reverse
§Returns

Byte representation (0 or 1)

Source

pub fn from( template: &Template, cell_tag: Tag, library_lookup: &LibraryLookup, ) -> Result<Self>

Builds a ReadInfo from a template.

Extracts position information from the template’s reads, including unclipped 5’ positions, library information from the header’s @RG line (via library lookup), and optional cell barcode.

§Arguments
  • template - The template containing one or two reads
  • cell_tag - SAM tag to use for extracting cell barcode (e.g., “CB”)
  • library_lookup - Lookup table mapping read group IDs to library names
§Returns

A new ReadInfo populated from the template

§Errors

Returns an error if:

  • The template has no records
  • The unclipped position could not be computed (e.g., missing alignment data)

Trait Implementations§

Source§

impl Clone for ReadInfo

Source§

fn clone(&self) -> ReadInfo

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 ReadInfo

Source§

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

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

impl Hash for ReadInfo

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for ReadInfo

Source§

fn cmp(&self, other: &Self) -> Ordering

Compares ReadInfo in the same order as fgbio’s case class field order: refIndex1, start1, strand1, refIndex2, start2, strand2, library, cellBarcode

1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for ReadInfo

Source§

fn eq(&self, other: &ReadInfo) -> 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 PartialOrd for ReadInfo

Source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Eq for ReadInfo

Source§

impl StructuralPartialEq for ReadInfo

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<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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, 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.