simd-minimizers

Crates.iosimd-minimizers
lib.rssimd-minimizers
version1.4.0
created_at2025-01-29 00:22:59.829745+00
updated_at2025-09-03 14:42:22.977488+00
descriptionA SIMD-accelerated library to compute random minimizers
homepage
repositoryhttps://github.com/rust-seq/simd-minimizers
max_upload_size
id1534217
size112,433
Igor Martayan (imartayan)

documentation

README

simd-minimizers

crates.io docs

A SIMD-accelerated library to compute random minimizers.

It can compute all the minimizers of a human genome in 4 seconds using a single thread. It also provides a canonical version that ensures that a sequence and its reverse-complement always select the same positions, which takes 6 seconds on a human genome.

The underlying algorithm is described in the following preprint:

Requirements

This library supports AVX2 and NEON instruction sets. Make sure to set RUSTFLAGS="-C target-cpu=native" when compiling to use the instruction sets available on your architecture.

RUSTFLAGS="-C target-cpu=native" cargo run --release

Usage example

Full documentation can be found on docs.rs.

// Packed SIMD version.
use packed_seq::{PackedSeqVec, SeqVec};
let seq = b"ACGTGCTCAGAGACTCAG";
let k = 5;
let w = 7;

let packed_seq = PackedSeqVec::from_ascii(seq);
let mut minimizer_positions = Vec::new();
simd_minimizers::canonical_minimizer_positions(packed_seq.as_slice(), k, w, &mut minimizer_positions);
assert_eq!(minimizer_positions, vec![3, 5, 12]);
Commit count: 429

cargo fmt