Struct AsciiSeq

Source
pub struct AsciiSeq<'s>(pub &'s [u8]);
Expand description

A &[u8] representing an ASCII-encoded DNA sequence of ACGTacgt.

Other characters will be mapped into [0, 4) via (c>>1)&3, or may cause panics.

Tuple Fields§

§0: &'s [u8]

Trait Implementations§

Source§

impl<'s> Clone for AsciiSeq<'s>

Source§

fn clone(&self) -> AsciiSeq<'s>

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<'s> CopyType for AsciiSeq<'s>
where &'s [u8]: MemSize,

Source§

impl<'s> Debug for AsciiSeq<'s>

Source§

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

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

impl<'s> MemDbgImpl for AsciiSeq<'s>
where &'s [u8]: MemDbgImpl,

Source§

fn _mem_dbg_rec_on( &self, _memdbg_writer: &mut impl Write, _memdbg_total_size: usize, _memdbg_max_depth: usize, _memdbg_prefix: &mut String, _memdbg_is_last: bool, _memdbg_flags: DbgFlags, ) -> Result

Source§

fn _mem_dbg_depth_on( &self, writer: &mut impl Write, total_size: usize, max_depth: usize, prefix: &mut String, field_name: Option<&str>, is_last: bool, padded_size: usize, flags: DbgFlags, ) -> Result<(), Error>

Source§

impl<'s> MemSize for AsciiSeq<'s>
where &'s [u8]: MemSize,

Source§

fn mem_size(&self, _memsize_flags: SizeFlags) -> usize

Returns the (recursively computed) overall memory size of the structure in bytes.
Source§

impl<'s> Ord for AsciiSeq<'s>

Source§

fn cmp(&self, other: &AsciiSeq<'s>) -> Ordering

This method returns an Ordering between self and other. Read more
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<'s> PartialEq for AsciiSeq<'s>

Source§

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

Source§

fn partial_cmp(&self, other: &AsciiSeq<'s>) -> 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<'s> Seq<'s> for AsciiSeq<'s>

Maps ASCII to [0, 4) on the fly. Prefer first packing into a PackedSeqVec for storage.

Source§

const BASES_PER_BYTE: usize = 1usize

Each input byte stores a single character.

Source§

const BITS_PER_CHAR: usize = 2usize

But each output bp only takes 2 bits!

Source§

fn to_vec(&self) -> AsciiSeqVec

Convert to an owned version.

Source§

fn iter_bp(self) -> impl ExactSizeIterator<Item = u8> + Clone

Iterate the basepairs in the sequence, assuming values in 0..4.

NOTE: This is only efficient on x86_64 with BMI2 support for pext.

Source§

fn par_iter_bp( self, context: usize, ) -> (impl ExactSizeIterator<Item = S> + Clone, usize)

Iterate the basepairs in the sequence in 8 parallel streams, assuming values in 0..4.

Source§

type SeqVec = AsciiSeqVec

The corresponding owned sequence type.
Source§

fn len(&self) -> usize

The length of the sequence in characters.
Source§

fn is_empty(&self) -> bool

Returns true if the sequence is empty.
Source§

fn get(&self, index: usize) -> u8

Get the character at the given index.
Source§

fn get_ascii(&self, index: usize) -> u8

Get the ASCII character at the given index, without mapping to b-bit values.
Source§

fn as_u64(&self) -> u64

Convert a short sequence (kmer) to a packed representation as u64.
Source§

fn revcomp_as_u64(&self) -> u64

Convert a short sequence (kmer) to a packed representation of its reverse complement as u64.
Source§

fn to_revcomp(&self) -> AsciiSeqVec

Compute the reverse complement of this sequence.
Source§

fn slice(&self, range: Range<usize>) -> Self

Get a sub-slice of the sequence. range indicates character indices.
Source§

fn par_iter_bp_delayed( self, context: usize, delay: usize, ) -> (impl ExactSizeIterator<Item = (S, S)> + Clone, usize)

Iterate over 8 chunks of the sequence in parallel, returning two characters offset by delay positions. Read more
Source§

fn par_iter_bp_delayed_2( self, context: usize, delay1: usize, delay2: usize, ) -> (impl ExactSizeIterator<Item = (S, S, S)> + Clone, usize)

Iterate over 8 chunks of the sequence in parallel, returning three characters: the char added, the one delay positions before, and the one delay2 positions before. Read more
Source§

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

Compare and return the LCP of the two sequences.
Source§

fn bits_per_char(&self) -> usize

Convenience function that returns b=Self::BITS_PER_CHAR.
Source§

fn to_word(&self) -> usize

👎Deprecated: Prefer to_u64.
Convert a short sequence (kmer) to a packed representation as usize.
Source§

fn to_word_revcomp(&self) -> usize

👎Deprecated: Prefer revcomp_to_u64.
Convert a short sequence (kmer) to a packed representation of its reverse complement as usize.
Source§

fn read_kmer(&self, k: usize, pos: usize) -> u64

Extract a k-mer from this sequence.
Source§

fn read_revcomp_kmer(&self, k: usize, pos: usize) -> u64

Extract a reverse complement k-mer from this sequence.
Source§

impl<'s> Copy for AsciiSeq<'s>

Source§

impl<'s> Eq for AsciiSeq<'s>

Source§

impl<'s> StructuralPartialEq for AsciiSeq<'s>

Auto Trait Implementations§

§

impl<'s> Freeze for AsciiSeq<'s>

§

impl<'s> RefUnwindSafe for AsciiSeq<'s>

§

impl<'s> Send for AsciiSeq<'s>

§

impl<'s> Sync for AsciiSeq<'s>

§

impl<'s> Unpin for AsciiSeq<'s>

§

impl<'s> UnwindSafe for AsciiSeq<'s>

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> MemDbg for T
where T: MemDbgImpl,

Source§

fn mem_dbg(&self, flags: DbgFlags) -> Result<(), Error>

Writes to stderr debug infos about the structure memory usage, expanding all levels of nested structures.
Source§

fn mem_dbg_on( &self, writer: &mut impl Write, flags: DbgFlags, ) -> Result<(), Error>

Writes to a core::fmt::Write debug infos about the structure memory usage, expanding all levels of nested structures.
Source§

fn mem_dbg_depth(&self, max_depth: usize, flags: DbgFlags) -> Result<(), Error>

Writes to stderr debug infos about the structure memory usage as mem_dbg, but expanding only up to max_depth levels of nested structures.
Source§

fn mem_dbg_depth_on( &self, writer: &mut impl Write, max_depth: usize, flags: DbgFlags, ) -> Result<(), Error>

Writes to a core::fmt::Write debug infos about the structure memory usage as mem_dbg_on, but expanding only up to max_depth levels of nested structures.
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V