methylseq
methylseq copied to clipboard
Template update, big DSL2 modules update
My attempt at getting the DSL2 port of this pipeline over the line.
A lot has changed since @phue originally worked on this. For starters, the DSL2 template is now officially released. This meant that I merged in the TEMPLATE
commits from the sync (which had a lot of merge conflicts as I think it was all copied in before without git history). There are also a lot of changes in modules syntax, and many previously local modules are now merged in to the central repo.
WIP - been manually trying to merge this all but untested so far, so still quite a way to go.
Note: This PR is to the dsl2
branch and not dev
I hope that when this is merged we can then get on to merging #199 soon after and then release.
When this is merged, it will encompass #220 and so that will close automatically immediately.
- [x] Fix merge conflicts from template sync
- [x] Remove local modules and replace with nf-core/modules
- [x] Strip out all modules and reinstall with new
modules.json
- [ ] Check that there aren't any now-dead files left hanging after the template update
- [ ] Go through linting errors
- [ ] Go through test pipeline errors
- [ ] Final test for review
nf-core lint
overall result: Passed :white_check_mark: :warning:
Posted for pipeline commit 9d13eb0
+| ✅ 135 tests passed |+
#| ❔ 1 tests were ignored |#
!| ❗ 7 tests had warnings |!
:heavy_exclamation_mark: Test warnings:
- readme - README did not have a Nextflow minimum version mentioned in Quick Start section.
-
pipeline_todos - TODO string in
awsfulltest.yml
: You can customise AWS full pipeline tests as required -
pipeline_todos - TODO string in
check_samplesheet.py
: Update the script to check the samplesheet -
pipeline_todos - TODO string in
WorkflowMain.groovy
: Add Zenodo DOI for pipeline after first release -
pipeline_todos - TODO string in
methylseq.nf
: Add all file path parameters for the pipeline to the list below -
pipeline_todos - TODO string in
base.config
: Check the defaults for all processes -
pipeline_todos - TODO string in
base.config
: Customise requirements for specific processes.
:grey_question: Tests ignored:
- actions_ci - actions_ci
:white_check_mark: Tests passed:
-
files_exist - File found:
.gitattributes
-
files_exist - File found:
.gitignore
-
files_exist - File found:
.markdownlint.yml
-
files_exist - File found:
CHANGELOG.md
-
files_exist - File found:
CITATIONS.md
-
files_exist - File found:
CODE_OF_CONDUCT.md
-
files_exist - File found:
CODE_OF_CONDUCT.md
-
files_exist - File found:
LICENSE
orLICENSE.md
orLICENCE
orLICENCE.md
-
files_exist - File found:
nextflow_schema.json
-
files_exist - File found:
nextflow.config
-
files_exist - File found:
README.md
-
files_exist - File found:
.github/.dockstore.yml
-
files_exist - File found:
.github/CONTRIBUTING.md
-
files_exist - File found:
.github/ISSUE_TEMPLATE/bug_report.md
-
files_exist - File found:
.github/ISSUE_TEMPLATE/config.yml
-
files_exist - File found:
.github/ISSUE_TEMPLATE/feature_request.md
-
files_exist - File found:
.github/PULL_REQUEST_TEMPLATE.md
-
files_exist - File found:
.github/workflows/branch.yml
-
files_exist - File found:
.github/workflows/ci.yml
-
files_exist - File found:
.github/workflows/linting_comment.yml
-
files_exist - File found:
.github/workflows/linting.yml
-
files_exist - File found:
assets/email_template.html
-
files_exist - File found:
assets/email_template.txt
-
files_exist - File found:
assets/sendmail_template.txt
-
files_exist - File found:
assets/nf-core-methylseq_logo.png
-
files_exist - File found:
bin/scrape_software_versions.py
-
files_exist - File found:
conf/modules.config
-
files_exist - File found:
conf/test.config
-
files_exist - File found:
conf/test_full.config
-
files_exist - File found:
docs/images/nf-core-methylseq_logo.png
-
files_exist - File found:
docs/output.md
-
files_exist - File found:
docs/README.md
-
files_exist - File found:
docs/README.md
-
files_exist - File found:
docs/usage.md
-
files_exist - File found:
lib/nfcore_external_java_deps.jar
-
files_exist - File found:
lib/NfcoreSchema.groovy
-
files_exist - File found:
lib/NfcoreTemplate.groovy
-
files_exist - File found:
lib/Utils.groovy
-
files_exist - File found:
lib/WorkflowMain.groovy
-
files_exist - File found:
modules/local/get_software_versions.nf
-
files_exist - File found:
main.nf
-
files_exist - File found:
assets/multiqc_config.yaml
-
files_exist - File found:
conf/base.config
-
files_exist - File found:
conf/igenomes.config
-
files_exist - File found:
.github/workflows/awstest.yml
-
files_exist - File found:
.github/workflows/awsfulltest.yml
-
files_exist - File found:
lib/WorkflowMethylseq.groovy
-
files_exist - File found:
modules.json
-
files_exist - File not found check:
Singularity
-
files_exist - File not found check:
parameters.settings.json
-
files_exist - File not found check:
bin/markdown_to_html.r
-
files_exist - File not found check:
conf/aws.config
-
files_exist - File not found check:
.github/workflows/push_dockerhub.yml
-
files_exist - File not found check:
.travis.yml
-
nextflow_config - Config variable found:
manifest.name
-
nextflow_config - Config variable found:
manifest.nextflowVersion
-
nextflow_config - Config variable found:
manifest.description
-
nextflow_config - Config variable found:
manifest.version
-
nextflow_config - Config variable found:
manifest.homePage
-
nextflow_config - Config variable found:
timeline.enabled
-
nextflow_config - Config variable found:
trace.enabled
-
nextflow_config - Config variable found:
report.enabled
-
nextflow_config - Config variable found:
dag.enabled
-
nextflow_config - Config variable found:
process.cpus
-
nextflow_config - Config variable found:
process.memory
-
nextflow_config - Config variable found:
process.time
-
nextflow_config - Config variable found:
params.outdir
-
nextflow_config - Config variable found:
params.input
-
nextflow_config - Config variable found:
params.show_hidden_params
-
nextflow_config - Config variable found:
params.schema_ignore_params
-
nextflow_config - Config variable found:
manifest.mainScript
-
nextflow_config - Config variable found:
timeline.file
-
nextflow_config - Config variable found:
trace.file
-
nextflow_config - Config variable found:
report.file
-
nextflow_config - Config variable found:
dag.file
-
nextflow_config - Config variable (correctly) not found:
params.version
-
nextflow_config - Config variable (correctly) not found:
params.nf_required_version
-
nextflow_config - Config variable (correctly) not found:
params.container
-
nextflow_config - Config variable (correctly) not found:
params.singleEnd
-
nextflow_config - Config variable (correctly) not found:
params.igenomesIgnore
-
nextflow_config - Config variable (correctly) not found:
params.name
-
nextflow_config - Config
timeline.enabled
had correct value:true
-
nextflow_config - Config
report.enabled
had correct value:true
-
nextflow_config - Config
trace.enabled
had correct value:true
-
nextflow_config - Config
dag.enabled
had correct value:true
-
nextflow_config - Config
manifest.name
began withnf-core/
-
nextflow_config - Config variable
manifest.homePage
began with https://github.com/nf-core/ -
nextflow_config - Config
dag.file
ended with.svg
-
nextflow_config - Config variable
manifest.nextflowVersion
started with >= or !>= -
nextflow_config - Config
manifest.version
ends indev
:'1.7dev'
-
nextflow_config - Config
params.custom_config_version
is set tomaster
-
nextflow_config - Config
params.custom_config_base
is set tohttps://raw.githubusercontent.com/nf-core/configs/master
- nextflow_config - Lines for loading custom profiles found
-
files_unchanged -
.gitattributes
matches the template -
files_unchanged -
.markdownlint.yml
matches the template -
files_unchanged -
CODE_OF_CONDUCT.md
matches the template -
files_unchanged -
LICENSE
matches the template -
files_unchanged -
.github/.dockstore.yml
matches the template -
files_unchanged -
.github/CONTRIBUTING.md
matches the template -
files_unchanged -
.github/ISSUE_TEMPLATE/bug_report.md
matches the template -
files_unchanged -
.github/ISSUE_TEMPLATE/config.yml
matches the template -
files_unchanged -
.github/ISSUE_TEMPLATE/feature_request.md
matches the template -
files_unchanged -
.github/PULL_REQUEST_TEMPLATE.md
matches the template -
files_unchanged -
.github/workflows/branch.yml
matches the template -
files_unchanged -
.github/workflows/linting_comment.yml
matches the template -
files_unchanged -
.github/workflows/linting.yml
matches the template -
files_unchanged -
assets/email_template.html
matches the template -
files_unchanged -
assets/email_template.txt
matches the template -
files_unchanged -
assets/sendmail_template.txt
matches the template -
files_unchanged -
assets/nf-core-methylseq_logo.png
matches the template -
files_unchanged -
bin/scrape_software_versions.py
matches the template -
files_unchanged -
docs/images/nf-core-methylseq_logo.png
matches the template -
files_unchanged -
docs/README.md
matches the template -
files_unchanged -
lib/nfcore_external_java_deps.jar
matches the template -
files_unchanged -
lib/NfcoreSchema.groovy
matches the template -
files_unchanged -
lib/NfcoreTemplate.groovy
matches the template -
files_unchanged -
.gitignore
matches the template -
files_unchanged -
assets/multiqc_config.yaml
matches the template - actions_awstest - '.github/workflows/awstest.yml' is triggered correctly
-
actions_awsfulltest -
.github/workflows/awsfulltest.yml
is triggered correctly -
actions_awsfulltest -
.github/workflows/awsfulltest.yml
does not use-profile test
-
readme - README Nextflow minimum version badge matched config. Badge:
21.04.0
, Config:21.04.0
- pipeline_name_conventions - Name adheres to nf-core convention
- template_strings - Did not find any Jinja template strings (128 files)
- schema_lint - Schema lint passed
- schema_lint - Schema title + description lint passed
- schema_params - Schema matched params returned from nextflow config
- actions_schema_validation - Workflow validation passed: branch.yml
- actions_schema_validation - Workflow validation passed: ci.yml
- actions_schema_validation - Workflow validation passed: linting.yml
- actions_schema_validation - Workflow validation passed: awsfulltest.yml
- actions_schema_validation - Workflow validation passed: awstest.yml
- actions_schema_validation - Workflow validation passed: linting_comment.yml
- merge_markers - No merge markers found in pipeline files
-
modules_json - Only installed modules found in
modules.json
Run details
- nf-core/tools version 2.1
- Run at
2021-11-08 08:25:21
Hi @ewels,
Thanks for picking this up again, I hadn't looked at this for a (quite a) while.
Just as a heads up, there are few caveats regarding the removal of local modules:
There were 2 main reasons why I went with local modules for this:
i) relates to the discussion here: https://github.com/nf-core/modules/pull/239#discussion_r594618090
To keep pipeline-specific code out of nf-core/modules
, I went with just keeping those memory/cpu settings in the local modules as the logic is not only scary but also depends on library presets as they are defined in the pipeline code.
But it is not optimal, because the generic module lacks multithreading completely because of that.
ii) relates to https://github.com/nf-core/methylseq/issues/181 (some discussion here: https://github.com/nf-core/modules/pull/129#issuecomment-774997513)
The current implementation on the dsl2 branch relies on the meta
map being attached to not only samples, but also the reference genome to enable mapping against multiple pseudogenomes (or assemblies) in one pipeline run.
See here for example: https://github.com/ewels/nf-core-methylseq/blob/dsl2-template-merge/subworkflows/local/bismark.nf#L54-L61
Hi @phue!
Great to hear from you 😀 Massive kudos for the work you did here with the DSL2 conversion, sorry it's taken me so long to get around to helping you with it.
i) Ok so I think I'm starting to understand this now. I get the reasoning for keeping the module as simple and generic as possible. But does the pipeline need to have a local module for this? Can it not just append to the $options.args
like other flags and use the central module?
ii) Ahhh, you mean this subtle little difference?
- tuple val(meta), path(bam), path(index)
+ tuple val(meta), path(bam)
+ path index
I totally missed that.. Right, and the objection for having it in nf-core/modules with that style is that it's not consistent with other modules / too complex?
Ok I see both standpoints. I kind of want to avoid having local versions of modules that are also available in the central nf-core/modules repo though. I think that it's inevitable that there will be feature drift between them and it kind of loses the advantages of having the DSL2 modules. I'll take it up on Slack and see if there's a way that we can resolve this.
sorry it's taken me so long to get around to helping you with it.
No worries, great that you brought it up again so we can have this discussion and get this thing finalized :+1:
i) Can it not just append to the
$options.args
like other flags and use the central module?
Yes, that's probably the cleaner option. Having a groovy function to do these memory/core calculations would be even better. I just went with the local modules because they were anyway required for ii)
Right, and the objection for having it in nf-core/modules with that style is that it's not consistent with other modules / too complex?
I don't think it's complex or anything, consistency is what mattered in the discussion back then. It would have required to extend the meta
map concept beyond samples but also to references/indices etc. Doing this change now across modules would be even more cumbersome as it would likely break existing dsl2 pipeline code.
Reminder to myself: Need to implement the new versioning code. Docs: https://nf-co.re/developers/adding_modules#new-module-guidelines-and-pr-review-checklist + check rnaseq pipeline.