rustkmer 0.5.2

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

**Module**: `rustkmer::fuzzy::mutation`

## Overview

Mutation tolerance using Hamming distance
This module implements mutation tolerance by generating k-mer variants
within a specified Hamming distance from the original query.

## API Reference

### Consts

#### NUCLEOTIDES

```rust
const NUCLEOTIDES: [char; 4] = ['A', 'T', 'C', 'G'];
```

Nucleotide bases for mutations

### Fns

#### generate_mutation_variants

```rust
pub fn generate_mutation_variants(sequence: &str, mutation_distance: usize) -> FuzzyResult<Vec<String>> {
```

Generate mutation variants for a k-mer

This function generates all k-mers within the specified Hamming distance
from the original sequence.

# Arguments
* `sequence` - Original k-mer sequence
* `mutation_distance` - Maximum Hamming distance (number of mutations)

# Returns
Vector of mutation variants (including original sequence)

# Examples
```
use rustkmer::fuzzy::mutation::generate_mutation_variants;

let variants = generate_mutation_variants("ATGCGATGCTAGCG", 1).unwrap();
assert!(variants.len() > 13); // Original + single mutations
assert!(variants.contains(&"ATGCGATGCTAGCG".to_string())); // Original
```

#### hamming_distance

```rust
pub fn hamming_distance(seq1: &str, seq2: &str) -> usize {
```

Calculate Hamming distance between two sequences

# Arguments
* `seq1` - First sequence
* `seq2` - Second sequence

# Returns
Hamming distance (number of differing positions)

# Panics
Panics if sequences have different lengths

#### within_mutation_tolerance

```rust
pub fn within_mutation_tolerance(seq1: &str, seq2: &str, tolerance: usize) -> bool {
```

Check if two sequences are within mutation tolerance

#### generate_mutation_variants_iterative

```rust
pub fn generate_mutation_variants_iterative(sequence: &str, mutation_distance: usize) -> FuzzyResult<Vec<String>> {
```

Generate mutation variants using iterative approach

This method generates variants iteratively to avoid deep recursion
for sequences with high mutation tolerance.

#### generate_single_mutations

```rust
fn generate_single_mutations(sequence: &str) -> Vec<String> {
```

Generate all single mutations for a sequence

#### estimate_mutation_variants

```rust
pub fn estimate_mutation_variants(sequence_length: usize, mutation_distance: usize) -> usize {
```

Estimate the number of mutation variants

#### validate_mutation_params

```rust
pub fn validate_mutation_params(sequence: &str, mutation_distance: usize, max_variants: Option<usize>) -> FuzzyResult<()> {
```

Validate mutation tolerance parameters

---

*Source: [`mutation.rs`](../../../fuzzy/mutation.rs)*