Skip to main content

Module kmer

Module kmer 

Source
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§

IntKmer
A Kmer sequence with a statically know K. K will fill the underlying integer type.
K2
Marker trait for generating K=6 Kmers
K3
Marker trait for generating K=3 Kmers
K4
Marker trait for generating K=4 Kmers
K5
Marker trait for generating K=5 Kmers
K6
Marker trait for generating K=6 Kmers
K7
Marker trait for generating K=7 Kmers
K9
Marker trait for generating K=9 Kmers
K10
Marker trait for generating K=10 Kmers
K11
Marker trait for generating K=11 Kmers
K12
Marker trait for generating K=12 Kmers
K13
Marker trait for generating K=13 Kmers
K14
Marker trait for generating K=14 Kmers
K15
Marker trait for generating K=15 Kmers
K17
Marker trait for generating K=17 Kmers
K18
Marker trait for generating K=18 Kmers
K19
Marker trait for generating K=19 Kmers
K20
Marker trait for generating K=20 Kmers
K21
Marker trait for generating K=21 Kmers
K22
Marker trait for generating K=22 Kmers
K23
Marker trait for generating K=23 Kmers
K24
Marker trait for generating K=24 Kmers
K25
Marker trait for generating K=25 Kmers
K26
Marker trait for generating K=26 Kmers
K27
Marker trait for generating K=27 Kmers
K28
Marker trait for generating K=28 Kmers
K29
Marker trait for generating K=29 Kmers
K30
Marker trait for generating K=30 Kmers
K31
Marker trait for generating K=31 Kmers
K33
Marker trait for generating K=33 Kmers
K34
Marker trait for generating K=34 Kmers
K35
Marker trait for generating K=35 Kmers
K36
Marker trait for generating K=36 Kmers
K37
Marker trait for generating K=37 Kmers
K38
Marker trait for generating K=38 Kmers
K39
Marker trait for generating K=39 Kmers
K40
Marker trait for generating K=40 Kmers
K41
Marker trait for generating K=41 Kmers
K42
Marker trait for generating K=42 Kmers
K43
Marker trait for generating K=43 Kmers
K44
Marker trait for generating K=44 Kmers
K45
Marker trait for generating K=45 Kmers
K46
Marker trait for generating K=46 Kmers
K47
Marker trait for generating K=47 Kmers
K48
Marker struct for generating K=48 Kmers
K49
Marker struct for generating K=49 Kmers
K50
Marker struct for generating K=50 Kmers
K51
Marker struct for generating K=51 Kmers
K52
Marker struct for generating K=52 Kmers
K53
Marker struct for generating K=53 Kmers
K54
Marker struct for generating K=54 Kmers
K55
Marker struct for generating K=55 Kmers
K56
Marker struct for generating K=56 Kmers
K57
Marker struct for generating K=57 Kmers
K58
Marker struct for generating K=58 Kmers
K59
Marker struct for generating K=59 Kmers
K60
Marker struct for generating K=60 Kmers
K61
Marker struct for generating K=61 Kmers
K62
Marker struct for generating K=62 Kmers
K63
Marker struct for generating K=63 Kmers
VarIntKmer
A fixed-length Kmer sequence that may not fill the bits of T

Traits§

IntHelp
Trait for specialized integer operations used in DeBruijn Graph
KmerSize
Helper trait for declaring the K value of a Kmer. Will be removed when const generics are available

Type Aliases§

Kmer2
2-base kmer, backed by a single u8
Kmer3
3-base kmer, backed by a single u8
Kmer4
4-base kmer, backed by a single u8
Kmer5
5-base kmer, backed by a single u16
Kmer6
6-base kmer, backed by a single u16
Kmer7
7-base kmer, backed by a single u16
Kmer8
8-base kmer, backed by a single u16
Kmer9
9-base kmer, backed by a single u32
Kmer10
10-base kmer, backed by a single u32
Kmer11
11-base kmer, backed by a single u32
Kmer12
12-base kmer, backed by a single u32
Kmer13
13-base kmer, backed by a single u32
Kmer14
14-base kmer, backed by a single u32
Kmer15
15-base kmer, backed by a single u32
Kmer16
16-base kmer, backed by a single u32
Kmer17
17-base kmer, backed by a single u64
Kmer18
18-base kmer, backed by a single u64
Kmer19
19-base kmer, backed by a single u64
Kmer20
20-base kmer, backed by a single u64
Kmer21
21-base kmer, backed by a single u64
Kmer22
22-base kmer, backed by a single u64
Kmer23
23-base kmer, backed by a single u64
Kmer24
24-base kmer, backed by a single u64
Kmer25
25-base kmer, backed by a single u64
Kmer26
25-base kmer, backed by a single u64
Kmer27
27-base kmer, backed by a single u64
Kmer28
28-base kmer, backed by a single u64
Kmer29
29-base kmer, backed by a single u64
Kmer30
30-base kmer, backed by a single u64
Kmer31
31-base kmer, backed by a single u64
Kmer32
32-base kmer, backed by a single u64
Kmer33
33-base kmer, backed by a single u128
Kmer34
34-base kmer, backed by a single u128
Kmer35
35-base kmer, backed by a single u128
Kmer36
36-base kmer, backed by a single u128
Kmer37
37-base kmer, backed by a single u128
Kmer38
38-base kmer, backed by a single u128
Kmer39
39-base kmer, backed by a single u128
Kmer40
40-base kmer, backed by a single u128
Kmer41
41-base kmer, backed by a single u128
Kmer42
42-base kmer, backed by a single u128
Kmer43
43-base kmer, backed by a single u128
Kmer44
44-base kmer, backed by a single u128
Kmer45
45-base kmer, backed by a single u128
Kmer46
46-base kmer, backed by a single u128
Kmer47
47-base kmer, backed by a single u128
Kmer48
48-base kmer, backed by a single u128
Kmer49
49-base kmer, backed by a single u128
Kmer50
50-base kmer, backed by a single u128
Kmer51
51-base kmer, backed by a single u128
Kmer52
52-base kmer, backed by a single u128
Kmer53
53-base kmer, backed by a single u128
Kmer54
54-base kmer, backed by a single u128
Kmer55
55-base kmer, backed by a single u128
Kmer56
56-base kmer, backed by a single u128
Kmer57
57-base kmer, backed by a single u128
Kmer58
58-base kmer, backed by a single u128
Kmer59
59-base kmer, backed by a single u128
Kmer60
60-base kmer, backed by a single u128
Kmer61
61-base kmer, backed by a single u128
Kmer62
62-base kmer, backed by a single u128
Kmer63
63-base kmer, backed by a single u128
Kmer64
64-base kmer, backed by a single u128