nipype / pydra

Pydra Dataflow Engine
https://nipype.github.io/pydra/
Other
119 stars 57 forks source link

EnvironmentManager class for Workflows to extend Environment class functionality #701

Open tclose opened 9 months ago

tclose commented 9 months ago

What would you like changed/added and why?

Extending on the concepts introduced by #516, I would like to add similar concept for workflows, which selects appropriate environments for each of the nodes in the workflow instead of running the whole workflow in single environment. Essentially, the environment manager provides a mapping from tool interfaces used in the workflow to appropriate images/environment modules to use in the corresponding nodes.

We could provide a basic DockerHub-based environment manager for neuroimaging tools, which uses all available official Docker images available on DockerHub. But if someone is running on HPC with access to a range of singularity/apptainer containers, they could design their own manager to use them instead.

Another example is the analysis environment, NeuroDesk provides a range of apptainer images for different neuroimaging tools, e.g. FSL, MRtrix, Freesurfer, etc..., loaded/unloaded using environment modules. In this case, I would like to be able to define a NeuroDesk environment manager somewhere, which could be imported to enable any workflow be run using the appropriate software versions.

What would be the benefit?