-
Notifications
You must be signed in to change notification settings - Fork 310
Description
Draft Status
Ready - team will start page creating immediately
Category
Infrastructure
Key Investigators
- Ebrahim Ebrahim (Kitware, US)
Project Description
Many Slicer extension developers these days have to deal with the problem of external python dependencies: how to specify them, how and when to install them, and how to validate that the required things are installed. Everyone addresses the problem in a different way, with a lot of re-inventing the wheel and also a lot of great ideas out there. I'd like to collect all the best practices and turn them into a framework that is build into core slicer for extension developers to more easily grab and use. Something like "stick your dependencies in here and the use slicer.util.check_python_dependences and slicer.util.install_python_dependencies. If that turns out to be a bad idea for whatever reason, at least I can collect all the best practices and put them into the extension development documentation.
A backup project, in case that one doesn't pan out or gets wrapped up too quickly: I've been working on a python library, currently (badly) named abcdmicro, for diffusion MRI population analysis. Its goal is to make it easy to have the tools you need for processing population brain diffusion MRI in one convenient-to-set-up python package, with normally disparate processing steps getting linked together nicely. Slicer isn't where one would typically do large population analysis, but it is an excellent for visualizing examples while putting together a pipeline, and it's excellent for interacting with results. For this reason, I'd like to look into bridging abcdmicro with Slicer. This is somewhat related to the above, because it would be yet another example of an extension that has external python dependencies.
Objective
- Encode into Slicer some way to make it more convenient for extension developers to handle external python dependencies.
For the secondary project:
- Make it easy for someone who is building a dmri processing pipeline with abcdmicro to try out the steps of their pipeline in Slicer.
Approach and Plan
- Gather best practices on external python dependency handling in Slicer extensions, and then distill them into an optimized approach.
- Encode that approach in Slicer somehow, either as utility functions, updates to extension templates, or simply documentation.
For the secondary project:
- Create vtk-mrml-based versions of some of the
Resourcesin abcdmicro and conversion utilities that allow them to be created and used.
Progress and Next Steps
No response
Illustrations
No response
Background and References
- The SlicerOpenLIFU extension is where I have most recently applied what I know about handling python dependencies. But it could be so much better.
- abcdmicro is the library we have currently been working on for which I'd like to experiment with bridging with Slicer.