This week, Jean-Christophe Fillion-Robin presented an overview of the Slicer extensions usage and contribution process during the afternoon breakout session at the 19th NA-MIC project week. The presentation covered the overall process and included an interactive demonstration of the creation of a Python-based Slicer extension using the new ExtensionWizard that he developed with Kitware’s Matt Woehlke. The ExtensionWizard greatly simplifies the Slicer extension creation and distribution process.
Slicer extensions provide easy access to industry-leading algorithms and interfaces that optimize Slicer for specific use cases. A Slicer extension is a “package” that bundles one or more Slicer modules. Extensions can be easily added or removed from a Slicer installation using an “AppStore-like” interface known as the Extensions manager.
Currently, over 50 extensions have been contributed to Slicer. These extensions are available for Linux, MaxOSX, and Windows. Some of the available Slicer extensions include Airway Segmentation, Atlas-based Brain Segmentation, and DTI Fiber Viewer. Slicer’s interface to the Extension manager is shown below.
Screenshot of the Slicer ExtensionsManager (Slicer nightly build r23362)
For Slicer users, new features of the Extensions manager include:
- The ability to handle dependencies
- A searchable list of extensions
- Offline installation, given extension package path
For Slicer extension developers, the new ExtensionWizard includes the following features:
- The ability to create a default or superbuild extension
- The ability to add a cli, loadable, or scripted module
- The ability to add a module to an existing extension
- The ability to edit extension metadata
- The ability to create and load a scripted module without restarting Slicer
- A workflow-based graphical user interface (shown below)
Screenshot of ExtensionWizard UI (Slicer nightly build r23362)
The ExtensionWizard also provides a command line interface that can be used to publish an extension’s source code on Github, using a single command:
./bin/slicerExtensionWizard --publish /path/to/src/MyExtension
Similarly, to publish an extension so that any Slicer installation can use it can be accomplished with a single command:
./bin/slicerExtensionWizard --contribute /path/to/src/MyExtension
After contributing an extension, a pull request notifying the Slicer core developers is created and will allow a final review before integration in the extensions index. For an example, see pull request #706. contributing extension CardiacAgastonMeasures developed by Iowa Univeristy.
Slicer 4.4 release will also include methods for automatically receiving updates to extensions. Future Slicer developments will include the ability to automatically install extensions when new versions of Slicer are installed as well as the ability to automatically create a Wiki page that describes each contributed extension.
For more information on Slicer, please visit http://www.slicer.org/.