<@U016SFULDB8> / <@U03SLE7RBAS> - I realised after...
# team-maintainers
p
@Simon Pearce / @Jonathan Manning - I realised after the call earlier that I was wrong on a few bits around conda lockfiles + variation of containers from the same module in different pipelines.. ๐Ÿงต
We can't use conda lockfiles as I suggested, because that would change the hash of the Wave-generated image so the Singularity Containers URI would be different. It's a catch-22 with the lockfile - Wave generates them but they can't be used to regenerate exactly the same container.
However, I went back to the discussion (pre-summer holiday ๐Ÿ˜…) and remembered that although we said no to storing the container URIs at module level in a Nextflow config, we said that we would store them at module level in the
meta.yml
file
This means that they can be locked at module level.
nf-core modules install
then simply reads the YAML files and write a Nextflow config file, without needing to run
nextflow inspect
or contact the Wave API or anything. It's all just flat files.
This means that anyone using a given shared nf-core/module will always get exactly the same images.
j
Thanks Phil, sort of good news / bad news then!
๐Ÿ‘๐Ÿป 1
s
Thanks for letting us know I have no feeling on conda lock files specifically, but storing them in the yaml sounds good to me
p
I was more thinking that we would store the yaml files along with the module, not inside the
meta.yml
file - that way they can be used with conda profile declarations in the same way that we will do with docker
eg.
-profile conda
or
-profile conda_arm64
would both
includeConfig
a file full of process specifications pointing to conda lock files. Same setup as the config files for docker / singularity files.
(Side note: means we'll have 6 of these files, 8 if we also support osx/arm64 in the future, so we should probably put them into a subfolder under
config
)
Hi both - don't suppose you have a favourite command / method for generating lock files that will work for us that's handy?
Something that we can add into the Wave Dockerfile to generate the lock file.
'cc also @Mahesh Binzer-Panchal
s
I have never used lock files (or really conda at all)
m
I've not used
conda-lock
before. I only learned about lock files when I started using Pixi
I'm also struggling a little to understand the finer points of the conversation here. What was the original aim?
p
Sorry, tacked you on to a stale thread that came after the maintainers meeting. Not sure that the context is really relevant to my question.
We were talking about having exactly reproducible containers across multiple pipelines, but I had forgotten that we had already solved this issue a different way.
I was also just talking to Paolo about Pixi, as he has a draft PR for using that in Wave instead of micromamba. But I'm a little wary of using Pixi lockfiles, as I don't think that they can be used with vanilla conda.
My thought is that we can use the conda lock files for all conda users, to get precise builds.
m
I was looking over the documentation the other day and it might work with vanilla conda. I didn't have time to explore though.
p
Detached environments is good, that's more analogous to regular conda ๐Ÿ‘๐Ÿป But I'm not sure that it means that
pixi.lock
files can be used by someone running (micro)(mamba|conda)
This thread is quite interesting, sounds like it's being discussed actively
So this is what I'm looking for I think: https://github.com/synapticarbors/pixi2ces though I would prefer it to be part of Pixi itself / more officially adopted.
Ideally Wave could then generate conda lock files and Pixi lock files, and people could use whichever they want.
We may need a
pixi
namespace in Nextflow to be able to use those lockfiles though ๐Ÿค”
m
I have no idea what needs to be done, but I remember a lot of conda stuff still being present in the environments, like settings, but maybe it's been phased out over the last few months
p
This is my main problem with Pixi for wave still - very fluid
m
The upcoming developments looks like things will continue to change for a while: https://pixi.sh/latest/design_proposals/pixi_global_manifest/
๐Ÿ‘๐Ÿป 1
j
Hi all- just wanted to self-correct: I said the other day that we needed conda-lock to get lock files with direct URIs. This is not the case, and we can do it with bare conda, which I'm very happy about.
Copy code
conda list --explicit --export --md5 > environment.lock.yml
๐ŸŽ‰ 4