Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## v1.2.0dev

### `Added`

- [#188](https://github.com/IntGenomicsLab/lrsomatic/pull/188) - Added `modkit_args` (default `--cpg --modified-bases 5mC`) to control the arguments passed to `modkit pileup`, and `modkit_phased` to run the pileup with `--phased` on the Longphase-haplotagged BAMs, producing `_hp1`, `_hp2` and `_combined` bedMethyl files per sample (@ljwharbers).

### `Changed`

- [#184](https://github.com/IntGenomicsLab/lrsomatic/pull/184) - Replaced the CHM13 Severus panel of normals with the merged 1000 Genomes + ASAP panel (@AmberVerhasselt).

### `Fixed`

- [#188](https://github.com/IntGenomicsLab/lrsomatic/pull/188) - `MODKIT_PILEUP` now runs a patched modkit 0.6.4 (`ghcr.io/ljwharbers/modkit:0.6.4-pacbiofix-697de7b`, built from [ljwharbers/modkit@pacbio-conflict-fix](https://github.com/ljwharbers/modkit/tree/pacbio-conflict-fix)) that keeps reads whose 5mC and 5hmC probabilities sum above 1 and fixes pileup on PacBio-style MM tags. Stock modkit 0.4.3-0.6.4 silently dropped 32-65 % of reads from recent PacBio HiFi BAMs (Jasmine >= 26.1.3) and returned empty `--cpg` pileups ([nanoporetech/modkit#612](https://github.com/nanoporetech/modkit/issues/612); fix proposed upstream in [nanoporetech/modkit#720](https://github.com/nanoporetech/modkit/pull/720)). The module should return to the nf-core biocontainer once a modkit release includes the fix. `MODKIT_PILEUP` now also defaults to `--cpg --modified-bases 5mC`; the previous unfiltered pileup (all modification codes, all contexts) produced 30-45 GB per sample (@ljwharbers).
- [#182](https://github.com/IntGenomicsLab/lrsomatic/pull/182) - Added `--vcf` to the default `vep_args` so VEP writes VCF output rather than its default tab-delimited format (@AmberVerhasselt).

## v1.1.0 - [2026-04-28]
Expand Down
6 changes: 6 additions & 0 deletions conf/modules.config
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,12 @@ process {
//

withName: '.*:MODKIT_PILEUP' {
ext.args = {
[
params.modkit_args ?: '',
params.modkit_phased ? '--phased' : ''
].join(' ').trim()
}
publishDir = [
path: { "${params.outdir}/${meta.id}/methylation/${meta.type}/modkit_pileup" },
mode: params.publish_dir_mode,
Expand Down
15 changes: 10 additions & 5 deletions docs/output.md
Original file line number Diff line number Diff line change
Expand Up @@ -223,15 +223,20 @@ QC outputs are placed under `tumor/` for all samples, and additionally under `no
├── methylation
│ ├── tumor
│ │ └── modkit_pileup
│ │ └── sample.bed.gz
│ │ ├── sample.bed.gz # default
│ │ ├── sample_hp1.bed.gz # --modkit_phased only
│ │ ├── sample_hp2.bed.gz # --modkit_phased only
│ │ └── sample_combined.bed.gz # --modkit_phased only
│ ├── normal # paired samples only
│ │ └── modkit_pileup
│ │ └── sample.bed.gz
│ │ └── ... # same layout as tumor
```

| File | Description |
| -------------------------------------------- | ----------------------------------------------------------------------------------- |
| `{tumor,normal}/modkit_pileup/sample.bed.gz` | Modkit pileup BED file containing per-CpG methylation frequency and coverage values |
| File | Description |
| ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `{tumor,normal}/modkit_pileup/sample.bed.gz` | Modkit pileup bedMethyl table (bgzip) with per-strand methylation frequency and coverage. By default (`--modkit_args '--cpg --modified-bases 5mC'`) rows are 5mC calls at CpG sites only. |
| `{tumor,normal}/modkit_pileup/sample_{hp1,hp2}.bed.gz` | With `--modkit_phased`: bedMethyl tables restricted to reads carrying haplotype tag `HP:1` or `HP:2` from the Longphase-haplotagged BAM. |
| `{tumor,normal}/modkit_pileup/sample_combined.bed.gz` | With `--modkit_phased`: bedMethyl table over all reads, including untagged ones (equivalent to the unphased default output). |

</details>

Expand Down
34 changes: 18 additions & 16 deletions docs/usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,22 +137,24 @@ For structural variants, the CHM13 panel of normals is a merged panel combining

#### Skipping options:
Comment thread
Copilot marked this conversation as resolved.

| Parameter | Description |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `--skip_qc` | A boolean to skip all QC steps, including `mosdepth`, `samtools`,`fibertools`, `cramino`. Default = `false` |
| `--skip_fiber` | A boolean to skip all `fibertools` related modules. Default = `false` |
| `--skip_cramino` | A boolean to skip `cramino`. Default = `false` |
| `--skip_mosdepth` | A boolean to skip `mosdepth`. Default = `false` |
| `--skip_ascat` | A boolean to skip `ascat`. Default = `false` |
| `--skip_bamstats` | A boolean to skip `bamstats`. Default = `false` |
| `--skip_wakhan` | A boolean to skip `wakhan`. Default = `false` |
| `--skip_vep` | A boolean to skip `vep`. Default = `false` |
| `--skip_m6a` | A boolean to skip `fibertools_m6a`, used if you have m6a calls but would still like nucleosome positions for PacBio data (ONT data is required to have m6a calls). Default = `false` |
| `--skip_nanoplot` | A boolean to skip NanoPlot QC on aligned and unaligned BAM files. Default = `false` |
| `--skip_normalfiber` | A boolean to skip fibertools processing for the normal sample. Default = `false` |
| `--skip_modcall` | A boolean to skip modkit methylation calling. Default = `false` |
| `--skip_modkit` | A boolean to skip the modkit pileup step. Default = `false` |
| `--skip_whatshapstats` | A boolean to skip WhatsHap phasing statistics. Default = `false` |
| Parameter | Description |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--skip_qc` | A boolean to skip all QC steps, including `mosdepth`, `samtools`,`fibertools`, `cramino`. Default = `false` |
| `--skip_fiber` | A boolean to skip all `fibertools` related modules. Default = `false` |
| `--skip_cramino` | A boolean to skip `cramino`. Default = `false` |
| `--skip_mosdepth` | A boolean to skip `mosdepth`. Default = `false` |
| `--skip_ascat` | A boolean to skip `ascat`. Default = `false` |
| `--skip_bamstats` | A boolean to skip `bamstats`. Default = `false` |
| `--skip_wakhan` | A boolean to skip `wakhan`. Default = `false` |
| `--skip_vep` | A boolean to skip `vep`. Default = `false` |
| `--skip_m6a` | A boolean to skip `fibertools_m6a`, used if you have m6a calls but would still like nucleosome positions for PacBio data (ONT data is required to have m6a calls). Default = `false` |
| `--skip_nanoplot` | A boolean to skip NanoPlot QC on aligned and unaligned BAM files. Default = `false` |
| `--skip_normalfiber` | A boolean to skip fibertools processing for the normal sample. Default = `false` |
| `--skip_modcall` | A boolean to skip modkit methylation calling. Default = `false` |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust --skip_modcall so it's clearer to what it points (modified calls being used in phasing) instead of modkit methylation calling. It's confusing with skip-modkit what is what

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reworded in 613dfdd, in both docs/usage.md and nextflow_schema.json: "Skip Longphase modcall, the 5mC base-modification calling whose VCF is used as extra evidence during phasing. Unrelated to the modkit pileup (see --skip_modkit)."

| `--skip_modkit` | A boolean to skip the modkit pileup step. Default = `false` |
| `--modkit_args` | Additional arguments passed to `modkit pileup`. The default restricts output to 5mC calls at CpG sites; note that `--modified-bases` only filters the output, so PacBio positions where the 5mC and 5hmC probabilities sum above 1 are still dropped. Default = `--cpg --modified-bases 5mC` |
Comment thread
Copilot marked this conversation as resolved.
Outdated
| `--modkit_phased` | A boolean to run `modkit pileup --phased` on the Longphase-haplotagged BAMs, producing `_hp1`, `_hp2` and `_combined` bedMethyl files per sample instead of a single unphased file. Default = `false` |
| `--skip_whatshapstats` | A boolean to skip WhatsHap phasing statistics. Default = `false` |

#### LONGPHASE options:

Expand Down
5 changes: 2 additions & 3 deletions modules/nf-core/modkit/pileup/main.nf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading