nextflow_config
PipelineLint.nextflow_config()
Checks the pipeline configuration for required variables.
All nf-core pipelines are required to be configured with a minimal set of variable names. This test fails or throws warnings if required variables are not set.
These config variables must be set in nextflow.config
or another config
file imported from there. Any variables set in nextflow script files (eg. main.nf
)
are not checked and will be assumed to be missing.
The following variables fail the test if missing:
-
params.outdir
: A directory in which all pipeline results should be saved -
manifest.name
: The pipeline name. Should begin withnf-core/
-
manifest.description
: A description of the pipeline -
manifest.version
- The version of this pipeline. This should correspond to a GitHub release.
- If
--release
is set when runningnf-core lint
, the version number must not contain the stringdev
- If
--release
is _not_ set, the version should end indev
(warning triggered if not)
-
manifest.nextflowVersion
- The minimum version of Nextflow required to run the pipeline.
- Should be
>=
or!>=
and a version number, eg.manifest.nextflowVersion = '>=0.31.0'
(see Nextflow documentation) >=
warns about old versions but tries to run anyway,!>=
fails for old versions. Only use the latter if you know that the pipeline will certainly fail before this version.- This should correspond to the
NXF_VER
version tested by GitHub Actions.
-
manifest.homePage
- The homepage for the pipeline. Should be the nf-core GitHub repository URL,
so beginning with
https://github.com/nf-core/
- The homepage for the pipeline. Should be the nf-core GitHub repository URL,
so beginning with
-
timeline.enabled
,trace.enabled
,report.enabled
,dag.enabled
- The nextflow timeline, trace, report and DAG should be enabled by default (set to
true
)
- The nextflow timeline, trace, report and DAG should be enabled by default (set to
-
process.cpus
,process.memory
,process.time
- Default CPUs, memory and time limits for tasks
-
params.input
- Input parameter to specify input data, specify this to avoid a warning
- Typical usage:
params.input
: Input data that is not NGS sequencing data
-
params.custom_config_version
- Should always be set to default value
master
- Should always be set to default value
-
params.custom_config_base
- Should always be set to default value:
https://raw.githubusercontent.com/nf-core/configs/${params.custom_config_version}
-
params.validationShowHiddenParams
- Determines whether boilerplate params are showed by schema. Set to
false
by default
- Determines whether boilerplate params are showed by schema. Set to
-
params.validationSchemaIgnoreParams
- A comma separated string of inputs the schema validation should ignore.
The following variables throw warnings if missing:
manifest.mainScript
: The filename of the main pipeline script (should bemain.nf
)timeline.file
,trace.file
,report.file
,dag.file
- Default filenames for the timeline, trace and report
- The DAG file path should end with
.svg
(If Graphviz is not installed, Nextflow will generate a.dot
file instead)
The following variables are depreciated and fail the test if they are still present:
params.version
: The old method for specifying the pipeline version. Replaced bymanifest.version
params.nf_required_version
: The old method for specifying the minimum Nextflow version. Replaced bymanifest.nextflowVersion
params.container
: The old method for specifying the dockerhub container address. Replaced byprocess.container
igenomesIgnore
: Changed toigenomes_ignore
NoteThe
snake_case
convention should now be used when defining pipeline parameters
The following Nextflow syntax is depreciated and fails the test if present:
- Process-level configuration syntax still using the old Nextflow syntax, for example:
process.$fastqc
instead ofprocess withName:'fastqc'
.
You can choose to ignore tests for the presence or absence of specific config variables
by creating a file called .nf-core.yml
in the root of your pipeline and creating
a list the config variables that should be ignored. For example:
The other checks in this test (depreciated syntax etc) can not be individually identified, but you can skip the entire test block if you wish: