Difference between revisions of "2013 Project Week Breakout Session:Slicer4Python"
Line 12: | Line 12: | ||
We'll go through the steps on a Mac, but the steps are essentially the same on all platforms. We'll be using a locally built version of slicer created using [http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Developers/Build_Instructions these instructions], but the steps can also be performed using a [http://download.slicer.org/ binary download] as long as you have a checkout of the slicer source code available. | We'll go through the steps on a Mac, but the steps are essentially the same on all platforms. We'll be using a locally built version of slicer created using [http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Developers/Build_Instructions these instructions], but the steps can also be performed using a [http://download.slicer.org/ binary download] as long as you have a checkout of the slicer source code available. | ||
− | === Make an | + | === Make an Extension === |
For this example we'll make an extension with a single scripted module as a demonstration. We run the following command from the Slicer source directory. | For this example we'll make an extension with a single scripted module as a demonstration. We run the following command from the Slicer source directory. | ||
Line 18: | Line 18: | ||
We call the extension "VolumeTools" because we will use it to host a demonstration scripted module that scrolls through the volumes available in the current scene. | We call the extension "VolumeTools" because we will use it to host a demonstration scripted module that scrolls through the volumes available in the current scene. | ||
+ | |||
+ | === Make a Scripted Module === | ||
+ | |||
+ | Now we want to put a scripted module inside the extension. We can do this with this command (again from the Slicer source directory) | ||
+ | |||
+ | ./Utilities/Scripts/ModuleWizard.py --template ./Extensions/Testing/ScriptedLoadableExtensionTemplate/ScriptedLoadableModuleTemplate --target ../VolumeTools/VolumeScroller VolumeScroller | ||
+ | |||
+ | Note that we've used the ''Module'' template, which is inside the ''Extension'' template and directed the result to go inside of our new extension. | ||
+ | |||
+ | === Set up the CMakeLists.txt file === | ||
+ | |||
+ | Since the template included a stand-in scripted module, we want to delete it and tell CMake to use our newly created VolumeScroller module instead. We also want to get rid of the dummy module. These commands on unix can do this: | ||
+ | |||
+ | rm -rf ../VolumeTools/ScriptedLoadableModuleTemplate | ||
+ | perl -pi -e 's/ScriptedLoadableModuleTemplate/VolumeScroller/g' ../VolumeTools/CMakeLists.txt | ||
+ | |||
+ | Note that you'll actually want to edit the CMakeLists.txt file by hand, since it contains the metadata about your extension, like the author, category, documentation URL, etc. | ||
== Configuring slicer to use the module== | == Configuring slicer to use the module== |
Revision as of 20:34, 12 June 2013
Home < 2013 Project Week Breakout Session:Slicer4PythonBack to Summer project week Agenda
Contents
Goals
The material here provides a guided walk through of the resources available for python scripting in Slicer 4. It is based on what is available in the nightly builds as of project week (June 17, 2013). One goal is to demonstrate the development of a python scripted slicer module. Another goal is to provide A Guide to Python in Slicer for the Casual Power User which means that this walkthrough of the features of slicer should give you an idea how to make a custom module that helps organize and automate your processing. This can be useful for your own research or you can create helper modules that simplify the work for users who are exploring an algorithm or working with a large set of studies.
Topics
Creating a scripted module from templates with ModuleWizard
This topic is covered in the ModuleWizard documentation. It allows you to create a skeleton extension with any combination of modules you want.
Prerequisites
We'll go through the steps on a Mac, but the steps are essentially the same on all platforms. We'll be using a locally built version of slicer created using these instructions, but the steps can also be performed using a binary download as long as you have a checkout of the slicer source code available.
Make an Extension
For this example we'll make an extension with a single scripted module as a demonstration. We run the following command from the Slicer source directory.
./Utilities/Scripts/ModuleWizard.py --template ./Extensions/Testing/ScriptedLoadableExtensionTemplate --target ../VolumeTools VolumeTools
We call the extension "VolumeTools" because we will use it to host a demonstration scripted module that scrolls through the volumes available in the current scene.
Make a Scripted Module
Now we want to put a scripted module inside the extension. We can do this with this command (again from the Slicer source directory)
./Utilities/Scripts/ModuleWizard.py --template ./Extensions/Testing/ScriptedLoadableExtensionTemplate/ScriptedLoadableModuleTemplate --target ../VolumeTools/VolumeScroller VolumeScroller
Note that we've used the Module template, which is inside the Extension template and directed the result to go inside of our new extension.
Set up the CMakeLists.txt file
Since the template included a stand-in scripted module, we want to delete it and tell CMake to use our newly created VolumeScroller module instead. We also want to get rid of the dummy module. These commands on unix can do this:
rm -rf ../VolumeTools/ScriptedLoadableModuleTemplate perl -pi -e 's/ScriptedLoadableModuleTemplate/VolumeScroller/g' ../VolumeTools/CMakeLists.txt
Note that you'll actually want to edit the CMakeLists.txt file by hand, since it contains the metadata about your extension, like the author, category, documentation URL, etc.