Skip to main content

PackedSeqVecBase

Struct PackedSeqVecBase 

Source
pub struct PackedSeqVecBase<const B: usize> { /* private fields */ }
Expand description

A variable-bit-width packed owned sequence of DNA bases.

Implementations§

Source§

impl PackedSeqVecBase<2>

Source

pub fn from_raw_parts(seq: Vec<u8>, len: usize) -> Self

Creates a SeqVec from a vector of packed bytes and a length in bp.

The vector should have at least 48 bytes of padding after len. Otherwise, the vector will be resized to be padded with zeros.

Source

pub fn from_fastx(path: &Path) -> (Self, Vec<Range<usize>>)

Available on crate feature file_io only.

Read a fasta/fastq file at the given path into a PackedSeq. Returns the sequence as well as the slices of all records.

Currently, all slices are bit-packed, without any padding.

Source

pub fn from_fastx_parallel( path: &Path, num_threads: usize, ) -> (Self, Vec<Range<usize>>)

Available on crate feature file_io only.

Read a plain FASTA/FASTQ file using num_threads workers. NOTE: This may return data out-of-order!

Returns the sequence and record ranges in chunk completion order. There may be padding between chunks; use the returned ranges to access records. A thread count of zero disables multi-threading. Compression formats without parallel decoding support are read sequentially.

Source§

impl PackedSeqVecBase<1>

Source

pub fn with_len(n: usize) -> Self

Source

pub fn random(len: usize, n_frac: f32) -> Self

Available on crate feature rand only.

Trait Implementations§

Source§

impl<const B: usize> Clone for PackedSeqVecBase<B>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<const B: usize> Debug for PackedSeqVecBase<B>

Source§

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

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

impl<const B: usize> Default for PackedSeqVecBase<B>
where Bits<B>: SupportedBits,

Source§

fn default() -> Self

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

impl<const B: usize> FlatType for PackedSeqVecBase<B>

Source§

type Flat = False

Whether the type is flat (True) or not (False).
Source§

impl<const B: usize> MemDbgImpl for PackedSeqVecBase<B>

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, _memdbg_refs: &mut HashSet<usize>, ) -> Result

Recursively displays the fields of self below the current line. Read more
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, dbg_refs: &mut HashSet<usize>, ) -> Result<(), Error>

Displays self at the given depth without any reference-address annotation; forwards to _mem_dbg_depth_on_impl with RefDisplay::None.
Source§

fn _mem_dbg_depth_on_impl( &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, dbg_refs: &mut HashSet<usize>, ref_display: RefDisplay, ) -> Result<(), Error>

Internal implementation for depth display. Read more
Source§

impl<const B: usize> MemSize for PackedSeqVecBase<B>

Source§

fn mem_size_rec( &self, _memsize_flags: SizeFlags, _memsize_refs: &mut HashMap<usize, usize>, ) -> usize

Recursive implementation that tracks visited references for deduplication. Read more
Source§

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

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

impl<const B: usize> SeqVec for PackedSeqVecBase<B>
where Bits<B>: SupportedBits,

Source§

fn push_ascii(&mut self, seq: &[u8]) -> Range<usize> ⓘ

For PackedSeqVec (2-bit encoding): map ASCII ACGT (and acgt) to DNA 0132 in that order. Other characters are silently mapped into 0..4.

Returns the range of the newly added sequence in the packed representation.

Uses the BMI2 pext instruction when available, based on the n_to_bits_pext method described at https://github.com/Daniel-Liu-c0deb0t/cute-nucleotides.

For BitSeqVec (1-bit encoding): map ACGTacgt to 0, and everything else to 1.

Source§

type Seq<'s> = PackedSeqBase<'s, B>

Source§

fn into_raw(self) -> Vec<u8> ⓘ

Convert into the underlying raw representation.
Source§

fn as_slice(&self) -> Self::Seq<'_>

Get a non-owning slice to the underlying sequence. Read more
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 clear(&mut self)

Empty the sequence.
Source§

fn push_seq<'a>(&mut self, seq: PackedSeqBase<'_, B>) -> Range<usize> ⓘ

Append the given sequence to the underlying storage. Read more
Source§

fn random(n: usize) -> Self

Available on crate feature rand only.
Generate a random sequence with the given number of characters.
Source§

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

Get a sub-slice of the sequence. Indices are character offsets.
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 k-mer from this sequence.
Source§

fn read_kmer_u128(&self, k: usize, pos: usize) -> u128

Extract a k-mer from this sequence.
Source§

fn read_revcomp_kmer_u128(&self, k: usize, pos: usize) -> u128

Extract a k-mer from this sequence.
Source§

fn from_ascii(seq: &[u8]) -> Self

Create a SeqVec from ASCII input.

Auto Trait Implementations§

§

impl<const B: usize> Freeze for PackedSeqVecBase<B>

§

impl<const B: usize> RefUnwindSafe for PackedSeqVecBase<B>

§

impl<const B: usize> Send for PackedSeqVecBase<B>

§

impl<const B: usize> Sync for PackedSeqVecBase<B>

§

impl<const B: usize> Unpin for PackedSeqVecBase<B>

§

impl<const B: usize> UnsafeUnpin for PackedSeqVecBase<B>

§

impl<const B: usize> UnwindSafe for PackedSeqVecBase<B>

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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

Source§

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

Available on crate feature std only.
Writes to stderr debug info 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 info about the structure memory usage, expanding all levels of nested structures.
Source§

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

Available on crate feature std only.
Writes to stderr debug info 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 info about the structure memory usage as mem_dbg_on, but expanding only up to max_depth levels of nested structures.
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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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 = !

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

fn try_from(value: U) -> Result<T, !>

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.