Skip to content

Repository files navigation

seq-hash

crates.iodocs

A SIMD-accelerated library for iterating over k-mer hashes of DNA sequences, building on packed_seq. Building block for simd-minimizers.

Paper: Please cite the simd-minimizers paper, for which this crate was developed:

Requirements

This library requires AVX2 or NEON instruction sets, which, on x64, requires either target-cpu=native or target-cpu=x86-64-v3. See this README for details and this blog for background. The same restrictions apply when using seq-hash in a larger project.

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

Usage example

Full documentation can be found on docs.rs.

use seq_hash::packed_seq;use packed_seq::{AsciiSeqVec,PackedSeqVec,SeqVec};use seq_hash::{KmerHasher,NtHasher};let seq = b"ACGGCAGCGCATATGTAGT";let packed_seq = PackedSeqVec::from_ascii(seq);let k = 3;// Default `NtHasher` is canonical.let hasher = <NtHasher>::new(k);// Consider a 'context' of a single kmer.let hashes:Vec<_> = hasher.hash_kmers_simd(packed_seq.as_slice(),1).collect();assert_eq!(hashes.len(), seq.len() - (k-1));

About

Rolling k-mer hashes of bitpacked (DNA) sequences

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages