diff --git a/README.md b/README.md index d5904f2a..41b430a5 100644 --- a/README.md +++ b/README.md @@ -39,20 +39,21 @@ Choose between workflows by using `--aligner bismark` (default, uses bowtie2 for Note: For faster CPU runs with BWA-Meth, enable the BWA-MEM2 algorithm using `--use_mem2`. The GPU pathway (Parabricks) requires `-profile gpu` and a container runtime (Docker, Singularity, or Podman); Conda/Mamba are not supported for the GPU module. -| Step | Bismark workflow | bwa-meth workflow | bwa-mem + TAPS workflow | -| -------------------------------------------- | ------------------------ | --------------------- | -------------------------- | -| Generate Reference Genome Index _(optional)_ | Bismark | bwa-meth | bwa index | -| Merge re-sequenced FastQ files | cat | cat | cat | -| Raw data QC | FastQC | FastQC | FastQC | -| Adapter sequence trimming | Trim Galore! | Trim Galore! | Trim Galore! | -| Align Reads | Bismark (bowtie2/hisat2) | bwa-meth | bwa mem | -| Deduplicate Alignments | Bismark | Picard MarkDuplicates | Picard MarkDuplicates | -| Extract methylation calls | Bismark | MethylDackel | TAPS subworkflow (rastair) | -| Sample report | Bismark | - | - | -| Summary Report | Bismark | - | - | -| Alignment QC | Qualimap _(optional)_ | Qualimap _(optional)_ | Qualimap _(optional)_ | -| Sample complexity | Preseq _(optional)_ | Preseq _(optional)_ | Preseq _(optional)_ | -| Project Report | MultiQC | MultiQC | MultiQC | +| Step | Bismark workflow | bwa-meth workflow | bwa-mem + TAPS workflow | +| -------------------------------------------- | ------------------------ | ----------------------- | -------------------------- | +| Generate Reference Genome Index _(optional)_ | Bismark | bwa-meth | bwa index | +| Merge re-sequenced FastQ files | cat | cat | cat | +| Raw data QC | FastQC | FastQC | FastQC | +| Adapter sequence trimming | Trim Galore! | Trim Galore! | Trim Galore! | +| Align Reads | Bismark (bowtie2/hisat2) | bwa-meth | bwa mem | +| Deduplicate Alignments | Bismark | Picard MarkDuplicates | Picard MarkDuplicates | +| Extract methylation calls | Bismark | MethylDackel | TAPS subworkflow (rastair) | +| Sample report | Bismark | - | - | +| Summary Report | Bismark | - | - | +| Alignment QC | Qualimap _(optional)_ | Qualimap _(optional)_ | Qualimap _(optional)_ | +| Sample complexity | Preseq _(optional)_ | Preseq _(optional)_ | Preseq _(optional)_ | +| CpGs-level sequencing saturation | methurator _(optional)_ | methurator _(optional)_ | methurator _(optional)_ | +| Project Report | MultiQC | MultiQC | MultiQC | Optional targeted sequencing analysis is available via `--run_targeted_sequencing` and `--target_regions_file`; see the [usage documentation](https://nf-co.re/methylseq/usage) for details. diff --git a/conf/base.config b/conf/base.config index b835dfd6..86515e70 100644 --- a/conf/base.config +++ b/conf/base.config @@ -66,6 +66,9 @@ process { withName: PRESEQ_LCEXTRAP { errorStrategy = 'ignore' } + withName: METHURATOR_GTESTIMATOR { + errorStrategy = 'ignore' + } withName: BISMARK_ALIGN { time = { 8.d * task.attempt } } diff --git a/conf/modules/methurator_gtestimator.config b/conf/modules/methurator_gtestimator.config new file mode 100644 index 00000000..c039dc86 --- /dev/null +++ b/conf/modules/methurator_gtestimator.config @@ -0,0 +1,17 @@ +process { + withName: METHURATOR_GTESTIMATOR { + ext.args = [ + params.compute_ci ? ' --compute_ci' : '', + params.rrbs ? ' --rrbs' : '', + params.minimum_coverage ? " --minimum-coverage ${params.minimum_coverage}" : "", + params.t_max ? " --t-max ${params.t_max}" : "" + ].join(" ").trim() + publishDir = [ + [ + path: { "${params.outdir}/methurator/summaries/" }, + mode: params.publish_dir_mode, + pattern: "*.yml" + ] + ] + } +} diff --git a/conf/modules/methurator_plot.config b/conf/modules/methurator_plot.config new file mode 100644 index 00000000..52fc3768 --- /dev/null +++ b/conf/modules/methurator_plot.config @@ -0,0 +1,11 @@ +process { + withName: METHURATOR_PLOT { + publishDir = [ + [ + path: { "${params.outdir}/methurator" }, + mode: params.publish_dir_mode, + pattern: "**/*.html" + ] + ] + } +} diff --git a/docs/output.md b/docs/output.md index 44e80b94..18c0b753 100644 --- a/docs/output.md +++ b/docs/output.md @@ -355,6 +355,17 @@ Note that these are predictive numbers only, not absolute. The MultiQC plot can - `sample_ccurve.txt` - This file contains plot values for the complexity curve, plotted in the MultiQC report. +## methurator + +[methurator](https://vibtobilab.github.io/methurator/latest/) methurator is a Python package to estimate CpG sequencing saturation for DNA methylation sequencing data. + +**Output directory: `results/methurator`** + +- `summaries/sample.yml` + - This file contains metadata, model parameters, and extrapolation results for each +- `plots/sample.html` + - This folder contains one interactive, HTML file per sample analysed. + ### MultiQC ![MultiQC - FastQC sequence counts plot](images/mqc_fastqc_counts.png) diff --git a/docs/usage.md b/docs/usage.md index 608ecdfe..fbc13a79 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -66,9 +66,11 @@ flowchart TD D1 --> J1["preseq (optional)"] D2 --> J1 D3 --> J1 - D1 --> J2["Qualimap (optional)"] + D1 --> J2["methurator (optional)"] D2 --> J2 - D3 --> J2 + D1 --> J3["Qualimap (optional)"] + D2 --> J3 + D3 --> J3 end subgraph Stage4[Final QC] diff --git a/main.nf b/main.nf index 495fb843..2d47db84 100644 --- a/main.nf +++ b/main.nf @@ -71,6 +71,7 @@ workflow NFCORE_METHYLSEQ { ch_or_val_bwamem_index, params.aligner, params.collecthsmetrics, + params.run_methurator, params.use_mem2 ) ch_versions = ch_versions.mix(FASTA_INDEX_METHYLSEQ.out.versions) diff --git a/modules.json b/modules.json index e3a46b32..e81bd645 100644 --- a/modules.json +++ b/modules.json @@ -80,6 +80,16 @@ "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["fasta_index_bismark_bwameth", "fasta_index_methylseq"] }, + "methurator/gtestimator": { + "branch": "master", + "git_sha": "85a3650c949d1146cdb576f986640e84775b7743", + "installed_by": ["modules"] + }, + "methurator/plot": { + "branch": "master", + "git_sha": "85a3650c949d1146cdb576f986640e84775b7743", + "installed_by": ["modules"] + }, "methyldackel/extract": { "branch": "master", "git_sha": "c8df5757c72362907a43de49a6b20bd4998907a0", diff --git a/modules/nf-core/methurator/gtestimator/environment.yml b/modules/nf-core/methurator/gtestimator/environment.yml new file mode 100644 index 00000000..942a9948 --- /dev/null +++ b/modules/nf-core/methurator/gtestimator/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::methurator=2.1.1" diff --git a/modules/nf-core/methurator/gtestimator/main.nf b/modules/nf-core/methurator/gtestimator/main.nf new file mode 100755 index 00000000..f6d52142 --- /dev/null +++ b/modules/nf-core/methurator/gtestimator/main.nf @@ -0,0 +1,40 @@ +process METHURATOR_GTESTIMATOR { + tag "${meta.id}" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/methurator:2.1.1--pyhdfd78af_0' + : 'quay.io/biocontainers/methurator:2.1.1--pyhdfd78af_0'}" + + input: + tuple val(meta), path(bam), path(bai), path(fasta), path(fai) + + output: + tuple val(meta), path("${prefix}.yml"), emit: summary_report + tuple val("${task.process}"), val('methurator'), eval("methurator --version | sed 's/.* //'"), emit: versions_methurator, topic: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + """ + methurator gt-estimator \\ + ${bam} \\ + --fasta ${fasta} \\ + -@ ${task.cpus} \\ + --outdir . \\ + ${args} + + mv methurator_summary.yml ${prefix}.yml + """ + + stub: + prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.yml + + """ +} diff --git a/modules/nf-core/methurator/gtestimator/meta.yml b/modules/nf-core/methurator/gtestimator/meta.yml new file mode 100755 index 00000000..64829b02 --- /dev/null +++ b/modules/nf-core/methurator/gtestimator/meta.yml @@ -0,0 +1,89 @@ +name: methurator_gtestimator +description: | + Run estimator for DNA methylation sequencing saturation. +keywords: + - rrbs + - BS-seq + - methylation + - 5mC + - methylseq + - bisulphite + - bam +tools: + - methurator: + description: | + Methurator is a Python package designed to estimate CpGs saturation + for DNA methylation sequencing data. + homepage: https://github.com/VIBTOBIlab/methurator + documentation: https://github.com/VIBTOBIlab/methurator/README.md + licence: + - "MIT" + identifier: "" +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: Single BAM file + pattern: "*.{bam,cram}" + ontologies: + - edam: "http://edamontology.org/format_2572" # BAM + - bai: + type: file + description: Single BAM/CRAM index file + pattern: "*.{bai,crai}" + ontologies: + - edam: "http://edamontology.org/format_3327" # BAM index + - fasta: + type: file + description: Input genome fasta file + pattern: "*.{fasta,fa}" + ontologies: + - edam: "http://edamontology.org/format_1332" # FASTA + - fai: + type: file + description: FASTA index file + pattern: "*.{fai}" + ontologies: [] +output: + summary_report: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "${prefix}.yml": + type: file + description: | + YAML file summarizing the saturation analysis results. + pattern: "${prefix}.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML + versions_methurator: + - - ${task.process}: + type: string + description: methurator gtestimator + - methurator: + type: string + description: The name of the tool + - methurator --version | sed 's/.* //': + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: methurator gtestimator + - methurator: + type: string + description: The name of the tool + - methurator --version | sed 's/.* //': + type: eval + description: The expression to obtain the version of the tool +authors: + - "@edogiuili" +maintainers: + - "@edogiuili" diff --git a/modules/nf-core/methurator/gtestimator/tests/main.nf.test b/modules/nf-core/methurator/gtestimator/tests/main.nf.test new file mode 100644 index 00000000..6313d1f4 --- /dev/null +++ b/modules/nf-core/methurator/gtestimator/tests/main.nf.test @@ -0,0 +1,70 @@ +nextflow_process { + + name "Test Process METHURATOR_GTESTIMATOR" + script "../main.nf" + process "METHURATOR_GTESTIMATOR" + config './nextflow.config' + + tag "modules" + tag "modules_nfcore" + tag "methurator" + tag "methurator/gtestimator" + + test("Run methurator gt-estimator on paired-end methylated [bam] | sarscov2 genome [fasta]") { + + when { + params { + module_args = '--t-max 10 --minimum-coverage 1 --compute_ci' + } + + process { + """ + input[0] = [ [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + // Avoid first 3 lines of the summary report as they contain the date and time of the run + file(process.out.summary_report[0][1]).readLines()[3..10].join('\n').md5(), + process.out.findAll { key, val -> key.startsWith('versions') } + ).match()} + ) + } + } + test("Run methurator gt-estimator on paired-end methylated [bam] | sarscov2 genome [fasta] - stub") { + + options "-stub" + + when { + params { + module_args = '--t-max 10 --minimum-coverage 1 --compute_ci' + } + process { + """ + input[0] = [ [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(sanitizeOutput(process.out)).match() } + ) + } + } +} diff --git a/modules/nf-core/methurator/gtestimator/tests/main.nf.test.snap b/modules/nf-core/methurator/gtestimator/tests/main.nf.test.snap new file mode 100644 index 00000000..e24bc94d --- /dev/null +++ b/modules/nf-core/methurator/gtestimator/tests/main.nf.test.snap @@ -0,0 +1,48 @@ +{ + "Run methurator gt-estimator on paired-end methylated [bam] | sarscov2 genome [fasta] - stub": { + "content": [ + { + "summary_report": [ + [ + { + "id": "test", + "single_end": false + }, + "test.yml:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_methurator": [ + [ + "METHURATOR_GTESTIMATOR", + "methurator", + "2.1.1" + ] + ] + } + ], + "timestamp": "2026-05-19T10:00:29.907997", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.0" + } + }, + "Run methurator gt-estimator on paired-end methylated [bam] | sarscov2 genome [fasta]": { + "content": [ + "983d27e4d62f86d15a779820758af458", + { + "versions_methurator": [ + [ + "METHURATOR_GTESTIMATOR", + "methurator", + "2.1.1" + ] + ] + } + ], + "timestamp": "2026-04-07T14:33:27.127158", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.0" + } + } +} \ No newline at end of file diff --git a/modules/nf-core/methurator/gtestimator/tests/nextflow.config b/modules/nf-core/methurator/gtestimator/tests/nextflow.config new file mode 100644 index 00000000..9cb31eb3 --- /dev/null +++ b/modules/nf-core/methurator/gtestimator/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: METHURATOR_GTESTIMATOR { + ext.args = params.module_args + } +} diff --git a/modules/nf-core/methurator/plot/environment.yml b/modules/nf-core/methurator/plot/environment.yml new file mode 100644 index 00000000..942a9948 --- /dev/null +++ b/modules/nf-core/methurator/plot/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::methurator=2.1.1" diff --git a/modules/nf-core/methurator/plot/main.nf b/modules/nf-core/methurator/plot/main.nf new file mode 100644 index 00000000..a2a88762 --- /dev/null +++ b/modules/nf-core/methurator/plot/main.nf @@ -0,0 +1,35 @@ +process METHURATOR_PLOT { + tag "${meta.id}" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/methurator:2.1.1--pyhdfd78af_0' + : 'quay.io/biocontainers/methurator:2.1.1--pyhdfd78af_0'}" + + input: + tuple val(meta), path(summary_report) + + output: + tuple val(meta), path("plots/*.html"), emit: plots + tuple val("${task.process}"), val('methurator'), eval("methurator --version | sed 's/.* //'"), emit: versions_methurator, topic: versions + + when: + task.ext.when == null || task.ext.when + + script: + """ + methurator plot \\ + --summary ${summary_report} \\ + --outdir . + + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + mkdir plots/ + touch plots/${prefix}.html + + """ +} diff --git a/modules/nf-core/methurator/plot/meta.yml b/modules/nf-core/methurator/plot/meta.yml new file mode 100644 index 00000000..3811f0e8 --- /dev/null +++ b/modules/nf-core/methurator/plot/meta.yml @@ -0,0 +1,73 @@ +name: methurator_plot +description: Plots results produced by methurator gtestimator. +keywords: + - rrbs + - BS-seq + - methylation + - 5mC + - methylseq + - bisulphite + - bisulfite + - bam +tools: + - methurator: + description: | + methurator is a Python package designed to estimate sequencing saturation + for DNA methylation sequencing data. + homepage: https://github.com/VIBTOBIlab/methurator + documentation: https://github.com/VIBTOBIlab/methurator/README.md + licence: + - "MIT" + identifier: "" +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - summary_report: + type: file + description: | + YAML file summarizing the saturation analysis results. + pattern: "methurator_*.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML +output: + plots: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - plots/*.html: + type: file + description: | + HTML plots generated from the saturation analysis. + pattern: "plots/*.html" + ontologies: + - edam: "http://edamontology.org/format_2331" # HTML + versions_methurator: + - - ${task.process}: + type: string + description: methurator plot + - methurator: + type: string + description: The name of the tool + - methurator --version | sed 's/.* //': + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: methurator plot + - methurator: + type: string + description: The name of the tool + - methurator --version | sed 's/.* //': + type: eval + description: The expression to obtain the version of the tool +authors: + - "@edogiuili" +maintainers: + - "@edogiuili" diff --git a/modules/nf-core/methurator/plot/tests/main.nf.test b/modules/nf-core/methurator/plot/tests/main.nf.test new file mode 100644 index 00000000..10e07e5f --- /dev/null +++ b/modules/nf-core/methurator/plot/tests/main.nf.test @@ -0,0 +1,74 @@ +nextflow_process { + + name "Test Process METHURATOR_PLOT" + script "../main.nf" + process "METHURATOR_PLOT" + + tag "modules" + tag "modules_nfcore" + tag "methurator" + tag "methurator/plot" + tag "methurator/gtestimator" + + setup { + run("METHURATOR_GTESTIMATOR") { + script "../../gtestimator/main.nf" + params { + t_max = 10 + minimum_coverage = 1 + rrbs = false + } + process { + """ + input[0] = [ [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + } + + test("Run methurator plot on the output of methurator gt-estimator") { + + when { + process { + """ + input[0] = METHURATOR_GTESTIMATOR.out.summary_report + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.plots.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.findAll { key, val -> key.startsWith('versions') }).match() + } + ) + } + } + + test("Run methurator plot on the output of methurator gt-estimator - stub") { + + options "-stub" + + when { + process { + """ + input[0] = METHURATOR_GTESTIMATOR.out.summary_report + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(sanitizeOutput(process.out)).match() } + ) + } + } +} diff --git a/modules/nf-core/methurator/plot/tests/main.nf.test.snap b/modules/nf-core/methurator/plot/tests/main.nf.test.snap new file mode 100644 index 00000000..2cf88bad --- /dev/null +++ b/modules/nf-core/methurator/plot/tests/main.nf.test.snap @@ -0,0 +1,56 @@ +{ + "Run methurator plot on the output of methurator gt-estimator": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.methylated.sorted_CpG.bedGraph_1x_plot.html" + ] + ], + { + "versions_methurator": [ + [ + "METHURATOR_PLOT", + "methurator", + "2.1.1" + ] + ] + } + ], + "timestamp": "2026-05-19T10:00:45.518067", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.0" + } + }, + "Run methurator plot on the output of methurator gt-estimator - stub": { + "content": [ + { + "plots": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_methurator": [ + [ + "METHURATOR_PLOT", + "methurator", + "2.1.1" + ] + ] + } + ], + "timestamp": "2026-05-19T10:00:55.849389", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.0" + } + } +} \ No newline at end of file diff --git a/nextflow.config b/nextflow.config index a455d614..e071eadd 100644 --- a/nextflow.config +++ b/nextflow.config @@ -93,12 +93,19 @@ params { // Run options run_preseq = false + run_methurator = false run_qualimap = false run_targeted_sequencing = false // Qualimap options bamqc_regions_file = null + // methurator options + minimum_coverage = "1,10,15" + t_max = 10 + compute_ci = true + + // Targeted sequencing options target_regions_file = null collecthsmetrics = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 30b5f730..da924244 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -385,13 +385,6 @@ } } }, - "bwameth_options": { - "title": "bwa-meth pipeline options", - "type": "object", - "description": "Parameters specific to BWA Meth aligning steps", - "default": "", - "properties": {} - }, "methyldackel_options": { "title": "MethylDackel options", "type": "object", @@ -431,13 +424,6 @@ }, "fa_icon": "far fa-circle" }, - "bwamem_options": { - "title": "bwa-mem pipeline options for rastair", - "type": "object", - "description": "Parameters specific to BWA Mem aligning steps", - "default": "", - "properties": {} - }, "rastair_options": { "title": "rastair options", "type": "object", @@ -457,6 +443,29 @@ } } }, + "methurator_options": { + "title": "methurator options", + "type": "object", + "description": "Options for methurator tool", + "default": "", + "properties": { + "minimum_coverage": { + "type": "string", + "default": "1,10,15", + "description": "Minimum CpGs coverage to consider for the saturation analysis. Can be a single integer or a list (e.g. 1,3,5)." + }, + "compute_ci": { + "type": "boolean", + "default": true, + "description": "Compute confidence intervals using bootstrap replicates." + }, + "t_max": { + "type": "integer", + "default": 10, + "description": "Maximum extrapolation factor." + } + } + }, "qualimap_options": { "title": "Qualimap Options", "type": "object", @@ -542,6 +551,10 @@ "description": "Run preseq/lcextrap tool", "fa_icon": "fas fa-fast-forward" }, + "run_methurator": { + "type": "boolean", + "description": "Run methurator/gtestimator tool" + }, "run_qualimap": { "type": "boolean", "description": "Run qualimap/bamqc tool", @@ -735,17 +748,14 @@ { "$ref": "#/$defs/bismark_options" }, - { - "$ref": "#/$defs/bwameth_options" - }, { "$ref": "#/$defs/methyldackel_options" }, { - "$ref": "#/$defs/bwamem_options" + "$ref": "#/$defs/rastair_options" }, { - "$ref": "#/$defs/rastair_options" + "$ref": "#/$defs/methurator_options" }, { "$ref": "#/$defs/qualimap_options" @@ -760,10 +770,10 @@ "$ref": "#/$defs/run_pipeline_steps" }, { - "$ref": "#/$defs/generic_options" + "$ref": "#/$defs/institutional_config_options" }, { - "$ref": "#/$defs/institutional_config_options" + "$ref": "#/$defs/generic_options" } ] } diff --git a/ro-crate-metadata.json b/ro-crate-metadata.json index 2b3ac8b1..ef18bb37 100644 --- a/ro-crate-metadata.json +++ b/ro-crate-metadata.json @@ -23,7 +23,7 @@ "@type": "Dataset", "creativeWorkStatus": "InProgress", "datePublished": "2025-12-12T10:54:03+00:00", - "description": "

\n \n \n \"nf-core/methylseq\"\n \n

\n\n[![Open in GitHub Codespaces](https://img.shields.io/badge/Open_In_GitHub_Codespaces-black?labelColor=grey&logo=github)](https://github.com/codespaces/new/nf-core/methylseq)\n[![GitHub Actions CI Status](https://github.com/nf-core/methylseq/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/methylseq/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/methylseq/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/methylseq/actions/workflows/linting.yml)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/methylseq/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.1343417-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.1343417)\n[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)\n\n[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.04.0-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)\n[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.5.1-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.5.1)\n[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)\n[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)\n[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)\n[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/nf-core/methylseq)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23methylseq-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/methylseq)[![Follow on Bluesky](https://img.shields.io/badge/bluesky-%40nf__core-1185fe?labelColor=000000&logo=bluesky)](https://bsky.app/profile/nf-co.re)[![Follow on Mastodon](https://img.shields.io/badge/mastodon-nf__core-6364ff?labelColor=FFFFFF&logo=mastodon)](https://mstdn.science/@nf_core)[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core)\n\n## Introduction\n\n**nf-core/methylseq** is a bioinformatics analysis pipeline used for Methylation (Bisulfite) sequencing data. It pre-processes raw data from FastQ inputs, aligns the reads and performs extensive quality-control on the results.\n\n![nf-core/methylseq metro map](docs/images/4.2.0_metromap.png)\n\nThe pipeline is built using [Nextflow](https://www.nextflow.io), a workflow tool to run tasks across multiple compute infrastructures in a very portable manner. It uses Docker / Singularity / Podman / Charliecloud / Apptainer containers making installation trivial and results highly reproducible.\n\nOn release, automated continuous integration tests run the pipeline on a full-sized dataset on the AWS cloud infrastructure. This ensures that the pipeline runs on AWS, has sensible resource allocation defaults set to run on real-world datasets, and permits the persistent storage of results to benchmark between pipeline releases and other analysis sources.The results obtained from the full-sized test can be viewed on the [nf-core website](https://nf-co.re/methylseq/results).\n\n> Read more about **Bisulfite Sequencing & Three-Base Aligners** used in this pipeline [here](docs/usage/bs-seq-primer.md)\n\n## Pipeline Summary\n\nThe pipeline allows you to choose between running either [Bismark](https://github.com/FelixKrueger/Bismark), [bwa-meth](https://github.com/brentp/bwa-meth) / [MethylDackel](https://github.com/dpryan79/methyldackel) or [BWA-Mem](https://github.com/lh3/bwa) plus [rastair](https://bitbucket.org/bsblabludwig/rastair/src/master/) for TAPS data processing. rastair can also be used with bwa-meth aligned reads by setting the aligner to `--aligner bwameth` and adding the flag `--taps`.\n\nChoose between workflows by using `--aligner bismark` (default, uses bowtie2 for alignment), `--aligner bismark_hisat`, `--aligner bwameth` or `--aligner bwamem`. For higher performance, the pipeline can leverage the [Parabricks implementation of bwa-meth (fq2bammeth)](https://docs.nvidia.com/clara/parabricks/latest/documentation/tooldocs/man_fq2bam_meth.html) and the [Parabricks implementation of bwa-mem (fq2bammemh)](https://docs.nvidia.com/clara/parabricks/latest/documentation/tooldocs/man_fq2bam.html), which implement the baseline tools `bwa-meth` and `bwa-mem`. To use this option, include the `gpu` profile along with `--aligner bwameth` or `--aligner bwamem`.\n\nNote: For faster CPU runs with BWA-Meth, enable the BWA-MEM2 algorithm using `--use_mem2`. The GPU pathway (Parabricks) requires `-profile gpu` and a container runtime (Docker, Singularity, or Podman); Conda/Mamba are not supported for the GPU module.\n\n| Step | Bismark workflow | bwa-meth workflow | bwa-mem + TAPS workflow |\n| -------------------------------------------- | ------------------------ | --------------------- | -------------------------- |\n| Generate Reference Genome Index _(optional)_ | Bismark | bwa-meth | bwa index |\n| Merge re-sequenced FastQ files | cat | cat | cat |\n| Raw data QC | FastQC | FastQC | FastQC |\n| Adapter sequence trimming | Trim Galore! | Trim Galore! | Trim Galore! |\n| Align Reads | Bismark (bowtie2/hisat2) | bwa-meth | bwa mem |\n| Deduplicate Alignments | Bismark | Picard MarkDuplicates | Picard MarkDuplicates |\n| Extract methylation calls | Bismark | MethylDackel | TAPS subworkflow (rastair) |\n| Sample report | Bismark | - | - |\n| Summary Report | Bismark | - | - |\n| Alignment QC | Qualimap _(optional)_ | Qualimap _(optional)_ | Qualimap _(optional)_ |\n| Sample complexity | Preseq _(optional)_ | Preseq _(optional)_ | Preseq _(optional)_ |\n| Project Report | MultiQC | MultiQC | MultiQC |\n\nOptional targeted sequencing analysis is available via `--run_targeted_sequencing` and `--target_regions_file`; see the [usage documentation](https://nf-co.re/methylseq/usage) for details.\n\n## Usage\n\n> [!NOTE]\n> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data.\n\nFirst, prepare a samplesheet with your input data that looks as follows:\n\n`samplesheet.csv`:\n\n```csv\nsample,fastq_1,fastq_2,genome\nSRR389222_sub1,https://github.com/nf-core/test-datasets/raw/methylseq/testdata/SRR389222_sub1.fastq.gz,,\nSRR389222_sub2,https://github.com/nf-core/test-datasets/raw/methylseq/testdata/SRR389222_sub2.fastq.gz,,\nSRR389222_sub3,https://github.com/nf-core/test-datasets/raw/methylseq/testdata/SRR389222_sub3.fastq.gz,,\nEcoli_10K_methylated,https://github.com/nf-core/test-datasets/raw/methylseq/testdata/Ecoli_10K_methylated_R1.fastq.gz,https://github.com/nf-core/test-datasets/raw/methylseq/testdata/Ecoli_10K_methylated_R2.fastq.gz,\n```\n\n> Each row represents a fastq file (single-end) or a pair of fastq files (paired end).\n\nNow, you can run the pipeline using default parameters as:\n\n```bash\nnextflow run nf-core/methylseq --input samplesheet.csv --outdir --genome GRCh37 -profile \n```\n\n> [!WARNING]\n> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files).\n\nFor more details and further functionality, please refer to the [usage documentation](https://nf-co.re/methylseq/usage) and the [parameter documentation](https://nf-co.re/methylseq/parameters).\n\n## Pipeline output\n\nTo see the results of an example test run with a full size dataset refer to the [results](https://nf-co.re/methylseq/results) tab on the nf-core website pipeline page.\nFor more details about the output files and reports, please refer to the [output documentation](https://nf-co.re/methylseq/output).\n\n## Credits\n\nnf-core/methylseq was originally written by Phil Ewels ([@ewels](https://github.com/ewels)), and Sateesh Peri ([@sateeshperi](https://github.com/sateeshperi)) is its active maintainer.\n\nWe thank the following people for their extensive assistance in the development of this pipeline:\n\n- Felix Krueger ([@FelixKrueger](https://github.com/FelixKrueger))\n- Edmund Miller ([@EMiller88](https://github.com/emiller88))\n- Rickard Hammar\u00e9n ([@Hammarn](https://github.com/Hammarn/))\n- Alexander Peltzer ([@apeltzer](https://github.com/apeltzer/))\n- Patrick H\u00fcther ([@phue](https://github.com/phue/))\n- Maxime U Garcia ([@maxulysse](https://github.com/maxulysse/))\n\n## Contributions and Support\n\nIf you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md).\n\nFor further information or help, don't hesitate to get in touch on the [Slack `#methylseq` channel](https://nfcore.slack.com/channels/methylseq) (you can join with [this invite](https://nf-co.re/join/slack)).\n\n## Citations\n\nIf you use nf-core/methylseq for your analysis, please cite it using the following doi: [10.5281/zenodo.1343417](https://doi.org/10.5281/zenodo.1343417)\n\nAn extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file.\n\nYou can cite the `nf-core` publication as follows:\n\n> **The nf-core framework for community-curated bioinformatics pipelines.**\n>\n> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.\n>\n> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x).\n", + "description": "

\n \n \n \"nf-core/methylseq\"\n \n

\n\n[![Open in GitHub Codespaces](https://img.shields.io/badge/Open_In_GitHub_Codespaces-black?labelColor=grey&logo=github)](https://github.com/codespaces/new/nf-core/methylseq)\n[![GitHub Actions CI Status](https://github.com/nf-core/methylseq/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/methylseq/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/methylseq/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/methylseq/actions/workflows/linting.yml)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/methylseq/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.1343417-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.1343417)\n[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)\n\n[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.04.0-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)\n[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.5.1-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.5.1)\n[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)\n[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)\n[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)\n[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/nf-core/methylseq)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23methylseq-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/methylseq)[![Follow on Bluesky](https://img.shields.io/badge/bluesky-%40nf__core-1185fe?labelColor=000000&logo=bluesky)](https://bsky.app/profile/nf-co.re)[![Follow on Mastodon](https://img.shields.io/badge/mastodon-nf__core-6364ff?labelColor=FFFFFF&logo=mastodon)](https://mstdn.science/@nf_core)[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core)\n\n## Introduction\n\n**nf-core/methylseq** is a bioinformatics analysis pipeline used for Methylation (Bisulfite) sequencing data. It pre-processes raw data from FastQ inputs, aligns the reads and performs extensive quality-control on the results.\n\n![nf-core/methylseq metro map](docs/images/4.2.0_metromap.png)\n\nThe pipeline is built using [Nextflow](https://www.nextflow.io), a workflow tool to run tasks across multiple compute infrastructures in a very portable manner. It uses Docker / Singularity / Podman / Charliecloud / Apptainer containers making installation trivial and results highly reproducible.\n\nOn release, automated continuous integration tests run the pipeline on a full-sized dataset on the AWS cloud infrastructure. This ensures that the pipeline runs on AWS, has sensible resource allocation defaults set to run on real-world datasets, and permits the persistent storage of results to benchmark between pipeline releases and other analysis sources.The results obtained from the full-sized test can be viewed on the [nf-core website](https://nf-co.re/methylseq/results).\n\n> Read more about **Bisulfite Sequencing & Three-Base Aligners** used in this pipeline [here](docs/usage/bs-seq-primer.md)\n\n## Pipeline Summary\n\nThe pipeline allows you to choose between running either [Bismark](https://github.com/FelixKrueger/Bismark), [bwa-meth](https://github.com/brentp/bwa-meth) / [MethylDackel](https://github.com/dpryan79/methyldackel) or [BWA-Mem](https://github.com/lh3/bwa) plus [rastair](https://bitbucket.org/bsblabludwig/rastair/src/master/) for TAPS data processing. rastair can also be used with bwa-meth aligned reads by setting the aligner to `--aligner bwameth` and adding the flag `--taps`.\n\nChoose between workflows by using `--aligner bismark` (default, uses bowtie2 for alignment), `--aligner bismark_hisat`, `--aligner bwameth` or `--aligner bwamem`. For higher performance, the pipeline can leverage the [Parabricks implementation of bwa-meth (fq2bammeth)](https://docs.nvidia.com/clara/parabricks/latest/documentation/tooldocs/man_fq2bam_meth.html) and the [Parabricks implementation of bwa-mem (fq2bammemh)](https://docs.nvidia.com/clara/parabricks/latest/documentation/tooldocs/man_fq2bam.html), which implement the baseline tools `bwa-meth` and `bwa-mem`. To use this option, include the `gpu` profile along with `--aligner bwameth` or `--aligner bwamem`.\n\nNote: For faster CPU runs with BWA-Meth, enable the BWA-MEM2 algorithm using `--use_mem2`. The GPU pathway (Parabricks) requires `-profile gpu` and a container runtime (Docker, Singularity, or Podman); Conda/Mamba are not supported for the GPU module.\n\n| Step | Bismark workflow | bwa-meth workflow | bwa-mem + TAPS workflow |\n| -------------------------------------------- | ------------------------ | ----------------------- | -------------------------- |\n| Generate Reference Genome Index _(optional)_ | Bismark | bwa-meth | bwa index |\n| Merge re-sequenced FastQ files | cat | cat | cat |\n| Raw data QC | FastQC | FastQC | FastQC |\n| Adapter sequence trimming | Trim Galore! | Trim Galore! | Trim Galore! |\n| Align Reads | Bismark (bowtie2/hisat2) | bwa-meth | bwa mem |\n| Deduplicate Alignments | Bismark | Picard MarkDuplicates | Picard MarkDuplicates |\n| Extract methylation calls | Bismark | MethylDackel | TAPS subworkflow (rastair) |\n| Sample report | Bismark | - | - |\n| Summary Report | Bismark | - | - |\n| Alignment QC | Qualimap _(optional)_ | Qualimap _(optional)_ | Qualimap _(optional)_ |\n| Sample complexity | Preseq _(optional)_ | Preseq _(optional)_ | Preseq _(optional)_ |\n| CpGs-level sequencing saturation | methurator _(optional)_ | methurator _(optional)_ | methurator _(optional)_ |\n| Project Report | MultiQC | MultiQC | MultiQC |\n\nOptional targeted sequencing analysis is available via `--run_targeted_sequencing` and `--target_regions_file`; see the [usage documentation](https://nf-co.re/methylseq/usage) for details.\n\n## Usage\n\n> [!NOTE]\n> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data.\n\nFirst, prepare a samplesheet with your input data that looks as follows:\n\n`samplesheet.csv`:\n\n```csv\nsample,fastq_1,fastq_2,genome\nSRR389222_sub1,https://github.com/nf-core/test-datasets/raw/methylseq/testdata/SRR389222_sub1.fastq.gz,,\nSRR389222_sub2,https://github.com/nf-core/test-datasets/raw/methylseq/testdata/SRR389222_sub2.fastq.gz,,\nSRR389222_sub3,https://github.com/nf-core/test-datasets/raw/methylseq/testdata/SRR389222_sub3.fastq.gz,,\nEcoli_10K_methylated,https://github.com/nf-core/test-datasets/raw/methylseq/testdata/Ecoli_10K_methylated_R1.fastq.gz,https://github.com/nf-core/test-datasets/raw/methylseq/testdata/Ecoli_10K_methylated_R2.fastq.gz,\n```\n\n> Each row represents a fastq file (single-end) or a pair of fastq files (paired end).\n\nNow, you can run the pipeline using default parameters as:\n\n```bash\nnextflow run nf-core/methylseq --input samplesheet.csv --outdir --genome GRCh37 -profile \n```\n\n> [!WARNING]\n> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files).\n\nFor more details and further functionality, please refer to the [usage documentation](https://nf-co.re/methylseq/usage) and the [parameter documentation](https://nf-co.re/methylseq/parameters).\n\n## Pipeline output\n\nTo see the results of an example test run with a full size dataset refer to the [results](https://nf-co.re/methylseq/results) tab on the nf-core website pipeline page.\nFor more details about the output files and reports, please refer to the [output documentation](https://nf-co.re/methylseq/output).\n\n## Credits\n\nnf-core/methylseq was originally written by Phil Ewels ([@ewels](https://github.com/ewels)), and Sateesh Peri ([@sateeshperi](https://github.com/sateeshperi)) is its active maintainer.\n\nWe thank the following people for their extensive assistance in the development of this pipeline:\n\n- Felix Krueger ([@FelixKrueger](https://github.com/FelixKrueger))\n- Edmund Miller ([@EMiller88](https://github.com/emiller88))\n- Rickard Hammar\u00e9n ([@Hammarn](https://github.com/Hammarn/))\n- Alexander Peltzer ([@apeltzer](https://github.com/apeltzer/))\n- Patrick H\u00fcther ([@phue](https://github.com/phue/))\n- Maxime U Garcia ([@maxulysse](https://github.com/maxulysse/))\n\n## Contributions and Support\n\nIf you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md).\n\nFor further information or help, don't hesitate to get in touch on the [Slack `#methylseq` channel](https://nfcore.slack.com/channels/methylseq) (you can join with [this invite](https://nf-co.re/join/slack)).\n\n## Citations\n\nIf you use nf-core/methylseq for your analysis, please cite it using the following doi: [10.5281/zenodo.1343417](https://doi.org/10.5281/zenodo.1343417)\n\nAn extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file.\n\nYou can cite the `nf-core` publication as follows:\n\n> **The nf-core framework for community-curated bioinformatics pipelines.**\n>\n> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.\n>\n> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x).\n", "hasPart": [ { "@id": "main.nf" diff --git a/subworkflows/nf-core/fasta_index_methylseq/main.nf b/subworkflows/nf-core/fasta_index_methylseq/main.nf index 4c74bc55..aa2ffe55 100644 --- a/subworkflows/nf-core/fasta_index_methylseq/main.nf +++ b/subworkflows/nf-core/fasta_index_methylseq/main.nf @@ -17,6 +17,7 @@ workflow FASTA_INDEX_METHYLSEQ { bwamem_index // channel: [ val(meta), [ bwamem index ] ] aligner // string: bismark, bismark_hisat, bwameth or bwamem collecthsmetrics // boolean: whether to run picard collecthsmetrics + methurator // boolean: whether to run methurator use_mem2 // boolean: generate mem2 index if no index provided, and bwameth is selected main: @@ -142,9 +143,9 @@ workflow FASTA_INDEX_METHYLSEQ { } /* - * Generate fasta index if not supplied for bwameth workflow or picard collecthsmetrics tool + * Generate fasta index if not supplied for bwameth workflow or picard collecthsmetrics tool or methurator tool */ - if (aligner == 'bwameth' || aligner == 'bwamem' || collecthsmetrics) { + if (aligner == 'bwameth' || aligner == 'bwamem' || collecthsmetrics || methurator) { // already existing fasta index if (fasta_index) { ch_fasta_index = fasta_index diff --git a/tests/.nftignore b/tests/.nftignore index 873057df..34f8dc18 100644 --- a/tests/.nftignore +++ b/tests/.nftignore @@ -8,6 +8,8 @@ */qualimap/bamqc/*/qualimapReport.html */qualimap/bamqc/**/*.{pdf,png,svg} enrichment_metrics/* +methurator/summaries/* +methurator/plots/* fastqc/*.html fastqc/zips/*.zip multiqc/*/multiqc_data/*.{log,json} diff --git a/tests/bismark_variants.nf.test b/tests/bismark_variants.nf.test index cfc2c821..7831c6ac 100644 --- a/tests/bismark_variants.nf.test +++ b/tests/bismark_variants.nf.test @@ -69,6 +69,14 @@ nextflow_pipeline { run_preseq: true ] ], + [ + name: "bismark_run_methurator", + description: "Params: bismark with run_methurator", + params: [ + run_methurator: true, + minimum_coverage: "1" + ] + ], [ name: "bismark_run_qualimap", description: "Params: bismark with run_qualimap", @@ -134,11 +142,15 @@ nextflow_pipeline { } then { + def snapshotArgs = getStandardAssertionData(params.outdir) + if (scenario.name == "bismark_run_methurator") { + snapshotArgs += getAllFilesFromDir(params.outdir, include: ['methurator/summaries/*.yml']) + .collect { file -> [file.getName(), path(file.toString()).readLines()[3..10].join('\n').md5() ] } + } + assertAll( { assert workflow.success }, - { assert snapshot( - *getStandardAssertionData(params.outdir) - ).match() } + { assert snapshot(*snapshotArgs).match() } ) } } diff --git a/tests/bismark_variants.nf.test.snap b/tests/bismark_variants.nf.test.snap index 996a76f0..609423fb 100644 --- a/tests/bismark_variants.nf.test.snap +++ b/tests/bismark_variants.nf.test.snap @@ -631,11 +631,11 @@ ] ] ], + "timestamp": "2026-06-14T23:34:05.595649", "meta": { - "nf-test": "0.9.3", + "nf-test": "0.9.5", "nextflow": "25.10.0" - }, - "timestamp": "2025-12-07T10:45:58.276703" + } }, "Params: bismark with nomeseq": { "content": [ @@ -1059,11 +1059,11 @@ ] ] ], + "timestamp": "2026-06-14T23:13:33.160254", "meta": { - "nf-test": "0.9.3", + "nf-test": "0.9.5", "nextflow": "25.10.0" - }, - "timestamp": "2025-12-07T10:38:18.781605" + } }, "Params: bismark with skip_multiqc": { "content": [ @@ -1279,11 +1279,11 @@ ] ] ], + "timestamp": "2026-06-14T23:37:23.115105", "meta": { - "nf-test": "0.9.3", + "nf-test": "0.9.5", "nextflow": "25.10.0" - }, - "timestamp": "2025-12-07T10:48:19.267681" + } }, "Params: bismark (default)": { "content": [ @@ -1660,11 +1660,11 @@ ] ] ], + "timestamp": "2026-06-14T22:51:47.599336", "meta": { - "nf-test": "0.9.3", + "nf-test": "0.9.5", "nextflow": "25.10.0" - }, - "timestamp": "2025-12-07T10:22:54.806971" + } }, "Params: bismark with cytosine_report": { "content": [ @@ -2064,11 +2064,11 @@ ] ] ], + "timestamp": "2026-06-14T23:02:11.401779", "meta": { - "nf-test": "0.9.3", + "nf-test": "0.9.5", "nextflow": "25.10.0" - }, - "timestamp": "2025-12-07T10:30:26.772126" + } }, "Params: bismark with em_seq and clip_r1": { "content": [ @@ -2445,11 +2445,11 @@ ] ] ], + "timestamp": "2026-06-14T23:09:27.231998", "meta": { - "nf-test": "0.9.3", + "nf-test": "0.9.5", "nextflow": "25.10.0" - }, - "timestamp": "2025-12-07T10:35:29.168628" + } }, "Params: bismark with skip_trimming": { "content": [ @@ -2782,11 +2782,11 @@ ] ] ], + "timestamp": "2026-06-14T22:54:47.659124", "meta": { - "nf-test": "0.9.3", + "nf-test": "0.9.5", "nextflow": "25.10.0" - }, - "timestamp": "2025-12-07T10:25:09.468578" + } }, "Params: bismark with skip_deduplication": { "content": [ @@ -3164,11 +3164,11 @@ ] ] ], + "timestamp": "2026-06-14T22:58:18.824115", "meta": { - "nf-test": "0.9.3", + "nf-test": "0.9.5", "nextflow": "25.10.0" - }, - "timestamp": "2025-12-04T09:29:11.294598" + } }, "Params: bismark with rrbs": { "content": [ @@ -3546,11 +3546,11 @@ ] ] ], + "timestamp": "2026-06-14T23:05:52.033676", "meta": { - "nf-test": "0.9.3", + "nf-test": "0.9.5", "nextflow": "25.10.0" - }, - "timestamp": "2025-12-07T10:32:58.731579" + } }, "Params: bismark with save_reference and save_align_intermeds": { "content": [ @@ -3982,11 +3982,425 @@ ] ] ], + "timestamp": "2026-06-14T23:17:11.268759", "meta": { - "nf-test": "0.9.3", + "nf-test": "0.9.5", "nextflow": "25.10.0" - }, - "timestamp": "2025-12-07T10:40:49.377659" + } + }, + "Params: bismark with run_methurator": { + "content": [ + { + "BISMARK_DEDUPLICATE": { + "bismark": "0.25.1" + }, + "BISMARK_GENOMEPREPARATION_BOWTIE": { + "bismark": "0.25.1" + }, + "BISMARK_METHYLATIONEXTRACTOR": { + "bismark": "0.25.1" + }, + "BISMARK_REPORT": { + "bismark": "0.25.1" + }, + "BISMARK_SUMMARY": { + "bismark": "0.25.1" + }, + "GUNZIP": { + "gunzip": 1.13 + }, + "SAMTOOLS_INDEX": { + "samtools": "1.22.1" + }, + "TRIMGALORE": { + "trimgalore": "0.6.10", + "cutadapt": 4.9, + "pigz": 2.8 + }, + "Workflow": { + "nf-core/methylseq": "v4.3.0dev" + }, + "BISMARK_ALIGN": { + "bismark": "0.25.1" + }, + "FASTQC": { + "fastqc": "0.12.1" + }, + "METHURATOR_GTESTIMATOR": { + "methurator": "2.1.1" + }, + "METHURATOR_PLOT": { + "methurator": "2.1.1" + }, + "MULTIQC": { + "multiqc": 1.32 + }, + "SAMTOOLS_SORT": { + "samtools": "1.22.1" + } + }, + [ + "bismark", + "bismark/alignments", + "bismark/alignments/logs", + "bismark/alignments/logs/Ecoli_10K_methylated_1_val_1_bismark_bt2_PE_report.txt", + "bismark/alignments/logs/SRR389222_sub1_trimmed_bismark_bt2_SE_report.txt", + "bismark/alignments/logs/SRR389222_sub2_trimmed_bismark_bt2_SE_report.txt", + "bismark/alignments/logs/SRR389222_sub3_trimmed_bismark_bt2_SE_report.txt", + "bismark/deduplicated", + "bismark/deduplicated/Ecoli_10K_methylated.deduplicated.sorted.bam", + "bismark/deduplicated/Ecoli_10K_methylated.deduplicated.sorted.bam.bai", + "bismark/deduplicated/SRR389222_sub1.deduplicated.sorted.bam", + "bismark/deduplicated/SRR389222_sub1.deduplicated.sorted.bam.bai", + "bismark/deduplicated/SRR389222_sub2.deduplicated.sorted.bam", + "bismark/deduplicated/SRR389222_sub2.deduplicated.sorted.bam.bai", + "bismark/deduplicated/SRR389222_sub3.deduplicated.sorted.bam", + "bismark/deduplicated/SRR389222_sub3.deduplicated.sorted.bam.bai", + "bismark/deduplicated/logs", + "bismark/deduplicated/logs/Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplication_report.txt", + "bismark/deduplicated/logs/SRR389222_sub1_trimmed_bismark_bt2.deduplication_report.txt", + "bismark/deduplicated/logs/SRR389222_sub2_trimmed_bismark_bt2.deduplication_report.txt", + "bismark/deduplicated/logs/SRR389222_sub3_trimmed_bismark_bt2.deduplication_report.txt", + "bismark/methylation_calls", + "bismark/methylation_calls/bedGraph", + "bismark/methylation_calls/bedGraph/Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated.bedGraph.gz", + "bismark/methylation_calls/bedGraph/SRR389222_sub1_trimmed_bismark_bt2.deduplicated.bedGraph.gz", + "bismark/methylation_calls/bedGraph/SRR389222_sub2_trimmed_bismark_bt2.deduplicated.bedGraph.gz", + "bismark/methylation_calls/bedGraph/SRR389222_sub3_trimmed_bismark_bt2.deduplicated.bedGraph.gz", + "bismark/methylation_calls/mbias", + "bismark/methylation_calls/mbias/Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated.M-bias.txt", + "bismark/methylation_calls/mbias/SRR389222_sub1_trimmed_bismark_bt2.deduplicated.M-bias.txt", + "bismark/methylation_calls/mbias/SRR389222_sub2_trimmed_bismark_bt2.deduplicated.M-bias.txt", + "bismark/methylation_calls/mbias/SRR389222_sub3_trimmed_bismark_bt2.deduplicated.M-bias.txt", + "bismark/methylation_calls/methylation_calls", + "bismark/methylation_calls/methylation_calls/CHG_OB_Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CHG_OB_SRR389222_sub1_trimmed_bismark_bt2.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CHG_OB_SRR389222_sub2_trimmed_bismark_bt2.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CHG_OB_SRR389222_sub3_trimmed_bismark_bt2.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CHG_OT_Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CHG_OT_SRR389222_sub1_trimmed_bismark_bt2.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CHG_OT_SRR389222_sub2_trimmed_bismark_bt2.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CHG_OT_SRR389222_sub3_trimmed_bismark_bt2.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CHH_OB_Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CHH_OB_SRR389222_sub1_trimmed_bismark_bt2.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CHH_OB_SRR389222_sub2_trimmed_bismark_bt2.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CHH_OB_SRR389222_sub3_trimmed_bismark_bt2.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CHH_OT_Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CHH_OT_SRR389222_sub1_trimmed_bismark_bt2.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CHH_OT_SRR389222_sub2_trimmed_bismark_bt2.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CHH_OT_SRR389222_sub3_trimmed_bismark_bt2.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CpG_OB_Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CpG_OB_SRR389222_sub1_trimmed_bismark_bt2.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CpG_OB_SRR389222_sub2_trimmed_bismark_bt2.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CpG_OB_SRR389222_sub3_trimmed_bismark_bt2.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CpG_OT_Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CpG_OT_SRR389222_sub1_trimmed_bismark_bt2.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CpG_OT_SRR389222_sub2_trimmed_bismark_bt2.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_calls/CpG_OT_SRR389222_sub3_trimmed_bismark_bt2.deduplicated.txt.gz", + "bismark/methylation_calls/methylation_coverage", + "bismark/methylation_calls/methylation_coverage/Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated.bismark.cov.gz", + "bismark/methylation_calls/methylation_coverage/SRR389222_sub1_trimmed_bismark_bt2.deduplicated.bismark.cov.gz", + "bismark/methylation_calls/methylation_coverage/SRR389222_sub2_trimmed_bismark_bt2.deduplicated.bismark.cov.gz", + "bismark/methylation_calls/methylation_coverage/SRR389222_sub3_trimmed_bismark_bt2.deduplicated.bismark.cov.gz", + "bismark/methylation_calls/splitting_report", + "bismark/methylation_calls/splitting_report/Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated_splitting_report.txt", + "bismark/methylation_calls/splitting_report/SRR389222_sub1_trimmed_bismark_bt2.deduplicated_splitting_report.txt", + "bismark/methylation_calls/splitting_report/SRR389222_sub2_trimmed_bismark_bt2.deduplicated_splitting_report.txt", + "bismark/methylation_calls/splitting_report/SRR389222_sub3_trimmed_bismark_bt2.deduplicated_splitting_report.txt", + "bismark/reports", + "bismark/reports/Ecoli_10K_methylated_1_val_1_bismark_bt2_PE_report.html", + "bismark/reports/SRR389222_sub1_trimmed_bismark_bt2_SE_report.html", + "bismark/reports/SRR389222_sub2_trimmed_bismark_bt2_SE_report.html", + "bismark/reports/SRR389222_sub3_trimmed_bismark_bt2_SE_report.html", + "bismark/summary", + "bismark/summary/bismark_summary_report.html", + "bismark/summary/bismark_summary_report.txt", + "fastqc", + "fastqc/Ecoli_10K_methylated_1_fastqc.html", + "fastqc/Ecoli_10K_methylated_2_fastqc.html", + "fastqc/SRR389222_sub1_fastqc.html", + "fastqc/SRR389222_sub2_fastqc.html", + "fastqc/SRR389222_sub3_fastqc.html", + "fastqc/zips", + "fastqc/zips/Ecoli_10K_methylated_1_fastqc.zip", + "fastqc/zips/Ecoli_10K_methylated_2_fastqc.zip", + "fastqc/zips/SRR389222_sub1_fastqc.zip", + "fastqc/zips/SRR389222_sub2_fastqc.zip", + "fastqc/zips/SRR389222_sub3_fastqc.zip", + "methurator", + "methurator/plots", + "methurator/plots/Ecoli_10K_methylated.deduplicated.sorted_CpG.bedGraph_1x_plot.html", + "methurator/plots/SRR389222_sub1.deduplicated.sorted_CpG.bedGraph_1x_plot.html", + "methurator/plots/SRR389222_sub2.deduplicated.sorted_CpG.bedGraph_1x_plot.html", + "methurator/plots/SRR389222_sub3.deduplicated.sorted_CpG.bedGraph_1x_plot.html", + "methurator/summaries", + "methurator/summaries/Ecoli_10K_methylated.yml", + "methurator/summaries/SRR389222_sub1.yml", + "methurator/summaries/SRR389222_sub2.yml", + "methurator/summaries/SRR389222_sub3.yml", + "multiqc", + "multiqc/bismark", + "multiqc/bismark/multiqc_data", + "multiqc/bismark/multiqc_data/bismark-methylation-dp.txt", + "multiqc/bismark/multiqc_data/bismark_alignment.txt", + "multiqc/bismark/multiqc_data/bismark_deduplication.txt", + "multiqc/bismark/multiqc_data/bismark_mbias_CHG_R1.txt", + "multiqc/bismark/multiqc_data/bismark_mbias_CHG_R2.txt", + "multiqc/bismark/multiqc_data/bismark_mbias_CHH_R1.txt", + "multiqc/bismark/multiqc_data/bismark_mbias_CHH_R2.txt", + "multiqc/bismark/multiqc_data/bismark_mbias_CpG_R1.txt", + "multiqc/bismark/multiqc_data/bismark_mbias_CpG_R2.txt", + "multiqc/bismark/multiqc_data/bismark_strand_alignment.txt", + "multiqc/bismark/multiqc_data/cutadapt_filtered_reads_plot.txt", + "multiqc/bismark/multiqc_data/cutadapt_trimmed_sequences_plot_3_Counts.txt", + "multiqc/bismark/multiqc_data/cutadapt_trimmed_sequences_plot_3_Obs_Exp.txt", + "multiqc/bismark/multiqc_data/fastqc-status-check-heatmap.txt", + "multiqc/bismark/multiqc_data/fastqc_adapter_content_plot.txt", + "multiqc/bismark/multiqc_data/fastqc_overrepresented_sequences_plot.txt", + "multiqc/bismark/multiqc_data/fastqc_per_base_n_content_plot.txt", + "multiqc/bismark/multiqc_data/fastqc_per_base_sequence_quality_plot.txt", + "multiqc/bismark/multiqc_data/fastqc_per_sequence_gc_content_plot_Counts.txt", + "multiqc/bismark/multiqc_data/fastqc_per_sequence_gc_content_plot_Percentages.txt", + "multiqc/bismark/multiqc_data/fastqc_per_sequence_quality_scores_plot.txt", + "multiqc/bismark/multiqc_data/fastqc_sequence_counts_plot.txt", + "multiqc/bismark/multiqc_data/fastqc_sequence_duplication_levels_plot.txt", + "multiqc/bismark/multiqc_data/fastqc_top_overrepresented_sequences_table.txt", + "multiqc/bismark/multiqc_data/llms-full.txt", + "multiqc/bismark/multiqc_data/multiqc.log", + "multiqc/bismark/multiqc_data/multiqc.parquet", + "multiqc/bismark/multiqc_data/multiqc_bismark_alignment.txt", + "multiqc/bismark/multiqc_data/multiqc_bismark_dedup.txt", + "multiqc/bismark/multiqc_data/multiqc_bismark_methextract.txt", + "multiqc/bismark/multiqc_data/multiqc_citations.txt", + "multiqc/bismark/multiqc_data/multiqc_cutadapt.txt", + "multiqc/bismark/multiqc_data/multiqc_data.json", + "multiqc/bismark/multiqc_data/multiqc_fastqc.txt", + "multiqc/bismark/multiqc_data/multiqc_general_stats.txt", + "multiqc/bismark/multiqc_data/multiqc_software_versions.txt", + "multiqc/bismark/multiqc_data/multiqc_sources.txt", + "multiqc/bismark/multiqc_plots", + "multiqc/bismark/multiqc_plots/pdf", + "multiqc/bismark/multiqc_plots/pdf/bismark-methylation-dp.pdf", + "multiqc/bismark/multiqc_plots/pdf/bismark_alignment-cnt.pdf", + "multiqc/bismark/multiqc_plots/pdf/bismark_alignment-pct.pdf", + "multiqc/bismark/multiqc_plots/pdf/bismark_deduplication-cnt.pdf", + "multiqc/bismark/multiqc_plots/pdf/bismark_deduplication-pct.pdf", + "multiqc/bismark/multiqc_plots/pdf/bismark_mbias_CHG_R1.pdf", + "multiqc/bismark/multiqc_plots/pdf/bismark_mbias_CHG_R2.pdf", + "multiqc/bismark/multiqc_plots/pdf/bismark_mbias_CHH_R1.pdf", + "multiqc/bismark/multiqc_plots/pdf/bismark_mbias_CHH_R2.pdf", + "multiqc/bismark/multiqc_plots/pdf/bismark_mbias_CpG_R1.pdf", + "multiqc/bismark/multiqc_plots/pdf/bismark_mbias_CpG_R2.pdf", + "multiqc/bismark/multiqc_plots/pdf/bismark_strand_alignment-cnt.pdf", + "multiqc/bismark/multiqc_plots/pdf/bismark_strand_alignment-pct.pdf", + "multiqc/bismark/multiqc_plots/pdf/cutadapt_filtered_reads_plot-cnt.pdf", + "multiqc/bismark/multiqc_plots/pdf/cutadapt_filtered_reads_plot-pct.pdf", + "multiqc/bismark/multiqc_plots/pdf/cutadapt_trimmed_sequences_plot_3_Counts.pdf", + "multiqc/bismark/multiqc_plots/pdf/cutadapt_trimmed_sequences_plot_3_Obs_Exp.pdf", + "multiqc/bismark/multiqc_plots/pdf/fastqc_adapter_content_plot.pdf", + "multiqc/bismark/multiqc_plots/pdf/fastqc_overrepresented_sequences_plot.pdf", + "multiqc/bismark/multiqc_plots/pdf/fastqc_per_base_n_content_plot.pdf", + "multiqc/bismark/multiqc_plots/pdf/fastqc_per_base_sequence_quality_plot.pdf", + "multiqc/bismark/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Counts.pdf", + "multiqc/bismark/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "multiqc/bismark/multiqc_plots/pdf/fastqc_per_sequence_quality_scores_plot.pdf", + "multiqc/bismark/multiqc_plots/pdf/fastqc_sequence_counts_plot-cnt.pdf", + "multiqc/bismark/multiqc_plots/pdf/fastqc_sequence_counts_plot-pct.pdf", + "multiqc/bismark/multiqc_plots/pdf/fastqc_sequence_duplication_levels_plot.pdf", + "multiqc/bismark/multiqc_plots/pdf/fastqc_top_overrepresented_sequences_table.pdf", + "multiqc/bismark/multiqc_plots/png", + "multiqc/bismark/multiqc_plots/png/bismark-methylation-dp.png", + "multiqc/bismark/multiqc_plots/png/bismark_alignment-cnt.png", + "multiqc/bismark/multiqc_plots/png/bismark_alignment-pct.png", + "multiqc/bismark/multiqc_plots/png/bismark_deduplication-cnt.png", + "multiqc/bismark/multiqc_plots/png/bismark_deduplication-pct.png", + "multiqc/bismark/multiqc_plots/png/bismark_mbias_CHG_R1.png", + "multiqc/bismark/multiqc_plots/png/bismark_mbias_CHG_R2.png", + "multiqc/bismark/multiqc_plots/png/bismark_mbias_CHH_R1.png", + "multiqc/bismark/multiqc_plots/png/bismark_mbias_CHH_R2.png", + "multiqc/bismark/multiqc_plots/png/bismark_mbias_CpG_R1.png", + "multiqc/bismark/multiqc_plots/png/bismark_mbias_CpG_R2.png", + "multiqc/bismark/multiqc_plots/png/bismark_strand_alignment-cnt.png", + "multiqc/bismark/multiqc_plots/png/bismark_strand_alignment-pct.png", + "multiqc/bismark/multiqc_plots/png/cutadapt_filtered_reads_plot-cnt.png", + "multiqc/bismark/multiqc_plots/png/cutadapt_filtered_reads_plot-pct.png", + "multiqc/bismark/multiqc_plots/png/cutadapt_trimmed_sequences_plot_3_Counts.png", + "multiqc/bismark/multiqc_plots/png/cutadapt_trimmed_sequences_plot_3_Obs_Exp.png", + "multiqc/bismark/multiqc_plots/png/fastqc_adapter_content_plot.png", + "multiqc/bismark/multiqc_plots/png/fastqc_overrepresented_sequences_plot.png", + "multiqc/bismark/multiqc_plots/png/fastqc_per_base_n_content_plot.png", + "multiqc/bismark/multiqc_plots/png/fastqc_per_base_sequence_quality_plot.png", + "multiqc/bismark/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Counts.png", + "multiqc/bismark/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Percentages.png", + "multiqc/bismark/multiqc_plots/png/fastqc_per_sequence_quality_scores_plot.png", + "multiqc/bismark/multiqc_plots/png/fastqc_sequence_counts_plot-cnt.png", + "multiqc/bismark/multiqc_plots/png/fastqc_sequence_counts_plot-pct.png", + "multiqc/bismark/multiqc_plots/png/fastqc_sequence_duplication_levels_plot.png", + "multiqc/bismark/multiqc_plots/png/fastqc_top_overrepresented_sequences_table.png", + "multiqc/bismark/multiqc_plots/svg", + "multiqc/bismark/multiqc_plots/svg/bismark-methylation-dp.svg", + "multiqc/bismark/multiqc_plots/svg/bismark_alignment-cnt.svg", + "multiqc/bismark/multiqc_plots/svg/bismark_alignment-pct.svg", + "multiqc/bismark/multiqc_plots/svg/bismark_deduplication-cnt.svg", + "multiqc/bismark/multiqc_plots/svg/bismark_deduplication-pct.svg", + "multiqc/bismark/multiqc_plots/svg/bismark_mbias_CHG_R1.svg", + "multiqc/bismark/multiqc_plots/svg/bismark_mbias_CHG_R2.svg", + "multiqc/bismark/multiqc_plots/svg/bismark_mbias_CHH_R1.svg", + "multiqc/bismark/multiqc_plots/svg/bismark_mbias_CHH_R2.svg", + "multiqc/bismark/multiqc_plots/svg/bismark_mbias_CpG_R1.svg", + "multiqc/bismark/multiqc_plots/svg/bismark_mbias_CpG_R2.svg", + "multiqc/bismark/multiqc_plots/svg/bismark_strand_alignment-cnt.svg", + "multiqc/bismark/multiqc_plots/svg/bismark_strand_alignment-pct.svg", + "multiqc/bismark/multiqc_plots/svg/cutadapt_filtered_reads_plot-cnt.svg", + "multiqc/bismark/multiqc_plots/svg/cutadapt_filtered_reads_plot-pct.svg", + "multiqc/bismark/multiqc_plots/svg/cutadapt_trimmed_sequences_plot_3_Counts.svg", + "multiqc/bismark/multiqc_plots/svg/cutadapt_trimmed_sequences_plot_3_Obs_Exp.svg", + "multiqc/bismark/multiqc_plots/svg/fastqc_adapter_content_plot.svg", + "multiqc/bismark/multiqc_plots/svg/fastqc_overrepresented_sequences_plot.svg", + "multiqc/bismark/multiqc_plots/svg/fastqc_per_base_n_content_plot.svg", + "multiqc/bismark/multiqc_plots/svg/fastqc_per_base_sequence_quality_plot.svg", + "multiqc/bismark/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Counts.svg", + "multiqc/bismark/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Percentages.svg", + "multiqc/bismark/multiqc_plots/svg/fastqc_per_sequence_quality_scores_plot.svg", + "multiqc/bismark/multiqc_plots/svg/fastqc_sequence_counts_plot-cnt.svg", + "multiqc/bismark/multiqc_plots/svg/fastqc_sequence_counts_plot-pct.svg", + "multiqc/bismark/multiqc_plots/svg/fastqc_sequence_duplication_levels_plot.svg", + "multiqc/bismark/multiqc_plots/svg/fastqc_top_overrepresented_sequences_table.svg", + "multiqc/bismark/multiqc_report.html", + "pipeline_info", + "pipeline_info/nf_core_methylseq_software_mqc_versions.yml", + "pipeline_info/nf_core_methylseq_topic_versions.yml", + "trimgalore", + "trimgalore/fastqc", + "trimgalore/fastqc/Ecoli_10K_methylated_1_val_1_fastqc.html", + "trimgalore/fastqc/Ecoli_10K_methylated_2_val_2_fastqc.html", + "trimgalore/fastqc/SRR389222_sub1_trimmed_fastqc.html", + "trimgalore/fastqc/SRR389222_sub2_trimmed_fastqc.html", + "trimgalore/fastqc/SRR389222_sub3_trimmed_fastqc.html", + "trimgalore/fastqc/zips", + "trimgalore/fastqc/zips/Ecoli_10K_methylated_1_val_1_fastqc.zip", + "trimgalore/fastqc/zips/Ecoli_10K_methylated_2_val_2_fastqc.zip", + "trimgalore/fastqc/zips/SRR389222_sub1_trimmed_fastqc.zip", + "trimgalore/fastqc/zips/SRR389222_sub2_trimmed_fastqc.zip", + "trimgalore/fastqc/zips/SRR389222_sub3_trimmed_fastqc.zip", + "trimgalore/logs", + "trimgalore/logs/Ecoli_10K_methylated_1.fastq.gz_trimming_report.txt", + "trimgalore/logs/Ecoli_10K_methylated_2.fastq.gz_trimming_report.txt", + "trimgalore/logs/SRR389222_sub1.fastq.gz_trimming_report.txt", + "trimgalore/logs/SRR389222_sub2.fastq.gz_trimming_report.txt", + "trimgalore/logs/SRR389222_sub3.fastq.gz_trimming_report.txt" + ], + [ + "Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated.bedGraph.gz:md5,58c9ba98d0638c26a30233b006a81172", + "SRR389222_sub1_trimmed_bismark_bt2.deduplicated.bedGraph.gz:md5,d31df76c1c9128299367ebfe740357b9", + "SRR389222_sub2_trimmed_bismark_bt2.deduplicated.bedGraph.gz:md5,010f32001bbc7805f8e041f3ef0d9ea9", + "SRR389222_sub3_trimmed_bismark_bt2.deduplicated.bedGraph.gz:md5,d42e09af121ae14f6e0de5779e317b0b", + "Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated.M-bias.txt:md5,29f3b882a51b63ce77d3d9c69b0e5f85", + "SRR389222_sub1_trimmed_bismark_bt2.deduplicated.M-bias.txt:md5,ed28b3cce432eecfae73bc4a071ec4ee", + "SRR389222_sub2_trimmed_bismark_bt2.deduplicated.M-bias.txt:md5,b06ce0084e54193ff8c9b9dd0ec9757b", + "SRR389222_sub3_trimmed_bismark_bt2.deduplicated.M-bias.txt:md5,b865b7fb6e1225feeb6aef3372ef0b1d", + "CHG_OB_Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated.txt.gz:md5,7481180fd95b62f1e60078c79be34e2f", + "CHG_OB_SRR389222_sub1_trimmed_bismark_bt2.deduplicated.txt.gz:md5,2845d98bade52fe2a58af52f1afd9b85", + "CHG_OB_SRR389222_sub2_trimmed_bismark_bt2.deduplicated.txt.gz:md5,74070ba17c4e59d70ed7cc9922e600d8", + "CHG_OB_SRR389222_sub3_trimmed_bismark_bt2.deduplicated.txt.gz:md5,3f76c73c72fb1cac742f21b474fc46bc", + "CHG_OT_Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated.txt.gz:md5,d15db39c712f65679cce464da6152f72", + "CHG_OT_SRR389222_sub1_trimmed_bismark_bt2.deduplicated.txt.gz:md5,e97acece3f1c5d5d2bbd11a661a8a0c2", + "CHG_OT_SRR389222_sub2_trimmed_bismark_bt2.deduplicated.txt.gz:md5,cd99a2fd1660b9a451cb71431e31a91d", + "CHG_OT_SRR389222_sub3_trimmed_bismark_bt2.deduplicated.txt.gz:md5,54d8bca27fbf11b023d3560967d1fd3a", + "CHH_OB_Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated.txt.gz:md5,37a3b88500ade0f99a57273b86bc8cc1", + "CHH_OB_SRR389222_sub1_trimmed_bismark_bt2.deduplicated.txt.gz:md5,e9bea3cda06742fda721dc19c9bd4069", + "CHH_OB_SRR389222_sub2_trimmed_bismark_bt2.deduplicated.txt.gz:md5,e63ed23d72bde2fa57dee81640cd7ca1", + "CHH_OB_SRR389222_sub3_trimmed_bismark_bt2.deduplicated.txt.gz:md5,e37bd858b4203e03f4380a3df817c1e6", + "CHH_OT_Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated.txt.gz:md5,e216e668a80eb0af621ea28bf30649a4", + "CHH_OT_SRR389222_sub1_trimmed_bismark_bt2.deduplicated.txt.gz:md5,ad1389c85f1082272d976ac254d1eed0", + "CHH_OT_SRR389222_sub2_trimmed_bismark_bt2.deduplicated.txt.gz:md5,f77da66629a9e6a435e5a5af24409663", + "CHH_OT_SRR389222_sub3_trimmed_bismark_bt2.deduplicated.txt.gz:md5,1e3ad0bd3be6ab66a9a19cc4cad28aba", + "CpG_OB_Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated.txt.gz:md5,eab3936aeadb93309dc853b911446969", + "CpG_OB_SRR389222_sub1_trimmed_bismark_bt2.deduplicated.txt.gz:md5,a3bb15f7b5ca52a39f3d21d04aea4273", + "CpG_OB_SRR389222_sub2_trimmed_bismark_bt2.deduplicated.txt.gz:md5,b78e383527553d5286c9c4d458abedce", + "CpG_OB_SRR389222_sub3_trimmed_bismark_bt2.deduplicated.txt.gz:md5,21b0e72333d9710207a113b2f4a1451d", + "CpG_OT_Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated.txt.gz:md5,421278ad8ebecee36102ee3b0578cb12", + "CpG_OT_SRR389222_sub1_trimmed_bismark_bt2.deduplicated.txt.gz:md5,8edb87d7eff9ad37390c2b3c1f81fcc3", + "CpG_OT_SRR389222_sub2_trimmed_bismark_bt2.deduplicated.txt.gz:md5,94f30db9814f457fd6dffa7e45b7883b", + "CpG_OT_SRR389222_sub3_trimmed_bismark_bt2.deduplicated.txt.gz:md5,36cdcad80268738caa3e674de21c500c", + "Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated.bismark.cov.gz:md5,8e6ba6fe66416d73e7f94b4da9ca77b1", + "SRR389222_sub1_trimmed_bismark_bt2.deduplicated.bismark.cov.gz:md5,5377d9fff4f1bf5b98dc2310fbeb6ec9", + "SRR389222_sub2_trimmed_bismark_bt2.deduplicated.bismark.cov.gz:md5,4713bda7b4f2bb16ce23853aea763cbd", + "SRR389222_sub3_trimmed_bismark_bt2.deduplicated.bismark.cov.gz:md5,f9a07c3e11e0caad6df3cd2e4d94d8ac", + "Ecoli_10K_methylated_1_val_1_bismark_bt2_pe.deduplicated_splitting_report.txt:md5,9b46b9f49f9b22e0565fb915c667cde2", + "SRR389222_sub1_trimmed_bismark_bt2.deduplicated_splitting_report.txt:md5,23036cfc6e2745e5a5bf67400b460bc1", + "SRR389222_sub2_trimmed_bismark_bt2.deduplicated_splitting_report.txt:md5,e06738420ad17564d41a789f2bdfd625", + "SRR389222_sub3_trimmed_bismark_bt2.deduplicated_splitting_report.txt:md5,a4de33fbf4437c7714ab128067541043", + "bismark-methylation-dp.txt:md5,dcbe642c42e31d8e480a2e46b97bbd45", + "bismark_alignment.txt:md5,544a74ea0f32005b0c886af79a6fad5b", + "bismark_deduplication.txt:md5,db387240d46c09b0b952ed8b54855e76", + "bismark_mbias_CHG_R1.txt:md5,1a2a02f5f48e312a7cfa91ec253c1f49", + "bismark_mbias_CHG_R2.txt:md5,1f6523b48bda086d29f70265187e7475", + "bismark_mbias_CHH_R1.txt:md5,bcd25ac0c71b5ec120e948bc165f54d4", + "bismark_mbias_CHH_R2.txt:md5,5e32a8b39118c3592b088a0b69ae1f21", + "bismark_mbias_CpG_R1.txt:md5,0da9724e4a303148c39b6f4c18b8876b", + "bismark_mbias_CpG_R2.txt:md5,46cca816038163d0f629fed7ada212b8", + "bismark_strand_alignment.txt:md5,a8738f981bab911b95ffe9d3434f2b08", + "cutadapt_filtered_reads_plot.txt:md5,ff1b6d4011a5be5410b9404f7ff56c56", + "cutadapt_trimmed_sequences_plot_3_Counts.txt:md5,57d07c19b0c30dc88df96c30bedcdc33", + "cutadapt_trimmed_sequences_plot_3_Obs_Exp.txt:md5,1e5ca4193f8290c5c812334d03615b41", + "fastqc-status-check-heatmap.txt:md5,218c2a7efbb9c02f652fa78fc739c866", + "fastqc_adapter_content_plot.txt:md5,48d8bd5ece984a74972ce0a0e814dd07", + "fastqc_overrepresented_sequences_plot.txt:md5,9c4b7064950b5b2c486d556984f21e9e", + "fastqc_per_base_n_content_plot.txt:md5,019d5cd4f61a31f4e7016140ca8ee36e", + "fastqc_per_base_sequence_quality_plot.txt:md5,e4c7d522114eab9bc9101e7ee9d83c8f", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,302659bee8a02b6a38b24fe25f8eaa87", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,c75b396eb5dda8682fb1652a9b2e92a3", + "fastqc_per_sequence_quality_scores_plot.txt:md5,548c593f4a8be2d8627fc3bd1c280611", + "fastqc_sequence_counts_plot.txt:md5,58eeeb06bc9dcc1764c7daf0847d6bbf", + "fastqc_sequence_duplication_levels_plot.txt:md5,9e5712db9aa39b5754ea1e0c49cfff15", + "fastqc_top_overrepresented_sequences_table.txt:md5,6dfc5334a09c05392ea17369aa742d01", + "multiqc_bismark_alignment.txt:md5,8ee2e88d6b5c1411b4665b02f82ae1b7", + "multiqc_bismark_dedup.txt:md5,d09a5de4d81a3207efb6a8937d060e46", + "multiqc_bismark_methextract.txt:md5,4b6db3a59616df1c803713affc07e043", + "multiqc_citations.txt:md5,73a6d29705d5a07f17f99c92e3a0f148", + "multiqc_cutadapt.txt:md5,883891ac4901385102be053212068732" + ], + [ + [ + "Ecoli_10K_methylated.deduplicated.sorted.bam", + "a54ab7c96f9523a4ccd25fd69f6905f8" + ], + [ + "SRR389222_sub1.deduplicated.sorted.bam", + "3f11ef5fbbda3797fd6217728e4f00d3" + ], + [ + "SRR389222_sub2.deduplicated.sorted.bam", + "b01f29fc1d8d46922a69df09c636b4c4" + ], + [ + "SRR389222_sub3.deduplicated.sorted.bam", + "347195c04c9ffd2a2b10967a6682fc69" + ] + ], + [ + "Ecoli_10K_methylated.yml", + "c30577c12a2b1a1b549025f612a27dc2" + ], + [ + "SRR389222_sub1.yml", + "70452313edf8e4fdaae4cdba02ec6fed" + ], + [ + "SRR389222_sub2.yml", + "3f509a7b4afc79540eab406bc420ff80" + ], + [ + "SRR389222_sub3.yml", + "f5bb4dc89831cc1528d111a010ec649a" + ] + ], + "timestamp": "2026-06-14T23:29:47.563826", + "meta": { + "nf-test": "0.9.5", + "nextflow": "25.10.0" + } }, "Params: bismark with CAT_FASTQ and skip_trimming and skip_deduplication": { "content": [ @@ -4256,11 +4670,11 @@ ] ] ], + "timestamp": "2026-06-14T23:42:42.932878", "meta": { - "nf-test": "0.9.3", + "nf-test": "0.9.5", "nextflow": "25.10.0" - }, - "timestamp": "2025-12-04T10:25:14.441173" + } }, "Params: bismark with run_preseq": { "content": [ @@ -4637,11 +5051,11 @@ ] ] ], + "timestamp": "2026-06-14T23:20:55.053112", "meta": { - "nf-test": "0.9.3", + "nf-test": "0.9.5", "nextflow": "25.10.0" - }, - "timestamp": "2025-12-07T10:43:18.505941" + } }, "Params: bismark with skip_fastqc": { "content": [ @@ -4947,10 +5361,10 @@ ] ] ], + "timestamp": "2026-06-14T23:40:34.102219", "meta": { - "nf-test": "0.9.3", + "nf-test": "0.9.5", "nextflow": "25.10.0" - }, - "timestamp": "2025-12-07T10:50:36.291567" + } } } \ No newline at end of file diff --git a/tests/index_downloads.nf.test b/tests/index_downloads.nf.test index 1db213d2..c0367032 100644 --- a/tests/index_downloads.nf.test +++ b/tests/index_downloads.nf.test @@ -21,6 +21,15 @@ nextflow_pipeline { run_preseq: true ] ], + [ + name: "bismark_run_methurator_with_bowtie2_index", + description: "Params: bismark with run_methurator with bowtie2-index", + params: [ + bismark_index: "https://github.com/nf-core/test-datasets/raw/methylseq/reference/Bowtie2_Index.tar.gz", + run_methurator: true, + minimum_coverage: "1" + ] + ], [ name: "bwameth_with_bwameth_index", description: "Params: bwameth with bwameth-index", diff --git a/tests/index_downloads.nf.test.snap b/tests/index_downloads.nf.test.snap index 0e4f2f3a..8f69a942 100644 --- a/tests/index_downloads.nf.test.snap +++ b/tests/index_downloads.nf.test.snap @@ -45,11 +45,11 @@ } } ], + "timestamp": "2025-12-04T11:02:11.64102", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.0" - }, - "timestamp": "2025-12-04T11:02:11.64102" + } }, "Params: bismark_hisat with hisat2-index": { "content": [ @@ -97,11 +97,11 @@ } } ], + "timestamp": "2025-12-04T11:08:29.489122", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.0" - }, - "timestamp": "2025-12-04T11:08:29.489122" + } }, "Params: bismark with run_preseq with bowtie2-index": { "content": [ @@ -149,11 +149,11 @@ } } ], + "timestamp": "2025-12-04T11:04:35.596818", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.0" - }, - "timestamp": "2025-12-04T11:04:35.596818" + } }, "Params: bwameth with bwameth-index": { "content": [ @@ -207,10 +207,68 @@ } } ], + "timestamp": "2025-12-04T11:06:00.333714", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.0" - }, - "timestamp": "2025-12-04T11:06:00.333714" + } + }, + "Params: bismark with run_methurator with bowtie2-index": { + "content": [ + { + "BISMARK_DEDUPLICATE": { + "bismark": "0.25.1" + }, + "BISMARK_METHYLATIONEXTRACTOR": { + "bismark": "0.25.1" + }, + "BISMARK_REPORT": { + "bismark": "0.25.1" + }, + "BISMARK_SUMMARY": { + "bismark": "0.25.1" + }, + "GUNZIP": { + "gunzip": 1.13 + }, + "SAMTOOLS_INDEX": { + "samtools": "1.22.1" + }, + "TRIMGALORE": { + "trimgalore": "0.6.10", + "cutadapt": 4.9, + "pigz": 2.8 + }, + "UNTAR_BISMARK": { + "untar": 1.34 + }, + "Workflow": { + "nf-core/methylseq": "v4.3.0dev" + }, + "BISMARK_ALIGN": { + "bismark": "0.25.1" + }, + "FASTQC": { + "fastqc": "0.12.1" + }, + "METHURATOR_GTESTIMATOR": { + "methurator": "2.1.1" + }, + "METHURATOR_PLOT": { + "methurator": "2.1.1" + }, + "MULTIQC": { + "multiqc": 1.32 + }, + "SAMTOOLS_SORT": { + "samtools": "1.22.1" + } + } + ], + "timestamp": "2026-06-14T01:08:16.422121", + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + } } } \ No newline at end of file diff --git a/workflows/methylseq/main.nf b/workflows/methylseq/main.nf index b4d28e01..70027195 100644 --- a/workflows/methylseq/main.nf +++ b/workflows/methylseq/main.nf @@ -24,6 +24,8 @@ include { validateInputSamplesheet } from '../../subworkflows/local/utils_n include { BAM_TAPS_CONVERSION } from '../../subworkflows/nf-core/bam_taps_conversion' include { BAM_METHYLDACKEL } from '../../subworkflows/nf-core/bam_methyldackel/main' include { TARGETED_SEQUENCING } from '../../subworkflows/local/targeted_sequencing' +include { METHURATOR_GTESTIMATOR } from '../../modules/nf-core/methurator/gtestimator/main' +include { METHURATOR_PLOT } from '../../modules/nf-core/methurator/plot/main' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -306,6 +308,28 @@ workflow METHYLSEQ { ch_versions = ch_versions.mix(PRESEQ_LCEXTRAP.out.versions) } + // + // MODULE: methurator gtestimator + // skipped by default. to use run with `--run_methurator` param. + // + if (params.run_methurator) { + if (params.taps || params.aligner == 'bwamem') { + error("ERROR: --run_methurator can't be running using TAPS workflow.") + } + ch_methurator_inputs = ch_bam + .join(ch_bai) + .combine(ch_fasta.map { meta, fasta -> fasta }) + .combine(ch_fasta_index.map { meta, index -> index }) + METHURATOR_GTESTIMATOR( + ch_methurator_inputs + ) + ch_methurator_gtestimator = METHURATOR_GTESTIMATOR.out.summary_report + + METHURATOR_PLOT( + ch_methurator_gtestimator + ) + } + // // Collate and save software versions // diff --git a/workflows/methylseq/nextflow.config b/workflows/methylseq/nextflow.config index 7578383b..6025a5f2 100644 --- a/workflows/methylseq/nextflow.config +++ b/workflows/methylseq/nextflow.config @@ -4,6 +4,8 @@ includeConfig "../../conf/modules/trimgalore.config" includeConfig "../../conf/modules/multiqc.config" includeConfig "../../conf/modules/preseq_lcextrap.config" includeConfig "../../conf/modules/qualimap_bamqc.config" +includeConfig "../../conf/modules/methurator_gtestimator.config" +includeConfig "../../conf/modules/methurator_plot.config" // subworkflow configs includeConfig "../../conf/subworkflows/fasta_index_bismark_bwameth.config"