Skip to main content

TwoBitSequence

Struct TwoBitSequence 

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

A DNA sequence stored in 2-bit packed representation.

Each byte holds 4 bases. The encoding is:

  • A = 0b00
  • C = 0b01
  • G = 0b10
  • T = 0b11

Bases are packed from the most significant bits: the first base occupies bits 7..6, the second bits 5..4, and so on.

Implementations§

Source§

impl TwoBitSequence

Source

pub fn encode(seq: &[u8]) -> Result<Self>

Encode an ASCII DNA sequence into 2-bit packed representation.

Only unambiguous bases (A, C, G, T) are supported. Case-insensitive.

§Errors

Returns CyaneaError::InvalidInput if any base is not A, C, G, or T.

§Example
use cyanea_seq::twobit::TwoBitSequence;

let seq = TwoBitSequence::encode(b"ACGT").unwrap();
assert_eq!(seq.len(), 4);
assert_eq!(seq.decode(), b"ACGT");
Source

pub fn decode(&self) -> Vec<u8>

Decode back to ASCII DNA bytes.

Always produces uppercase A, C, G, T.

Source

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

Get the base at a specific position.

Returns None if index >= len.

Source

pub fn len(&self) -> usize

Number of bases in the sequence.

Source

pub fn is_empty(&self) -> bool

Whether the sequence is empty.

Source

pub fn kmer(&self, pos: usize, k: usize) -> Option<u64>

Extract a k-mer starting at pos as an integer encoding.

Each base occupies 2 bits in the returned u64, with the first base in the most significant position. Maximum k is 32 (64 bits / 2 bits per base).

Returns None if pos + k > len or k > 32 or k == 0.

Source

pub fn complement(&self) -> Self

Compute the bitwise complement (A<->T, C<->G).

In 2-bit encoding, complement is a simple XOR with 0b11:

  • A (00) -> T (11)
  • C (01) -> G (10)
  • G (10) -> C (01)
  • T (11) -> A (00)

Trait Implementations§

Source§

impl Clone for TwoBitSequence

Source§

fn clone(&self) -> TwoBitSequence

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 TwoBitSequence

Source§

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

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

impl PartialEq for TwoBitSequence

Source§

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

Source§

impl StructuralPartialEq for TwoBitSequence

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> Same for T

Source§

type Output = T

Should always be Self
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.