Skip to content

feat: STARlong binary + long-read window-coverage filter - #116

Open
BenjaminDEMAILLE wants to merge 2 commits into
scverse:mainfrom
BenjaminDEMAILLE:bd/starlong
Open

feat: STARlong binary + long-read window-coverage filter#116
BenjaminDEMAILLE wants to merge 2 commits into
scverse:mainfrom
BenjaminDEMAILLE:bd/starlong

Conversation

@BenjaminDEMAILLE

@BenjaminDEMAILLE BenjaminDEMAILLE commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

STARlong: rustar-aligner-long binary and the long-read window-coverage filter.

What changed

rustar-aligner-long, mirroring STAR's STARlong: identical CLI, forcing the long-read stitcher via Parameters::long_read. Native STAR selects this by binary rather than by flag, and this matches that.

window_read_coverage, STAR's WC accumulation from ReadAlign_stitchPieces.cpp, threaded through stitch_seeds_with_jdb_debug. The --winReadCoverageRelativeMin / --winReadCoverageBasesMin cluster filter is gated on long_read, since standard STAR does not filter clusters by seed coverage.

--winReadCoverageBasesMin is new; --winReadCoverageRelativeMin already existed with default 0.5 and becomes effective.

Why

This is the themed split of the original bundled WASP-and-everything PR, per docs-old/dev/porting-from-star-rs.md.

One faithful defect

window_read_coverage_matches_star_rlast_zero_undercount pins STAR's rLast = 0 under-count for a seed starting at read position 0. It is reproduced rather than fixed: the filter threshold is calibrated against STAR's own numbers, so correcting the count in isolation would change which windows survive relative to the oracle.

Verification

cargo build, cargo test, cargo clippy -D warnings, cargo fmt --check — all green. Rebased onto current main.

🤖 Generated with Claude Code

BenjaminDEMAILLE and others added 2 commits July 29, 2026 00:33
Add rustar-aligner-long binary (STAR's STARlong: identical CLI, forces the
chaining-DP long-read stitcher via Parameters::long_read, matching how native
STAR selects it by binary rather than a flag).

Wire params.long_read through stitch_seeds_with_jdb_debug into a new
window_read_coverage (ReadAlign_stitchPieces.cpp's WC accumulation, faithful
to upstream's rLast=0 under-count for a seed starting at read position 0) and
gate the winReadCoverageRelativeMin/winReadCoverageBasesMin cluster filter on
long_read, since standard STAR does not filter clusters by seed coverage.

Refactor stitch_seeds_core's preamble into prepare_stitch_input, shared with
the (upcoming) STARlong chaining-DP stitcher stitch_seeds_long_read.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
`extend_alignment` gained an `extend_to_end` argument when --alignEndsType
landed. The two long-read chaining call sites pass `false`: they score a seed's
own extension potential during chaining, and --alignEndsType applies at the read
ends, not there.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant