Skip to content

Dependency discussion: the rust-seq crates (packed-seq, simd-minimizers, seq-hash) #203

Description

@BenjaminDEMAILLE

Dependency discussion per CONTRIBUTING.md. Sister issue to the sufr one; both came out of the
same August 2026 survey.

The org

rust-seq (Ragnar Groot Koerkamp et al.), all MIT, all released
2026-07-07, all actively maintained:

Crate Version What it is
packed-seq 5.0.0 Bitpacked DNA sequence trait + SIMD iteration
simd-minimizers 3.0.0 SIMD-accelerated random minimizers
seq-hash 0.2.0 Rolling k-mer hashes over bitpacked sequences
minimizer-iter, minimizer-queue Minimizer iteration / monotone-queue

Verdict per crate, to confirm

packed-seq — the only one worth a measurement. We already do our own packing
(src/index/sa_index.rs, plus 2-bit work in src/solo/whitelist.rs and src/solo/mod.rs) and our
own SIMD scanning (src/align/simd_scan.rs). The question is narrow: does packed-seq's
SIMD iteration beat find_stop's hand-rolled 16-byte chunk scan, on a representation we can
actually adopt? Note the obstacle: our genome bytes are not 2-bit. Padding/spacer values >= 5 are
load-bearing in the scan (genome[i] >= 5 is a stop condition), so a 2-bit packed representation
cannot express them. That likely rules it out for the seed-extension path and confines it, at best,
to the barcode/whitelist side.

simd-minimizers, minimizer-iter, minimizer-queue, seq-hash — decline. STAR seeds by
maximal mappable prefix search in the suffix array. Minimizer or k-mer sketching changes which
seeds are found, therefore which alignments are reported, therefore faithfulness against STAR.
That is a structural no, independent of how fast the crates are.

Checklist

  • Confirm the >= 5 padding argument above kills packed-seq for simd_scan.rs (or find the
    representation where it does not)
  • If any part survives: benchmark against the current hand-rolled scan on x86_64 and aarch64
  • Record the decline reasons for the minimizer/k-mer crates in writing so this is not resurveyed

Metadata

Metadata

Assignees

No one assigned

    Labels

    dependenciesPull requests/issues that update a dependency file

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions