Fix ONT bam file ML/MM parsing for h and m modifications - #112
Open
kpalin wants to merge 2 commits into
Open
Conversation
When a read carries both 5hmC (C+h) and 5mC (C+m) modifications with different position counts, the ML probability array was sliced using MM_pos * nr_MM_vals as the offset — implicitly assuming equal block sizes. This caused the guard condition to fail (e.g. 611 >= 956 is false for real ONT reads with ~133 C+h and ~478 C+m positions), leaving ML_str un-trimmed and triggering a size-mismatch throw in parse_np_fields_by_mod. Fix: compute ml_offset as the cumulative sum of position counts from all prior MM sections before overwriting MM_str. Matches the SAM spec that ML values are ordered identically to MM positions across all sections. Add test_ont_ml.cpp with 5 unit tests covering unequal counts (both orderings), equal counts, and only-m cases. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.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.
Works for me. Claude hallusinated the new build target in setup.py (which is not modified)