v1.13 - Copper Crocodile
When we do releases, we sometimes like to go big. This is one of those times.
This is a truly huge release of nf-core/tools with a massive amount of new functionality. Please be sure to read the changelog and updated readme carefully!
Note to developers - please run and push the results of nf-core lint --fix
before attempting to merge the automated synchronisation PR. This should reduce the size of the diff and make merging a lot easier.
The template and associated updates in this release is for Nextflow DSL1 pipelines. This is likely to be one of the last releases before we officially switch to DSL2. For those of you already with DSL2 pipelines you may need to treat the automated merge PR very carefully. Ask for help on Slack if in any doubt.
Template
- Major new feature - Validation of pipeline parameters [#426]
- The addition runs as soon as the pipeline launches and checks the pipeline input parameters two main things:
- No parameters are supplied that share a name with core Nextflow options (eg.
--resume
instead of-resume
) - Supplied parameters validate against the pipeline JSON schema (eg. correct variable types, required values)
- No parameters are supplied that share a name with core Nextflow options (eg.
- If either parameter validation fails or the pipeline has errors, a warning is given about any unexpected parameters found which are not described in the pipeline schema.
- This behaviour can be disabled by using
--validate_params false
- The addition runs as soon as the pipeline launches and checks the pipeline input parameters two main things:
- Added profiles to support the Charliecloud and Shifter container engines [#824]
- Note that Charliecloud requires Nextflow version
v21.03.0-edge
or later.
- Note that Charliecloud requires Nextflow version
- Profiles for container engines now explicitly disable all other engines [#867]
- Fixed typo in nf-core-lint CI that prevented the markdown summary from being automatically posted on PRs as a comment.
- Changed default for
--input
fromdata/*{1,2}.fastq.gz
tonull
, as this is now validated by the schema as a required value. - Removed support for
--name
parameter for custom run names.- The same functionality for MultiQC still exists with the core Nextflow
-name
option.
- The same functionality for MultiQC still exists with the core Nextflow
- Added to template docs about how to identify process name for resource customisation
- The parameters
--max_memory
and--max_time
are now validated against a regular expression [#793]- Must be written in the format
123.GB
/456.h
with any of the prefixes listed in the Nextflow docs - Bare numbers no longer allowed, avoiding people from trying to specify GB and actually specifying bytes.
- Must be written in the format
- Switched from cookiecutter to Jinja2 [#880]
- Finally dropped the wonderful cookiecutter library that was behind the first pipeline template that led to nf-core [#880]
- Now rendering templates directly using Jinja, which is what cookiecutter was doing anyway
Modules
Initial addition of a number of new helper commands for working with DSL2 modules:
modules list
- List available modulesmodules install
- Install a module from nf-core/modulesmodules remove
- Remove a module from a pipelinemodules create
- Create a module from the templatemodules create-test-yml
- Create thetest.yml
file for a module with md5 sums, tags, commands and names addedmodules lint
- Check a module against nf-core guidelines
You can read more about each of these commands in the main tools documentation (see README.md
or https://nf-co.re/tools)
Tools helper code
- Fixed some bugs in the command line interface for
nf-core launch
and improved formatting [#829] - New functionality for
nf-core download
to make it compatible with DSL2 pipelines [#832]- Singularity images in module files are now discovered and fetched
- Direct downloads of Singularity images in python allowed (much faster than running
singularity pull
) - Downloads now work with
$NXF_SINGULARITY_CACHEDIR
so that pipelines sharing containers have efficient downloads
- Changed behaviour of
nf-core sync
command [#787]- Instead of opening or updating a PR from
TEMPLATE
directly todev
, a new branch is now created fromTEMPLATE
and a PR opened from this todev
. - This is to make it easier to fix merge conflicts without accidentally bringing the entire pipeline history back into the
TEMPLATE
branch (which makes subsequent sync merges much more difficult)
- Instead of opening or updating a PR from
Linting
- Major refactor and rewrite of pipieline linting code
- Much better code organisation and maintainability
- New automatically generated documentation using Sphinx
- Numerous new tests and functions, removal of some unnecessary tests
- Added lint check for merge markers [#321]
- Added new option
--fix
to automatically correct some problems detected by linting - Added validation of default params to
nf-core schema lint
[#823] - Added schema validation of GitHub action workflows to lint function [#795]
- Fixed bug in schema title and description validation
- Added second progress bar for conda dependencies lint check, as it can be slow [#299]
- Added new lint test to check files that should be unchanged from the pipeline.
- Added the possibility to ignore lint tests using a
nf-core-lint.yml
config file [#809]