scverse / scverse/rustar-aligner
Dependency discussion: interval-overlap crates (superintervals / coitrees / rust-lapper)
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 75
- Forks
- 7
- Avg merge
- 8m
- Merged PRs (30d)
- 1
Description
Survey item from August 2026, filed so the answer is on record. Expected outcome is decline
unless a profile says otherwise.
Candidates
| Crate | Version | License | Note |
|---|---|---|---|
superintervals |
0.3.1 |
non-standard on crates.io | Position-sorted superset index, SIMD counting |
coitrees |
0.4.0 |
non-standard on crates.io | Static interval tree, van Emde Boas layout |
rust-lapper |
1.3.0 |
MIT | Widely used, simple API |
The September 2025 interval benchmark puts superintervals fastest or tied across cases (1.25–1.44x
over COITrees as the polars-bio default), and notes rust-lapper collapsing ~25x on adversarial
datasets, which makes it risky as a general-purpose choice.
Why the default answer is no
Annotation and junction lookups here mirror STAR's own structures rather than being free choices:
src/quant/transcriptome.rs:151 builds an explicit sorted order for binary_search, and the
junction side is keyed maps plus STAR-shaped filtering (src/junction/). Swapping in a general
interval library would not just change speed, it would change what "overlap" means at the edges
(half-open vs closed, tie handling), which is exactly where faithfulness lives.
Two further blockers before any use: both superintervals and coitrees show a non-standard
license on crates.io, which must be resolved explicitly, and neither has been shown to be on a
hot path in this codebase.
Checklist
- Profile whether interval/annotation lookup is measurably hot at all (blocked on the benchmark
harness) - If it is: identify the exact query shape before shopping for a library
- Resolve the license question before any prototype, not after
- Otherwise record the decline with these reasons
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with src/quant/transcriptome.rs:151 and the junction code under src/junction/ to understand the existing lookup semantics. Profile interval and annotation lookup using the benchmark harness when available, then identify the exact query shape and check candidate licenses before considering a prototype. Done means the benchmark evidence and license status support a decision, or the decline is recorded with the stated reasons.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- bioinformatics, performance
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100