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>
impl PackedSeqVecBase<2>
Sourcepub fn from_raw_parts(seq: Vec<u8>, len: usize) -> Self
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.
Sourcepub fn from_fastx(path: &Path) -> (Self, Vec<Range<usize>>)
Available on crate feature file_io only.
pub fn from_fastx(path: &Path) -> (Self, Vec<Range<usize>>)
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.
Sourcepub fn from_fastx_parallel(
path: &Path,
num_threads: usize,
) -> (Self, Vec<Range<usize>>)
Available on crate feature file_io only.
pub fn from_fastx_parallel( path: &Path, num_threads: usize, ) -> (Self, Vec<Range<usize>>)
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.
Trait Implementations§
Source§impl<const B: usize> Clone for PackedSeqVecBase<B>
impl<const B: usize> Clone for PackedSeqVecBase<B>
Source§impl<const B: usize> Debug for PackedSeqVecBase<B>
impl<const B: usize> Debug for PackedSeqVecBase<B>
Source§impl<const B: usize> Default for PackedSeqVecBase<B>where
Bits<B>: SupportedBits,
impl<const B: usize> Default for PackedSeqVecBase<B>where
Bits<B>: SupportedBits,
Source§impl<const B: usize> FlatType for PackedSeqVecBase<B>
impl<const B: usize> FlatType for PackedSeqVecBase<B>
Source§impl<const B: usize> MemDbgImpl for PackedSeqVecBase<B>
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
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
self below the current line. Read moreSource§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>
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>
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>
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>
Source§impl<const B: usize> MemSize for PackedSeqVecBase<B>
impl<const B: usize> MemSize for PackedSeqVecBase<B>
Source§impl<const B: usize> SeqVec for PackedSeqVecBase<B>where
Bits<B>: SupportedBits,
impl<const B: usize> SeqVec for PackedSeqVecBase<B>where
Bits<B>: SupportedBits,
Source§fn push_ascii(&mut self, seq: &[u8]) -> Range<usize> ⓘ
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.
type Seq<'s> = PackedSeqBase<'s, B>
Source§fn as_slice(&self) -> Self::Seq<'_>
fn as_slice(&self) -> Self::Seq<'_>
Source§fn push_seq<'a>(&mut self, seq: PackedSeqBase<'_, B>) -> Range<usize> ⓘ
fn push_seq<'a>(&mut self, seq: PackedSeqBase<'_, B>) -> Range<usize> ⓘ
Source§fn random(n: usize) -> Self
fn random(n: usize) -> Self
rand only.Source§fn slice(&self, range: Range<usize>) -> Self::Seq<'_>
fn slice(&self, range: Range<usize>) -> Self::Seq<'_>
Source§fn read_revcomp_kmer_u128(&self, k: usize, pos: usize) -> u128
fn read_revcomp_kmer_u128(&self, k: usize, pos: usize) -> u128
Source§fn from_ascii(seq: &[u8]) -> Self
fn from_ascii(seq: &[u8]) -> Self
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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 moreSource§impl<T> MemDbg for Twhere
T: MemDbgImpl,
impl<T> MemDbg for Twhere
T: MemDbgImpl,
Source§fn mem_dbg(&self, flags: DbgFlags) -> Result<(), Error>
fn mem_dbg(&self, flags: DbgFlags) -> Result<(), Error>
std only.Source§fn mem_dbg_on(
&self,
writer: &mut impl Write,
flags: DbgFlags,
) -> Result<(), Error>
fn mem_dbg_on( &self, writer: &mut impl Write, flags: DbgFlags, ) -> Result<(), Error>
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>
fn mem_dbg_depth(&self, max_depth: usize, flags: DbgFlags) -> Result<(), Error>
std only.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>
fn mem_dbg_depth_on( &self, writer: &mut impl Write, max_depth: usize, flags: DbgFlags, ) -> Result<(), Error>
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.