Conversation
added 2 commits
August 29, 2026 10:01
Hard-clipped supplementary alignments can keep nuc/msp tag coordinates from the full-length read. Their MSP coordinates run past the clipped SEQ, and reverse-strand records wrap the flipped index below zero. Both made ft fire panic with an out-of-range slice index. ft fire now checks the raw molecular coordinates before it scores a record. A record that fails the check gets a warning and is written to the output unchanged. Fixes #136
CI now runs on PRs that target release/** branches. The release-plz workflow copy on this branch triggers on pushes to release/**, so a merged fix opens a patch release PR against the branch, the same flow main has. cargo-dist is dispatched on the released tag instead of main, so binaries build from the patched 0.13.x source.
Member
Author
|
Superseded by #138: the check moves into the reader so every command drops these annotations, and it ships in 0.14.0 instead of a patch. Branch kept for reference. |
mrvollger
added a commit
that referenced
this pull request
Sep 18, 2026
Cherry-pick of the CI commit from the closed #137. Without it nothing releases from this branch: the release-plz workflow here still triggers only on pushes to `main`, so merging #142 opened no 0.13.1 release PR. - CI runs on PRs that target `release/**`. - release-plz triggers on pushes to `release/**` and on `workflow_dispatch`. Push events use the pushed branch's workflow file, so this copy only acts on this branch. - cargo-dist is dispatched on the released tag instead of `main`, so binaries build from the patched 0.13.x source. Merging this is itself a push to `release/v0.13`, so release-plz will run and open the `chore: release` PR for 0.13.1 with the #142 fix. Co-authored-by: Mitchell R. Vollger <mvollger@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #136.
ft fire --ontpanicked withrange start index 4294944243 out of range for slice of length 9910.Cause
The input BAM holds hard-clipped supplementary alignments that keep nuc/msp tags from the full-length read. The tag coordinates run past the clipped SEQ. On reverse-strand records the coordinate flip (
read_length - end) wraps below zero as a u32.get_bp_countthen slices the sequence with these values and panics.Fix
ft firechecks the raw molecular coordinates of the msp, m6a, and cpg annotations before it scores a record. If a coordinate runs past the sequence, it warns and writes the record to the output unchanged:Verified on the issue's sample: all 146 records process, with two warnings and no panic.
Regression test
tests/data/ont_hardclip_supplementary.bamholds two scorable primary reads plus the two crashing reads (one forward, one reverse) from the issue's sample.Patch release (0.13.1)
This PR targets
release/v0.13, a new maintenance branch cut from thev0.13.0tag. Main already has unreleased breaking commits, so the next release from main is 0.14.0. release-plz opens its release PR against the branch that runs the workflow, so this branch gets its own 0.13.1 release PR.The second commit backports the CI plumbing the branch needs:
release/**.release/**(push events use the pushed branch's workflow file, so this copy only acts on this branch).Release steps after merge:
chore: release(v0.13.1) againstrelease/v0.13. Merge it.v0.13.1, cuts the GitHub release, and fires cargo-dist for the binaries.Order matters: release 0.13.1 before the pending 0.14.0 release PR (#132) merges. After 0.14.0 is on crates.io, release-plz refuses to bump 0.13.x ("the local package has already a different version with respect to the registry package"). The forward-port to main is #138. 0.13.1 also carries #142, the
ft call-peaks --hapsfix for #140.Main
The forward-port (#138) moves this check into the reader so every command drops these annotations, not only FIRE. That is a behavior change for
extractandpileup, so it ships in 0.14.0 and this PR stays FIRE-only.