Module debruijn::kmer[][src]

Expand description

Represent kmers with statically know length in compact integer types

A kmer is a DNA sequence with statically-known length K. The sequence is stored the smallest possible integer type Efficient methods for reverse complement and shifting new bases into the left or right of a sequence are provided. Kmers implement Eq to test if two kmers represent the same string. Kmers implement Ord, which corresponds to the natural lexicographic ordering.

use debruijn::*;
use debruijn::kmer::*;

let k1 = Kmer16::from_ascii(b"ACGTACGTACGTACGT");

// Reverse complement
let rc_k1 = k1.rc();

// Double reverse complement
let k1_copy = rc_k1.rc();
assert_eq!(k1, k1_copy);

// Push one base onto the left
assert_eq!(k1.extend_left(base_to_bits(b'T')), Kmer16::from_ascii(b"TACGTACGTACGTACG"));

// Generate a set of kmers from a string, then sort
let mut all_kmers = Kmer16::kmers_from_ascii(b"TACGTACGTACGTACGTT");
all_kmers.sort();
assert_eq!(all_kmers,
    vec![
        Kmer16::from_ascii(b"ACGTACGTACGTACGT"),
        Kmer16::from_ascii(b"CGTACGTACGTACGTT"),
        Kmer16::from_ascii(b"TACGTACGTACGTACG")
    ]);

Structs

A Kmer sequence with a statically know K. K will fill the underlying integer type.

Marker trait for generating K=6 Kmers

Marker trait for generating K=6 Kmers

Marker trait for generating K=6 Kmers

Marker trait for generating K=6 Kmers

Marker trait for generating K=6 Kmers

Marker trait for generating K=12 Kmers

Marker trait for generating K=12 Kmers

Marker trait for generating K=14 Kmers

Marker trait for generating K=14 Kmers

Marker trait for generating K=20 Kmers

Marker trait for generating K=24 Kmers

Marker trait for generating K=30 Kmers

Marker trait for generating K=31 Kmers

Marker trait for generating K=40 Kmers

Marker struct for generating K=48 Kmers

A fixed-length Kmer sequence that may not fill the bits of T

Traits

Trait for specialized integer operations used in DeBruijn Graph

Helper trait for declaring the K value of a Kmer. Will be removed when const generics are available

Type Definitions

8-base kmer, backed by a single u16

10-base kmer, backed by a single u32

12-base kmer, backed by a single u32

14-base kmer, backed by a single u32

15-base kmer, backed by a single u32

16-base kmer, backed by a single u32

20-base kmer, backed by a single u64

24-base kmer, backed by a single u64

30-base kmer, backed by a single u64

32-base kmer, backed by a single u64

40-base kmer, backed by a single u128

48-base kmer, backed by a single u128

64-base kmer, backed by a single u128