rustkmer 0.5.2

High-performance k-mer counting tool in Rust
Documentation
# Encoding

**Module**: `rustkmer::kmer::encoding`

## Overview

K-mer encoding and decoding functions
Provides efficient bit-packed encoding of DNA sequences for k-mer counting.

## API Reference

### Consts

#### A

```rust
const A: u8 = 0; // A = 00
```

DNA base encoding constants

#### MAX_KMER_SIZE_IN_U64

```rust
pub const MAX_KMER_SIZE_IN_U64: usize = 32;
```

Maximum k-mer size that fits in a u64 (64 / 2 = 32)

### Fns

#### encode_kmer

```rust
pub fn encode_kmer(sequence: &str) -> Result<u64, KmerError> {
```

Encode a DNA sequence into a packed bit representation

# Arguments
* `sequence` - DNA sequence string (must contain only A, C, G, T)

# Returns
* `Ok(u64)` - Packed representation if valid
* `Err(KmerError)` - Error if invalid characters found

# Examples
```
use rustkmer::kmer::encoding::encode_kmer;

let encoded = encode_kmer("ATGC").unwrap();
// ATGC -> 00110110 (A=00, T=11, G=10, C=01)
assert_eq!(encoded, 0b00110110);
```

#### encode_kmer_bytes

```rust
pub fn encode_kmer_bytes(sequence: &[u8]) -> Result<u64, KmerError> {
```

Encode a DNA sequence from byte slice into a packed bit representation

# Arguments
* `sequence` - DNA sequence as bytes (must contain only A, C, G, T, case insensitive)

# Returns
* `Ok(u64)` - Packed representation if valid
* `Err(KmerError)` - Error if invalid characters found

#### decode_kmer

```rust
pub fn decode_kmer(encoded: u64, length: usize) -> String {
```

Decode a packed k-mer back into a DNA sequence string

# Arguments
* `encoded` - Packed k-mer representation
* `length` - Length of the k-mer (number of bases)

# Returns
DNA sequence string

# Examples
```
use rustkmer::kmer::encoding::{encode_kmer, decode_kmer};

let original = "ATGC";
let encoded = encode_kmer(original).unwrap();
let decoded = decode_kmer(encoded, original.len());
assert_eq!(decoded, original);
```

#### reverse_complement

```rust
pub fn reverse_complement(encoded: u64, length: usize) -> u64 {
```

Get the reverse complement of a packed k-mer

# Arguments
* `encoded` - Packed k-mer representation
* `length` - Length of the k-mer

# Returns
Packed reverse complement representation

#### validate_sequence

```rust
pub fn validate_sequence(sequence: &str) -> bool {
```

Validate that a DNA sequence contains only valid characters

# Arguments
* `sequence` - DNA sequence string

# Returns
`true` if valid, `false` if contains invalid characters

#### has_ambiguous_bases

```rust
pub fn has_ambiguous_bases(sequence: &str) -> bool {
```

Check if a sequence contains ambiguous bases (N)

# Arguments
* `sequence` - DNA sequence string

# Returns
`true` if contains ambiguous bases, `false` if all valid

---

*Source: [`encoding.rs`](../../../kmer/encoding.rs)*