3DSlicer15:Scripted Module
生活随笔
收集整理的這篇文章主要介紹了
3DSlicer15:Scripted Module
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.循序漸進的腳本模塊
腳本模塊是采用Python編寫的。1.1 使用ModuleWizard的模板創建Scripted Module
參考: https://na-mic.org/wiki/2013_Project_Week_Breakout_Session:Slicer4Python https://www.slicer.org/wiki/Documentation/Nightly/Developers/ModuleWizard聲明: 在Slicer4.4以及之后的版本,ModuleWizard被棄用了,官方建議使用ExtensionWizard。
- 前提條件
- 制作一個拓展
- 制作一個腳本模塊
- 設置CMakeLists.txt文件
- 使用這個模塊配置Slicer
利用模板創建的初始化模塊 接下來,我們就可以開啟腳本模塊的編程之路。
1.2 理解腳本模塊的結構
再編程之前,花一點時間瀏覽模板還是值得的。模板代碼就300多行,其中大多數是引用,所以實際應用過程中只需要進行小小的改動就好了。其他部分需要徹底的更改,因為我們要實現從模板到實際功能的轉變。 模板中類定義如下: 注意:使用ModuleWizard/ExtensionWizard之后,字符串“ScriptedLoadableModuleTemplate”會替換成“VolumeScroller”。- https://github.com/Slicer/Slicer/blob/master/Extensions/Testing/ScriptedLoadableExtensionTemplate/ScriptedLoadableModuleTemplate/ScriptedLoadableModuleTemplate.py#L9-34?ScriptedLoadableModuleTemplate是我們定制模塊元數據的地方。注意:我們的測試代碼在這里初始化。傳遞parent給構造函數,而parent是SlicerScriptedLoadableModule的實例。
- ScriptedLoadableModuleTemplateWidget定義了模型的GUI。通過傳遞qSlicerScriptedLoadableModuleWidget的實例給構造函數(C++的鉤子)
- ScriptedLoadableModuleTemplateLogic就是一個輔助類,定義算法的應用和我們需要的其他輔助函數。按照慣例,這個類不應該引用任何GUI元素。
- ScriptedLoadableModuleTemplateTest?is a subclass ofa standard python unittest TestCase. Note that this class responds specially to methods whose names start with the string "test", so follow the pattern of the template when adding test functionality.
1.3 基本的開發周期
- 通過Python控制臺訪問模塊
- 編輯/重新加載代碼
- 執行重新加載
- 調用我們定義的測試代碼
1.4 完善的功能
此時,寫代碼實現我們想要的功能是一個簡單的事。我們不需要一行一行地瀏覽代碼,只需要在每一步更換block-by-block來測試功能。- 改善GUI
- 改善Logic
2.Python腳本模塊設計:超越基礎
包括Widget的應用、Logic、MRML 類,使用MRML節點存儲模型參數3.Module Factory
加載模塊分成許多步驟:- module factories 必須注冊到 factorymanager中
- 下載模塊后的目錄必須傳遞給factory manager
- 將模塊與場景和應用連接
4.MRML節點與模塊之間的聯系
模塊可以與MRML節點進行關聯,例如,這種關聯關系允許模塊編輯確定的MRML節點。模塊既可以通過重寫?qSlicerAbstractCoreModule::associatedNodeTypes()方法指定節點類型列表,也可以通過調用qSlicerCoreApplication::addModuleAssociatedNodeTypes()關聯任何模塊的任何節點。 多個模塊可以與同一個MRML節點類型相關聯。總結
以上是生活随笔為你收集整理的3DSlicer15:Scripted Module的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Internet Explorer 6
- 下一篇: § Transitive Intran