rustkmer 0.5.2

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

**Module**: `rustkmer::fuzzy::normalization`

## Overview

Length normalization for k-mer queries
This module handles length normalization by padding or truncating queries
to match the database k-mer size using 'N' characters.

## API Reference

### Fns

#### generate_normalized_variants

```rust
pub fn generate_normalized_variants(query: &str, kmer_size: usize) -> FuzzyResult<Vec<String>> {
```

Normalize query length to match k-mer size

This function generates all possible normalized variants when the query
length differs from the target k-mer size.

# Arguments
* `query` - Original query string
* `kmer_size` - Target k-mer size

# Returns
Vector of normalized query strings

# Examples
```
use rustkmer::fuzzy::normalization::generate_normalized_variants;

// Query shorter than k-mer size (12mer for 13mer database)
let variants = generate_normalized_variants("ATGCGATGCTAG", 13).unwrap();
assert_eq!(variants.len(), 2); // N + query OR query + N
assert!(variants.contains(&"NATGCGATGCTAG".to_string()));
assert!(variants.contains(&"ATGCGATGCTAGN".to_string()));

// Query longer than k-mer size (15mer for 13mer database)
let variants = generate_normalized_variants("ATGCGATGCTAGCGT", 13).unwrap();
assert!(variants.len(), 3); // All possible 13mer substrings
```

#### generate_padded_variants

```rust
fn generate_padded_variants(query: &str, kmer_size: usize) -> FuzzyResult<Vec<String>> {
```

Generate padded variants when query is shorter than k-mer size

#### generate_truncated_variants

```rust
fn generate_truncated_variants(query: &str, kmer_size: usize) -> FuzzyResult<Vec<String>> {
```

Generate truncated variants when query is longer than k-mer size

#### validate_normalization_params

```rust
pub fn validate_normalization_params(query: &str, kmer_size: usize) -> FuzzyResult<()> {
```

Validate length normalization parameters

#### estimate_normalization_variants

```rust
pub fn estimate_normalization_variants(query: &str, kmer_size: usize) -> usize {
```

Estimate the number of normalization variants that would be generated

#### would_exceed_normalization_limit

```rust
pub fn would_exceed_normalization_limit(query: &str, kmer_size: usize, max_variants: usize) -> bool {
```

Check if normalization would exceed variant limits

#### intelligent_normalization

```rust
pub fn intelligent_normalization(query: &str, kmer_size: usize) -> FuzzyResult<Vec<String>> {
```

Apply intelligent length normalization

This function uses heuristics to determine the best normalization strategy
based on the query and database characteristics.

#### validate_and_normalize

```rust
pub fn validate_and_normalize(query: &str, kmer_size: usize) -> FuzzyResult<Vec<String>> {
```

Validate and normalize a query string

This is a convenience function that validates the query parameters
and returns normalized variants.

#### get_normalization_info

```rust
pub fn get_normalization_info(query: &str, kmer_size: usize) -> FuzzyResult<NormalizationInfo> {
```

Get normalization information for a query

---

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