Update NCI Gadi config and documentation#1096
Update NCI Gadi config and documentation#1096kisarur wants to merge 11 commits intonf-core:masterfrom
Conversation
| project = "${params.project}" | ||
| storage = "${params.storage}" |
There was a problem hiding this comment.
Process doesn't have any of these directives?
There was a problem hiding this comment.
You can check the documentation here:
https://docs.seqera.io/nextflow/config#process-configuration
https://docs.seqera.io/nextflow/reference/process
There was a problem hiding this comment.
That's certainly... creative.
I'd strongly recommend using clusterOptions instead, both because it allows users to bring their own versions of nextflow and use them with the profile (e.g. if there's a lag in providing updated versions required for running some pipeline). It would also help if linting starts complaining for unknown directives (I don't know anything that currently does this, but it seems useful for catching typos).
There was a problem hiding this comment.
Thanks @pontus.
The version of Nextflow installed on Gadi includes more changes than just the introduction of these new directives (e.g. adding support for job submission and monitoring with the route/exec queue structure available on Gadi). Therefore, users may not be able to bring their own unmodified version of Nextflow and expect it to work on Gadi.
Also, with Gadi's PBS Pro, storage locations must be specified using -l storage resource directive in the PBS script. If we just add -l storage=${params.storage} to clusterOptions, Nextflow will override the resources specified via directives like cpus, memory, etc. A workaround would be to reconstruct the entire -l resource directive within clusterOptions (e.g., -l storage=${params.storage},ncpus=${task.cpus},mem=${task.memory},...), but I feel our current approach is cleaner.
There was a problem hiding this comment.
@kisarur I sort of feel uncomfortable with it (was it not possible to make a plugin rather than patch nextflow?) but it thats what you need then we have to accept that.
However please could you comment very clearly everywhere in the config wherever not standard nextflow is being used.
We would not want other users copying it over into their configs where they are not using your special patched version of nextflow.
There was a problem hiding this comment.
Thanks for the info, I also would feel rather uncomfortable with that setup but as there's no linter complaint I guess it's fine for now. I see Maxime has suggested comments to mark this as special (hopefully meaning people won't try to copy it), it would be great if you implement those.
There was a problem hiding this comment.
I would agree with James that this seems much better suited to a plugin that provides a custom executor than simply monkey-patching nextflow.
It would be possible that custom process directives would still exist then but I think it would be far clearer for users and the plugin + executor would be embedded in the config too which gives additional indication that things are non-standard
|
Could you update conf/pipeline/proteinfold/nci_gadi.config as well please? |
|
@maxulysse The current authors are already working on updating |
| config_profile_contact = 'Georgie Samaha (@georgiesamaha), Kisaru Liyanage (@kisarur), Matthew Downton (@mattdton)' | ||
| config_profile_url = 'https://opus.nci.org.au/display/Help/Gadi+User+Guide' | ||
| project = System.getenv("PROJECT") | ||
| storage = "gdata/${params.project}+scratch/${params.project}" |
There was a problem hiding this comment.
You may want to add this to a validation {ignoreParams: [xyz]} list to stop ugly warnings (see other configs for examples)
| project = "${params.project}" | ||
| storage = "${params.storage}" |
There was a problem hiding this comment.
| project = "${params.project}" | |
| storage = "${params.storage}" | |
| // The version of Nextflow installed on Gadi has been modified | |
| // To allow usage of this non standard directive | |
| project = "${params.project}" | |
| // The version of Nextflow installed on Gadi has been modified | |
| // To allow usage of this non standard directive | |
| storage = "${params.storage}" |
There was a problem hiding this comment.
I made a suggestion to add comments to make this explicit so that people don't try to copy it on other systems
name: Update NCI Gadi config and documentation
about: Update nci_gadi.config to support strict syntax, include other improvements, and refine the documentation.
Please follow these steps before submitting your PR:
[WIP]in its titlemasterbranchSteps for adding a new config profile:
conf/directorydocs/directorynfcore_custom.configfile in the top-level directoryprofile:scope in.github/workflows/main.yml.github/CODEOWNERS(**/<custom-profile>** @<github-username>)