scverse / scverse/rustar-aligner

Dependency discussion: interval-overlap crates (superintervals / coitrees / rust-lapper)

Open
#208 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

dependencies
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.