New module: modkit/extractfull - #11285
Conversation
Add new nf-core module wrapping `modkit extract full`, which transforms the MM/ML tags in a modBAM into a tab-separated per-read-per-position probability table. Output can be BGZF-compressed via `--bgzf` in `ext.args`. Useful for downstream custom filtering, plotting, and ML training on read-level methylation probabilities. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3c8814f to
46887a7
Compare
|
This needs to be called modkit/extractfull I think (can't be modkit/extract/full, as linked in @famosab's issue on tools) |
|
This PR has been tagged as awaiting-changes or awaiting-feedback by an @nf-core/modules contributor. Remove stale label or add a comment if it is still useful. |
nf-core module names must be <tool> or <tool>/<subtool> (two levels max); `modkit/extract/full` failed the `main_nf_module_granularity` lint check. Renamed directory, process name (MODKIT_EXTRACTFULL), meta.yml name and nf-test tags accordingly. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E7RSvpouxbMBdimYSwJ5ZP
|
@SPPearce agreed — renamed to This was the only remaining CI failure: Sibling PR #11286 ( |
…o 0.6.4 Ports the review changes from nf-core#11286 to this module. - Snapshot via `sanitizeOutput(process.out)` with `assert process.success` outside `assertAll`, so a tool failure fails fast rather than reporting a snapshot mismatch against empty output. Requires nft-utils 1.x, which is why master is merged in first. - Drop the redundant exists/size asserts on the non-stub test; the snapshot already covers the tsv and an empty file is caught by the md5 lint check. - Remove tests/nextflow.config (it only set an empty ext.args) and the `config` directive that loaded it. - Bump ont-modkit 0.6.1 -> 0.6.4 (clears the `bioconda_latest` lint warning); container tag `0.6.4--h7f49ad2_0` verified on the Galaxy depot and quay.io. Non-stub tsv md5 is unchanged at 8300986c98d1b67973439ced4e7f233c across both the config removal and the version bump. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JAsT7dzCcLSicJxFRWJozr
|
Small update since the last round: rebased onto master, switched the tests to |
PR checklist
Summary
Adds a new nf-core module wrapping `modkit extract full`, which transforms the MM/ML tags in a modBAM into a tab-separated per-read-per-position probability table. Emits one row for every modified-base probability call in every read.
The module auto-detects `--bgzf` in `ext.args` and adjusts the output filename suffix accordingly (`.tsv` vs `.tsv.gz`), so users don't get a misleading extension when enabling compression.
Why
`modkit extract full` is the source of truth for read-level methylation probabilities and is essential for custom downstream filtering, phased methylation plots, and ML training on raw probability distributions. Paired with `modkit extract calls` (companion PR) which emits thresholded categorical calls.
Test data
Uses the existing `test.sorted.phased.bam` from nf-core/test-datasets (modules branch). No new test data required.
🤖 Generated with Claude Code