-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use Seqera containers in pipeline #36
base: dev
Are you sure you want to change the base?
Changes from all commits
787a382
e992f13
1bb1679
b877955
2e18ac5
a77e665
362f4b0
edeffd9
9e58e0f
82f8b87
ada8317
31560c5
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -67,11 +67,12 @@ profiles { | |||||
cleanup = false | ||||||
nextflow.enable.configProcessNamesValidation = true | ||||||
} | ||||||
wave { | ||||||
wave.enabled = true | ||||||
wave.strategy = ['conda', 'container', 'dockerfile', 'spack'] | ||||||
wave.build.repository = 'quay.io/seqeralabs/nf-aggregate' | ||||||
wave.freeze = true | ||||||
seqera_containers { | ||||||
apptainer.ociAutoPull = true | ||||||
singularity.ociAutoPull = true | ||||||
Comment on lines
+71
to
+72
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Not needed. Those forces the use of Docker image what's converted by Singularity |
||||||
wave.enabled = true | ||||||
wave.freeze = true | ||||||
wave.strategy = 'conda' | ||||||
Comment on lines
+71
to
+75
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If we are using Wave behind the scenes to get the container URI, do I need to move these out of a profile and into the top-level config so they are always on? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's keep into a separate profile |
||||||
} | ||||||
conda { | ||||||
conda.enabled = true | ||||||
|
@@ -157,14 +158,6 @@ profiles { | |||||
} | ||||||
} | ||||||
|
||||||
// Set default registry for Apptainer, Docker, Podman and Singularity independent of -profile | ||||||
// Will not be used unless Apptainer / Docker / Podman / Singularity are enabled | ||||||
// Set to your registry if you have a mirror of containers | ||||||
apptainer.registry = 'quay.io' | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We could set these to There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
What does the
or this:
or none of these based on @pditommaso comment? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You don't need to use There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The reason for including this is so people can quickly repoint to their own registry if they are using @drpatelh you should do either 1 of two things here:
The docker.registry is added as a prefix if it does not exist in the URI of the container already (i.e. it's idempotent). What you have done here is fine but redundant and the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. p.s. not certain about |
||||||
docker.registry = 'quay.io' | ||||||
podman.registry = 'quay.io' | ||||||
singularity.registry = 'quay.io' | ||||||
|
||||||
// Nextflow plugins | ||||||
plugins { | ||||||
id 'nf-validation' // Validation of pipeline parameters and creation of an input channel from a sample sheet | ||||||
|
@@ -212,7 +205,7 @@ manifest { | |||||
homePage = 'https://github.com/seqeralabs/nf-aggregate' | ||||||
description = """Pipeline to aggregate pertinent metrics across pipeline runs on the Seqera Platform.""" | ||||||
mainScript = 'main.nf' | ||||||
nextflowVersion = '!>=23.10.0' | ||||||
nextflowVersion = '!>=24.04.0' | ||||||
defaultBranch = 'main' | ||||||
version = '0.2.0' | ||||||
doi = '' | ||||||
|
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
NOOOOOOOOOO
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We made this to have containers made via the Conda packages declaration. Why bumping the community container image?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Have we figured out how to run these pipelines in offline environments? Is this going to be inherently taken care of by
nf-core download
and not handled by NF/Wave anymore @ewels ?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No - if we want to run offline then we cannot use Wave.
The only way that I can see around this is to have the Nextflow Wave plugin create the conda + dockerfile locally and from that figure out what the image name should be. Then this could be checked against the local docker / singularity cache without doing any calls to the internet. But I've spoken to @pditommaso about this already and I think that it was difficult / impossible.
So until we figure that out, I can't see any way to use Wave directly in nf-core pipelines, as it will break all offline usage. So the hardcoded docker + singularity URIs have to stay.
We can of course use Wave to build those images and so my hope is that the developer can specify just the conda requirements and then the automation will pin the image names into a config without human intervention.
If anyone has any better ideas, shout!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We are near to have
nextflow inspect
to report the HTTP uri of the Singularity image files. Would not that allow handling them in the same manner as it's done for Biocontainers right now?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it possible to use the hash and check for existing containers before hitting Wave? This doesn't help with offline usage, but does bypass Wave when it isn't needed. Furthermore, it could check for existing Singularity containers for some offline use right now. I'm assuming the hash in the filename is complete enough to do this check which seems like quite a large assumption.
I assume this is the end goal but don't see how we'd get there and still include offline support?
Currently the workflow for nf-core would be essentially:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wave generates the hash, so no
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, we'll have to stick with
process.container
for now.