Skip to content

Important! Template update for nf-core/tools v4.0.2#1827

Merged
pinin4fjords merged 11 commits into
devfrom
nf-core-template-merge-4.0.2
May 5, 2026
Merged

Important! Template update for nf-core/tools v4.0.2#1827
pinin4fjords merged 11 commits into
devfrom
nf-core-template-merge-4.0.2

Conversation

@nf-core-bot

@nf-core-bot nf-core-bot commented Apr 30, 2026

Copy link
Copy Markdown
Member

Merges nf-core/tools v4.0.2 template into dev. Substantial drift (last template merge was v3.5.1), so most conflicts were resolved by keeping rnaseq-specific behaviour and selectively adopting template improvements. After the initial merge, choices were cross-checked against the four 4.0.2 PRs that landed first (nf-core/mag#1030, nf-core/rnavar#303, nf-core/bamtofastq#138, nf-core/seqinspector#233) and aligned where they had reached the same conclusion.

Resolution summary

Kept from dev (pipeline-specific)

  • Per-module conf/modules/*.config layout, ARM/AMD container splits, parabricks/sentieon hooks, prokaryotic test profile
  • Custom nf-test.config with dynamic SKIP_SENTIEON / SKIP_GPU ignore lists and explicit-profile policy (CPU test vs GPU test_gpu)
  • nf-test.yml Nextflow pin 25.04.3 (conda --mkdir fix) and NFT 0.9.5 bump
  • awsfulltest.yml aligner matrix and if: always() artifact upload
  • PREPARE_GENOME 28-input call site and rnaseq-specific PIPELINE_COMPLETION summary (rnaseqSummary with per-sample trim/map/strand status)
  • Custom process.publishDir block with ext.publish_prefix for --skip_quantification_merge per-sample publishing
  • nf-core fastqc and multiqc modules at the dev pinned shas (don't churn ARM Wave pins)
  • All dev structural moves: workflows/rnaseq.nfworkflows/rnaseq/, assets/multiqc_config.ymlworkflows/rnaseq/assets/multiqc/, .github/CONTRIBUTING.mddocs/CONTRIBUTING.md
  • creativeWorkStatus: InProgress, dev URLs / 3.26.0dev version in ro-crate-metadata.json

Adopted from template / aligned with the 4.0.2 cohort

  • nf_core_version: 4.0.2 and template badge updates in README.md / ro-crate-metadata.json
  • outputDir = params.outdir and workflow.output.mode = params.publish_dir_mode in nextflow.config (alongside the existing process.publishDir block, matching mag / rnavar / bamtofastq / seqinspector)
  • Stripped the Slack/Teams imNotification notification path: removed hook_url param + schema entry, removed imNotification import + workflow plumbing, dropped hook_url=... from awsfulltest.yml + cloud_tests_full.yml. The four cohort pipelines all dropped the same path. Bumped subworkflows/nf-core/utils_nfcore_pipeline to a3fb7351b1fdb2b1de282b765816bbea190e86a8 (the cohort sha) so check_local_copy passes; the only difference vs the previous dev sha is this imNotification removal plus a valid_config = valid_config default-value tweak.
  • SHA-pinned rzr/fediverse-action in release-announcements.yml and actions/upload-artifact@v7 in awsfulltest.yml
  • docs/CONTRIBUTING.md (new) - the rnaseq-specific note about not setting a default profile "test" was ported across
  • Template's auto-generated contributor graph in ro-crate-metadata.json (Harshil / Phil / Rickard from .nf-core.yml template.author); #pinin4fjords Person preserved because maintainer references it
  • Removed .github/CONTRIBUTING.md from lint.files_unchanged (file no longer exists)
  • Template's tests/default.nf.test variable rename (stable_name/stable_pathstable_path/stable_content); applied to both test cases for consistency
  • GitHub-flavored > [!WARNING] block in docs/usage.md (replaces Docusaurus :::warning)

Cleanups (post-merge fixes spotted during conflict review)

  • Dropped the template's leftover def before_text = "" / def after_text = "" orphan declarations in subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf; the heredoc assignments below now declare with def
  • Re-aligned tests/main.pipeline_completion.workflow.nf.test after dropping hook_url from PIPELINE_COMPLETION

Lint follow-ups

  • Added assets/multiqc_config.yml to lint.files_exist ignore list in .nf-core.yml (we removed the file because dev moved its content to workflows/rnaseq/assets/multiqc/).
  • Lint also normalized ro-crate-metadata.json's description field against the README content (URL anchors and unicode escaping); accepted as-is.

Deliberate divergence: dropped orphaned conf/containers_*.config scaffolding

The 4.0 template ships eight conf/containers_<engine>_<arch>.config files plus committed modules/nf-core/{fastqc,multiqc}/.conda-lock/*.txt lock files as scaffolding for a per-process container override layer. The four cohort pipelines (mag, rnavar, bamtofastq, seqinspector) all kept these files inert at template-shipped sizes, but in every case they:

  • are not includeConfig'd from nextflow.config or any profile,
  • only cover 2 of ~128 processes in our pipeline (FASTQC + MULTIQC),
  • and don't slot into any wired-up workflow yet.

Rather than carry a half-implemented feature, this PR removes them and disables the container_configs lint rule via .nf-core.yml. When somebody actually implements the feature properly (committed conda lock files for every module, profile wiring, CI coverage), regenerate via nf-core pipelines lint --fix container_configs and drop the lint opt-out. Note: the next template-sync PR will re-add these files; they should be deleted again until the underlying feature is real.

Files resolved

.github/CONTRIBUTING.md, .github/workflows/awsfulltest.yml, .github/workflows/cloud_tests_full.yml, .github/workflows/nf-test.yml, .github/workflows/release-announcements.yml, .nf-core.yml, CHANGELOG.md, README.md, assets/multiqc_config.yml, conf/containers_*.config (8 files), docs/usage.md, main.nf, modules.json, modules/nf-core/fastqc/{main.nf,meta.yml}, modules/nf-core/multiqc/{environment.yml,main.nf,meta.yml,tests/main.nf.test,tests/main.nf.test.snap}, nextflow.config, nextflow_schema.json, nf-test.config, ro-crate-metadata.json, subworkflows/local/utils_nfcore_rnaseq_pipeline/{main.nf,tests/main.pipeline_completion.workflow.nf.test}, subworkflows/nf-core/utils_nfcore_pipeline/main.nf, tests/default.nf.test, tests/nextflow.config, workflows/rnaseq.nf.

Test plan

  • CI: nf-test smoke (CPU shards, docker)
  • CI: ARM nf-test
  • CI: GPU nf-test (parabricks + ribodetector)
  • CI: linting, prettier, editorconfig

References

nf-core-bot and others added 5 commits April 28, 2026 11:21
…-4.0.2

# Conflicts:
#	.github/CONTRIBUTING.md
#	.github/workflows/awsfulltest.yml
#	.github/workflows/nf-test.yml
#	.github/workflows/release-announcements.yml
#	.nf-core.yml
#	CHANGELOG.md
#	README.md
#	assets/multiqc_config.yml
#	docs/usage.md
#	main.nf
#	modules.json
#	modules/nf-core/fastqc/main.nf
#	modules/nf-core/fastqc/meta.yml
#	modules/nf-core/multiqc/environment.yml
#	modules/nf-core/multiqc/main.nf
#	modules/nf-core/multiqc/meta.yml
#	modules/nf-core/multiqc/tests/main.nf.test
#	modules/nf-core/multiqc/tests/main.nf.test.snap
#	nextflow.config
#	nextflow_schema.json
#	nf-test.config
#	ro-crate-metadata.json
#	subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf
#	tests/nextflow.config
#	workflows/rnaseq.nf
- restore dev's subworkflows/nf-core/utils_nfcore_pipeline/main.nf so
  imNotification() is available again (template-side removal would have
  broken PIPELINE_COMPLETION's hook_url branch)
- add hook_url params declaration in nextflow.config (the auto-merge
  dropped dev's System.getenv('HOOK_URL') line); schema entry stays
- ignore the removed assets/multiqc_config.yml in lint.files_exist
- accept nf-core lint's ro-crate description normalization against
  README content
nf-core pipelines lint --fix container_configs run against the kept-from-dev
module pins. The conf/containers_*.config files are static manifests for
nf-core tooling and are not includeConfig'd anywhere at runtime, so the
regenerated content has no functional impact on pipeline runs.
@github-actions

github-actions Bot commented May 5, 2026

Copy link
Copy Markdown

nf-core pipelines lint overall result: Passed ✅ ⚠️

Posted for pipeline commit 2779c8e

+| ✅ 202 tests passed       |+
#| ❔  21 tests were ignored |#
!| ❗   8 tests had warnings |!
Details

❗ Test warnings:

  • pipeline_todos - TODO string in awsfulltest.yml: You can customise AWS full pipeline tests as required
  • pipeline_todos - TODO string in nextflow.config: Specify any additional parameters here
  • pipeline_todos - TODO string in main.nf: Optionally add in-text citation tools to this list.
  • pipeline_todos - TODO string in main.nf: Optionally add bibliographic entries to this list.
  • pipeline_todos - TODO string in main.nf: Only uncomment below if logic in toolCitationText/toolBibliographyText has been filled!
  • pipeline_todos - TODO string in CONTRIBUTING.md: Add any pipeline specific contribution guidelines here, such as coding styles, procedures, checklists etc.
  • pipeline_todos - TODO string in base.config: Check the defaults for all processes
  • pipeline_todos - TODO string in methods_description_template.yml: #Update the HTML below to your preferred methods description, e.g. add publication citation for this pipeline

❔ Tests ignored:

✅ Tests passed:

Run details

  • nf-core/tools version 4.0.2
  • Run at 2026-05-05 16:54:18

- Import imNotification from utils_nfcore_pipeline explicitly. The strict
  Nextflow syntax check in CI ('Nextflow Lint' / pre-commit nextflow-lint)
  flagged 'imNotification is not defined' on the call site at
  utils_nfcore_rnaseq_pipeline/main.nf:166. Implicit cross-include
  resolution that worked in earlier Nextflow / Groovy modes is no
  longer accepted under the strict parser bundled with this template.
- Run prettier on docs/usage.md (table column padding tweak only).
…tputDir

After cross-checking against the four nf-core 4.0.2 template merges that
landed first (mag, rnavar, bamtofastq, seqinspector), align rnaseq with
the cohort:

- Adopt 'outputDir = params.outdir' and 'workflow.output.mode =
  params.publish_dir_mode' in nextflow.config (above the existing
  process.publishDir block). All four cohort pipelines added these
  lines; they configure the new 4.0 output DSL default without
  conflicting with the existing process.publishDir, which is still
  what publishes anything with a withName selector.
- Strip the Slack/Teams 'imNotification' notification path. Template
  4.0.2 removed this helper from subworkflows/nf-core/utils_nfcore_pipeline
  and all four cohort pipelines accepted that removal. Drops:
    - hook_url declaration in nextflow.config and nextflow_schema.json
    - hook_url take: input + onComplete branch in
      subworkflows/local/utils_nfcore_rnaseq_pipeline/main.nf
    - imNotification include in the local utils subworkflow
    - hook_url positional arg from PIPELINE_COMPLETION call site in main.nf
    - hook_url=... entries from awsfulltest.yml + cloud_tests_full.yml
      Tower launch parameters (the runs no longer need
      MEGATESTS_ALERTS_SLACK_HOOK_URL plumbing).
  Restored subworkflows/nf-core/utils_nfcore_pipeline/main.nf to the
  template-canonical version (auto-resolved at merge time, then
  reverted to dev in 47d5f07). The 'def imNotification' function
  is gone; modules.json sha continues to point at the matching
  upstream commit.
- Updated tests/main.pipeline_completion.workflow.nf.test to match
  the new 9-input PIPELINE_COMPLETION signature (was 10).
CI's check_local_copy lint flagged that the local content didn't
match the remote at the dev-recorded sha 65f5e638. Bump to the
sha used by the rest of the 4.0.2 cohort (mag, bamtofastq):
a3fb7351b1fdb2b1de282b765816bbea190e86a8. Diff vs 65f5e638 is
just the 'valid_config = valid_config' default-value tweak and
the imNotification removal we already aligned to.
Comment thread conf/containers_singularity_https_amd64.config Outdated
The 8 conf/containers_*.config files (singularity_https/oras/docker/conda_lock,
amd64/arm64) and the modules/nf-core/{fastqc,multiqc}/.conda-lock/ files were
shipped by nf-core/tools 4.0 as scaffolding for a per-process container
override layer fed by committed conda lock files. Nobody is using them yet:
they are not includeConfig'd from nextflow.config or any profile, they only
cover 2 of ~128 processes (fastqc, multiqc), and every other 4.0.2-merged
nf-core pipeline ships them inert too. Until the feature is fleshed out,
they are pure noise.
Disable the container_configs lint rule and add the eight removed
conf/containers_*.config paths to the files_exist ignore list, so
'nf-core pipelines lint' stops asking for them. They were dropped in
de9c912 as orphaned scaffolding for an unimplemented feature.
Comment thread docs/CONTRIBUTING.md Outdated
@pinin4fjords pinin4fjords merged commit 26aeb5d into dev May 5, 2026
83 checks passed
@pinin4fjords pinin4fjords deleted the nf-core-template-merge-4.0.2 branch May 5, 2026 17:27
@pinin4fjords

Copy link
Copy Markdown
Member

Thanks @erikrikarddaniel !

pinin4fjords added a commit to nf-core/tools that referenced this pull request May 5, 2026
… duplicate 'the')

Both typos in nf_core/pipeline-template/docs/CONTRIBUTING.md ship with
every pipeline that adopts the 4.0 template. 'focussed' is a less-common
British spelling; 'focused' is preferred in modern AmE and BrE style
guides. The second hit (line 54) is a duplicated 'the the'.

Caught downstream during the nf-core/rnaseq#1827 template merge review.
pinin4fjords added a commit to nf-core/differentialabundance that referenced this pull request May 13, 2026
Resolves conflicts for nf-core/tools v4.0.2 template merge, following
nf-core/rnaseq#1827 precedent.

Kept from dev (pipeline-specific):
- paramsets workflow signature and full workflows/differentialabundance.nf
  body with output {} blocks
- nf-test.config explicit-profile policy and all tests/default.nf.test
  cases
- Pipeline-specific manifest contributors

Adopted from template:
- nf_core_version 4.0.2, nextflowVersion !>=25.10.4, badge bumps in
  README and ro-crate-metadata.json
- outputDir = params.outdir + workflow.output.mode = params.publish_dir_mode
- utils_nfcore_pipeline bumped to a3fb7351b1fdb2b1de282b765816bbea190e86a8
  (drops imNotification path)
- tests/default.nf.test variable rename stable_name/stable_path ->
  stable_path/stable_content, applied to all four test cases
- .lineage/ added to .gitignore
- Template's auto-generated ro-crate-metadata.json (lint will
  renormalize description from the resolved README)

Local touch-ups:
- Removed .github/CONTRIBUTING.md from .nf-core.yml files_unchanged
  (file moved to docs/CONTRIBUTING.md in dev)
- Dropped orphan def before_text/after_text declarations in
  subworkflows/local/utils_nfcore_differentialabundance_pipeline/main.nf
- awsfulltest.yml nf-slack channel switched to differentialabundance-dev
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants