0a333e29b4
Co-authored-by: Jose Espinosa-Carrasco <kadomu@gmail.com> |
||
---|---|---|
.github | ||
bin | ||
conf | ||
docs | ||
pipeline | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.prettierignore | ||
.prettierrc.yml | ||
CITATION.cff | ||
configtest.nf | ||
LICENSE | ||
nextflow.config | ||
nfcore_custom.config | ||
README.md |
A repository for hosting Nextflow configuration files containing custom parameters required to run nf-core pipelines at different Institutions.
Table of contents
Using an existing config
The Nextflow -c
parameter can be used with nf-core pipelines in order to load custom config files that you have available locally.
However, if you or other people within your organisation are likely to be running nf-core pipelines regularly it may be a good idea to use/create a custom config file that defines some generic settings unique to the computing environment within your organisation.
Configuration and parameters
The config files hosted in this repository define a set of parameters which are specific to compute environments at different Institutions but generic enough to be used with all nf-core pipelines.
All nf-core pipelines inherit the functionality provided by Nextflow, and as such custom config files can contain parameters/definitions that are available to both.
For example, if you have the ability to use Singularity on your HPC you can add and customize the Nextflow singularity
scope in your config file.
Similarly, you can define a Nextflow executor
depending on the job submission process available on your cluster.
In contrast, the params
section in your custom config file will typically define parameters that are specific to nf-core pipelines.
You should be able to get a good idea as to how other people are customising the execution of their nf-core pipelines by looking at some of the config files in nf-core/configs
.
Offline usage
To use nf-core pipelines offline, we recommend using the nf-core download
helper tool. This will download both the pipeline files and also the config profiles from nf-core/configs
. The pipeline files are then edited to load the configs from their relative file path correctly.
# Download the workflow + transfer to offline cluster
nf-core download rnaseq
scp nf-core-rnaseq-3.0.tar.gz me@myserver.com:/path/to/workflows # or however you prefer to transfer files to your offline cluster
# Connect to offline cluster
ssh me@myserver.com
# Extract workflow files
cd /path/to/workflows
tar -xzf nf-core-rnaseq-3.0.tar.gz
# Run workflow
cd /path/to/data
nextflow run /path/to/workflows/nf-core-rnaseq-3.0/workflow -profile mycluster
If required, you can instead download the nf-core/configs files yourself and customise the --custom_config_base
/ params.custom_config_base
parameter in each pipeline to to set to the location of the configs directory.
Adding a new config
If you decide to upload your custom config file to nf-core/configs
then this will ensure that your custom config file will be automatically downloaded, and available at run-time to all nf-core pipelines, and to everyone within your organisation.
You will simply have to specify -profile <config_name>
in the command used to run the pipeline.
See nf-core/configs
for examples.
Before adding your config file to nf-core/configs, we highly recommend writing and testing your own custom config file (as described [above](Using an existing config)), and then continuing with the next steps.
N.B. In your config file, please also make sure to add an extra params
section with params.config_profile_description
, params.config_profile_contact
and params.config_profile_url
set to reasonable values.
Users will get information on who wrote the configuration profile then when executing a nf-core pipeline and can report back if there are things missing for example.
N.B. If you try to specify a shell environment variable within your profile, in some cases you may get an error during testing of something like Unknown config attribute env.USER_SCRATCH -- check config file: /home/runner/work/configs/configs/nextflow.config
(where the bash environment variable is $USER_SCRATCH
). This is because the github runner will not have your institutional environment variables set. To fix this you can define this as an internal variable, and set a fallback value for that variable. A good example is in the VSC_UGENT profile.
Testing
If you want to add a new custom config file to nf-core/configs
please test that your pipeline of choice runs as expected by using the -c
parameter.
## Example command for nf-core/rnaseq
nextflow run nf-core/rnaseq --reads '*_R{1,2}.fastq.gz' --genome GRCh37 -c '/path/to/custom.config'
Documentation
You will have to create a Markdown document outlining the details required to use the custom config file within your organisation. You might orientate yourself using the Template that we provide and filling out the information for your cluster there.
See nf-core/configs/docs
for examples.
Currently documentation is available for the following systems:
- ABIMS
- ADCRA
- ALICE
- AWSBATCH
- AWS_TOWER
- AZUREBATCH
- BIGPURPLE
- BI
- BINAC
- BIOHPC_GEN
- CAMBRIDGE
- CBE
- CCGA_DX
- CCGA_MED
- Cedars-Sinai
- CFC
- CHEAHA
- Computerome
- CRICK
- Cancer Research UK Manchester Institute
- CZBIOHUB_AWS
- DENBI_QBIC
- EBC
- EVA
- FGCZ
- GENOTOUL
- GENOUEST
- GIS
- HASTA
- HEBBE
- HKI
- ICR_DAVROS
- IMPERIAL
- JAX
- KU SUND DANGPU
- LUGH
- MAESTRO
- Mana
- MARVIN
- MEDAIR
- MJOLNIR_GLOBE
- MPCDF
- MUNIN
- NU_GENOMICS
- NIHBIOWULF
- OIST
- PASTEUR
- PHOENIX
- PRINCE
- ROSALIND
- SAGE BIONETWORKS
- SANGER
- SBC_SHARC
- SEG_GLOBE
- TIGEM
- UCL_MYRIAD
- UCT_HPC
- UNIBE_IBU
- UPPMAX
- UTD_GANYMEDE
- UTD_SYSBIO
- UZH
- VAI
- VSC_UGENT
Uploading to nf-core/configs
Fork the nf-core/configs
repository to your own GitHub account.
Within the local clone of your fork:
- add the custom config file to the
conf/
directory - add the documentation file to the
docs/
directory - edit and add your custom profile to the
nfcore_custom.config
file in the top-level directory of the clone - edit and add your custom profile to the
README.md
file in the top-level directory of the clone
In order to ensure that the config file is tested automatically with GitHub Actions please add your profile name to the profile:
scope (under strategy matrix) in .github/workflows/main.yml
. If you forget to do this the tests will fail with the error:
Run python ${GITHUB_WORKSPACE}/bin/cchecker.py ${GITHUB_WORKSPACE}/nfcore_custom.config ${GITHUB_WORKSPACE}/.github/workflows/main.yml
Tests don't seem to test these profiles properly. Please check whether you added the profile to the Github Actions testing YAML.
set(['<profile_name>'])
##[error]Process completed with exit code 1.
Commit and push these changes to your local clone on GitHub, and then create a pull request on the nf-core/configs
GitHub repo with the appropriate information.
We will be notified automatically when you have created your pull request, and providing that everything adheres to nf-core guidelines we will endeavour to approve your pull request as soon as possible.
Adding a new pipeline-specific config
Sometimes it may be desirable to have configuration options for an institute that are specific to a single nf-core pipeline. Such options should not be added to the main institutional config, as this will be applied to all pipelines. Instead, we can create a pipeline-specific institutional config file.
The following steps are similar to the instructions for standard institutional config, however using
pipeline
variants of folders e.g.,conf/pipeline/
or underpipeline/
⚠️ Remember to replace the <PIPELINE>
and <PROFILE>
placeholders with the pipeline name and profile name in the following examples
Institutional configs work because the pipeline nextflow.config
file loads the nf-core/configs/nfcore_custom.config
config file, which in turn loads the institutional configuration file based on the profile <PROFILE>
supplied on the command line.
To add in pipeline-specific institutional configs, we add a second includeConfig
call in the pipeline nextflow.config
file, which loads the pipeline/<PIPELINE>.config
file from the nf-core/configs
repo.
This file has <PIPELINE>
specific institution configuration again with different profiles <PROFILE>
.
The pipeline nextflow.config
file should first load the generic institutional configuration file and then the pipeline-specific institutional configuration file.
Each configuration file will add new params and overwrite the params already existing.
Note that pipeline-specific configs are not required and should only be added if needed.
Pipeline-specific institutional documentation
Currently documentation is available for the following pipelines within specific profiles:
- ampliseq
- atacseq
- chipseq
- demultiplex
- eager
- mag
- rnafusion
- rnaseq
- rnavar
- sarek
- taxprofiler
- proteinfold
Pipeline-specific documentation
Currently documentation is available for the following pipeline:
- viralrecon
Enabling pipeline-specific configs within a pipeline
⚠️ This has to be done on a fork of the nf-core/<PIPELINE>
repository.
Fork the nf-core/<PIPELINE>
repository to your own GitHub account.
Within the local clone of your fork, if not already present, add the following to nextflow.config
after the code that loads the generic nf-core/configs config file:
// Load nf-core/<PIPELINE> custom profiles from different Institutions
try {
includeConfig "${params.custom_config_base}/pipeline/<PIPELINE>.config"
} catch (Exception e) {
System.err.println("WARNING: Could not load nf-core/config/<PIPELINE> profiles: ${params.custom_config_base}/pipeline/<PIPELINE>.config")
}
Commit and push these changes to your local clone on GitHub, and then create a pull request on the nf-core/<PIPELINE>
GitHub repo with the appropriate information.
We will be notified automatically when you have created your pull request, and providing that everything adheres to nf-core guidelines we will endeavour to approve your pull request as soon as possible.
Create the pipeline-specific nf-core/configs
files
⚠️ This has to be done on a fork of the nf-core/configs
repository.
Fork the nf-core/configs
repository to your own GitHub account.
And add or edit the following files in the local clone of your fork.
pipeline/<PIPELINE>.config
If not already created, create the pipeline/<PIPELINE>.config
file, and add your custom profile to the profile scope
profiles {
<PROFILE> { includeConfig "${params.custom_config_base}/conf/pipeline/<PIPELINE>/<PROFILE>.config" }
}
conf/pipeline/<PIPELINE>/<PROFILE>.config
Add the custom configuration file to the conf/pipeline/<PIPELINE>/
directory.
Make sure to add an extra params
section with params.config_profile_description
, params.config_profile_contact
to the top of pipeline/<PIPELINE>.config
and set to reasonable values.
Users will get information on who wrote the pipeline-specific configuration profile then when executing the nf-core pipeline and can report back if there are things missing for example.
docs/pipeline/<PIPELINE>/<PROFILE>.md
Add the documentation file to the docs/pipeline/<PIPELINE>/
directory.
You will also need to edit and add your custom profile to the README.md
file in the top-level directory of the clone.
README.md
Edit this file, and add the new pipeline-specific institutional profile to the list in the section Pipeline specific documentation
Commit and push these changes to your local clone on GitHub, and then create a pull request on the nf-core/configs
GitHub repo with the appropriate information.
In the pull-request description, add a link to the repository specific pull-request(s) that use this new code.
Both PRs will need to be merged at the approximately the same time.
Help
If you have any questions or issues please send us a message on Slack.