Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Tracking: remaining ROADMAP.md items (Phases 14, 16, 17)

Aperta
#298 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 4 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
5/100
Tipo di issue
Bug
Chiarezza
Da chiarire
Stato di attività
Attiva
Stack tecnologico
rust

Direzione di ricerca

This is a tracking list, not a single task. Start with ROADMAP.md and DIVERGENCE.md in the repository, then pick one unchecked item and its linked PR (for example #300 for the SA binary-search padding or #309 for the MC and ch attributes). Each item is done when rustar's output matches STAR 2.7.11b for the named reads or tags, checked on the first 200k ERR12389696 pairs.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Tracks the items still open in ROADMAP.md as of abf2ab7, with what was measured against STAR 2.7.11b. Thematic background lives in #143, development status in #163.

Phase 14, STARsolo

  • 14.7 CB/UB/GX/GN SAM tags + CB_samTagOut: #226 (rebased on main; CB/UB are now filled as records leave the bounded-memory sort from #214, with a test through a spilled sort)

Phase 17, features

The four "planned" sub-phases are already on main. Checked against STAR on 20k yeast pairs:

sub-phase result
17.2 --outSAMtype BAM SortedByCoordinate SO:coordinate, 0 out-of-order records
17.3 PE chimeric 145 junctions in common, 2 only on each side
17.4 --outReadsUnmapped Fastx 3193 vs 3194 unmapped pairs, 3 names differ
17.6 --outStd BAM_SortedByCoordinate identical to the file output

The remaining differences come from alignment parity (Phase 16 below).

  • Roadmap text updated: #296
  • @HD VN:1.4 like STAR (was 1.6): #297

Phase 16, algorithm parity

Items listed in the roadmap:

  • .18919121 "SA construction diff": no longer reproducible. Genome, SA and SAindex built by rustar are byte-identical to STAR's on R64-1-1, with and without the GTF.
  • .6302610 PE false positive: no longer reproducible.
  • SE CIGAR insertion placement: see theme 1 below.
  • PE AS diffs: covered by the themes below.

Measured on the first 200k pairs of ERR12389696, STAR index with GTF (sjdbOverhang 149), default parameters. "Diff" counts mates whose primary differs and that are not multi-mapper ties (same NH, same AS, same loci set).

same ties diff only rustar maps only STAR maps
main 332 262 4 501 237 68 mates 34 mates
#295 332 408 4 505 91 68 mates 30 mates

Remaining themes on top of #295 (one PR each, if a STAR-faithful fix exists):

  • 1. Insertion placement in repeats (same AS, I at a different read position), ~15 mates: root cause was the seed search, #300 (padding compared on the wrong side in the SA binary search; on main it fixes 77 mates and the mates only rustar maps go from 68 to 12)
  • 2. Short-range alignments STAR finds with a higher AS (short exon at a read end), ~20 mates: #302 (seed overlap in rStart order, negative genome gap as insertion, sjdb overhang per side; stacked on #301)
  • 3. Long-range splices with alignIntronMax 0 (window formation), both directions, ~20 mates: #304 (no 589 kb pair cap when alignMatesGapMax is 0, flanks stop at chromosome ends, STAR's per-window dedup; stacked on #302). Fixes ROADMAP reads .13842 and .15864.
  • 4. Chromosome X 120.7-121.3 kb (gene with several short annotated introns), ~25 mates: #301 (same-diagonal seeds are never stitched, STAR's PE junction-consistency walk; 70 mates fixed on top of #295)
  • 5. Pairs only one tool maps (34 only rustar, 15 only STAR): #303 (N-flagged SAindex prefixes are not tight bounds). Remaining: .84534 (STAR finds 16 loci, uT:3), .114807-like mate-start cases.

PRs will be linked here as they open.

Measurement note

The first numbers above counted a mate as matching when chromosome, position and CIGAR matched, even if NH differed. Counting NH too (2026-10-09), each PR was re-checked mate by mate against its base:

change base mates fixed newly differing
#295 main 207 0 (the 9 were HAC1's annotated non-canonical intron: fixed on #295 by shifting back by sjdbShiftLeft)
#300 main 86 0
#303 main 9 0
#301 #295 80 0
#302 #301 11 0
#304 #302 52 0

Found while reviewing the work above

  • SAM tags are written in a fixed order; STAR follows the order given to --outSAMattributes (nM AS NH MD comes out NH AS nM MD): #306

  • --outSAMtype BAM Unsorted SortedByCoordinate (both files at once) is rejected: #305 (also makes --outStd redirect only the matching output, as STAR)

  • Header (#297 now covers all of these): no @CO user command line: line; --outSAMheaderCommentFile lines get a second @CO prefix; the TranscriptomeSAM BAM has @HD/@PG where STAR writes only @SQ/@RG; a user @HD without VN still gets VN:1.4

  • max_mappable_length updates its i1a/i1b history in the opposite order to STAR: checked, cannot change the SA range found, no change made

  • #226: barcode/gene tags without BAM output were dropped silently; now refused like STAR

  • Unmapped records carry AS:i:0 nM:i:0; STAR writes the best transcript's values: #310 (with MAPQ, uT:4 and half-mapped mate fields). With #311: all 62,966 unmapped records of the 200k pairs identical to STAR, from 0

  • Fully unmapped records have MAPQ 255; STAR writes 0: #310

  • MC and ch attributes are not implemented (STAR's All includes both): #309

  • Chimeric WithinBAM records use a fixed SA NM AS set and ignore --outSAMattributes: checked with main's #307 + #309, tags and order match STAR on every chimeric record in 7 attribute configurations

  • An explicit XS in --outSAMattributes is dropped unless --outSAMstrandField intronMotif; STAR switches to intronMotif instead: #314 (with the parity stack, branch merge/xs-on-parity-stack: XS identical to STAR at all 332,692 common loci of the 200k pairs)

  • --quantMode GeneCounts requires --sjdbGTFfile even when the index already has the annotation; STAR does not: #308

  • With a GTF given at mapping time, annotated non-canonical junctions are keyed on true coordinates rather than STAR's flushed ones: #312 (STAR's on-the-fly sjdb insertion; 0 mates differ on 200k pairs, _STARgenome byte-identical)

  • Yeast PE reads still differing after the whole stack: all fixed by #311 (strict seed-chain bound, junction-scan early exit, pair genomic-length span; with #300 and #303 merged in)

Whole stack

#295 (with its fix) + #301 + #302 + #304, on the first 200k pairs of ERR12389696 against STAR 2.7.11b, NH-aware: 350 mates fixed, 0 newly differing versus main. #300 and #303 are independent of that stack and add 86 and 9 more on main.

  • With a GTF given at mapping time, TranscriptomeSAM still prefers the index tables: #313 (and STAR's transcript order; @SQ lines identical)
  • #294 superseded by main's #307 (PE nM = pair total)

200k yeast pairs: mate for mate

With #311 (= #295 + #301 + #302 + #304 + #300 + #303 + #311), the first 200k ERR12389696 pairs match STAR 2.7.11b on chromosome, position, CIGAR and NH for every mate, paired-end and single-end, on the index with and without the GTF. The only remaining differences are multimapper primary ties (DIVERGENCE.md §1.1). Versus main: 459 mates fixed with the GTF index, 205 without, 0 newly differing.

  • Chimeric detection (yeast 20k): PE 75/78 WithinBAM records identical, 3 differ in position; SE 82/86, STAR finds 2 chimeric reads rustar misses and one multimapper differs (NH 1 + SA vs NH 2)

  • TranscriptomeSAM records: #315 (STAR's random primary via its mt19937 stream, pair-level soft-clip budget, merged M blocks, MAPQ from nAlignT, STAR's order): all 274,542 records of the 200k pairs identical to STAR --runThreadN 1, in order. Single-end order and BySJout draw order done on #315 too.

  • --outFilterType BySJout and SJ.out.tab filtering: #316 (genomic SAM, SJ.out.tab and transcriptome BAM identical to STAR on 200k pairs; Normal-mode SJ.out.tab now identical too)

  • --twopassMode Basic: #317 (pass-1 junctions inserted into the genome like STAR; pass-1 and final SJ.out.tab byte-identical, 0 mates differ)

Lingua principale
Rust
Stelle
90
Fork
9
Merge medio
21h 12m
PR unite (30g)
21

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di scverse/rustar-aligner

Tutte le issue di scverse/rustar-aligner

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.