You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ft call-peaks: peak caller for FIRE pileup BED output. Identifies enriched regions, applies optional FIRE fiber-level filters, and emits per-peak statistics.
ft mock-fire: generate mock FIRE-style data for testing and benchmarking pipelines.
ft benchmark: lightweight benchmarking harness for measuring throughput on key subcommands.
🔧 Improvements
ft pileup: accepts multiple regions in a single invocation; default --frac-fibers filter applied to drop low-coverage windows.
FIRE fiber-level filters hoisted to global FiberFilters: --fire-filter, --min-msp, --min-ave-msp-size, and --skip-no-m6a are now available as global flags shared by ft fire, ft pileup, and ft call-peaks. --fire-filter is a convenience preset; individual flags override its defaults.
Train-FIRE Snakemake pipeline added under Train-FIRE/ for end-to-end FIRE model training.
Build/dev-loop improvements: thin-LTO and a dedicated test profile for faster iteration.
🐛 Bug fixes
fa:Z extras pairing on reverse-strand reads with overlapping/shared-start peaks (follow-up to #103): when multiple BED annotations share a query start position on a reverse-strand read, the post-hoc ann_vals.reverse() step in FiberAnnotations::from_bam_tags did not produce a permutation equivalent to the stable sort over flipped coordinates, scrambling the fa:Z extras (e.g. peak names/lengths) relative to their fs/fl annotations on extraction. Fix pre-pairs extras with annotations before the flip+sort so the permutation is consistent. BAM encodings were always correct; the bug only affected extraction. Affects v0.8.0–v0.8.2.
hp tag parsing accepts all integer widths. longcalld writes hp as a 32-bit integer; the previous code only accepted one width and would error on those reads. hp is not in the SAM aux spec, so we now accept any integer type. (#108)
🧪 Tests
tests/call_peaks_test.rs: end-to-end coverage of the new peak caller.
tests/fibertig_test.rs: regression test for the fa:Z reverse-strand shared-start pairing bug, using Anna Minkina's exact failing input.
Unit tests in src/utils/input_bam.rs covering passes_fire_filter semantics: skip-no-m6a behavior, min-msp, min-ave-msp-size, the --fire-filter combo, and explicit-flag overrides.
Regression test harness via insta snapshots (tests/regression/, #106). Covers ft extract --m6a/--nuc/--msp/--all, ft center, ft qc, ft pileup, and ft fire --extract against the existing test BAMs. Update workflow documented in CONTRIBUTING.md.
⚡ Performance
Per-record FIRE feature extraction in ft fire -f is now parallelized (#104).
[0.8.2]
Bug Fixes
ft center: fix off-by-one in centered_query_start/centered_query_end for minus strand reads. The half-open interval negation was incorrect, causing m6a positions to index into the wrong base when slicing query_sequence[-centered_query_end:] on minus strand reads. Plus strand and subset_sequence were unaffected.
ft center: add missing fire_qual column to wide format header. The header had 21 columns but data rows had 22, causing column misalignment when parsing.
[0.8.1]
Fixed a bug where pg-inject could make fibertigs that were longer than needed at the end of chromosomes.
Install fibertools-rs 0.9.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/fiberseq/fibertools-rs/releases/download/v0.9.0/fibertools-rs-installer.sh | sh
ft center: fix off-by-one in centered_query_start/centered_query_end for minus strand reads. The half-open interval negation was incorrect, causing m6a positions to index into the wrong base when slicing query_sequence[-centered_query_end:] on minus strand reads. Plus strand and subset_sequence were unaffected.
ft center: add missing fire_qual column to wide format header. The header had 21 columns but data rows had 22, causing column misalignment when parsing.
Install fibertools-rs 0.8.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/fiberseq/fibertools-rs/releases/download/v0.8.2/fibertools-rs-installer.sh | sh
fix: do not report m6A predictions that happen within the first 7 or last 7 bp of a read. This is so the ML model only operates on real data. No changes to other calls. Will fix #65
fix: report footprint codes even if there is no spanning msp, fixes #63
feat: add a pyft utility that can take extract --all data and make it long format for plotting.
feat: Add a shuffle option to pileup to help with the FDR calculations in FIRE
feat: make nucleosomes and MSPs optional in pileup
chore: use vergen for cli version
feat: add phasing stats to QC
feat: allow strip-base mods to filter on base mod quality.