From 8ba0988be92e87dde50f661d75981f0d99ef2973 Mon Sep 17 00:00:00 2001 From: HarryHeres Date: Fri, 1 Sep 2023 00:08:43 +0200 Subject: [PATCH] Initial commit --- CMakeLists.txt | 27 ++ SlicerBoneMorphing.png | Bin 0 -> 17838 bytes SlicerBoneMorphing/CMakeLists.txt | 31 ++ .../Resources/Icons/SlicerBoneMorhping.png | Bin 0 -> 21024 bytes .../Resources/UI/SlicerBoneMorphing.ui | 280 ++++++++++++++++++ SlicerBoneMorphing/SlicerBoneMorphing.py | 21 ++ SlicerBoneMorphing/Testing/CMakeLists.txt | 1 + .../Testing/Python/CMakeLists.txt | 2 + SlicerBoneMorphing/src/CMakeLists.txt | 2 + .../src/logic/SlicerBoneMorphingLogic.py | 12 + SlicerBoneMorphing/src/main.py | 2 + .../src/widget/SlicerBoneMorphingWidget.py | 14 + 12 files changed, 392 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 SlicerBoneMorphing.png create mode 100644 SlicerBoneMorphing/CMakeLists.txt create mode 100644 SlicerBoneMorphing/Resources/Icons/SlicerBoneMorhping.png create mode 100644 SlicerBoneMorphing/Resources/UI/SlicerBoneMorphing.ui create mode 100644 SlicerBoneMorphing/SlicerBoneMorphing.py create mode 100644 SlicerBoneMorphing/Testing/CMakeLists.txt create mode 100644 SlicerBoneMorphing/Testing/Python/CMakeLists.txt create mode 100644 SlicerBoneMorphing/src/CMakeLists.txt create mode 100644 SlicerBoneMorphing/src/logic/SlicerBoneMorphingLogic.py create mode 100644 SlicerBoneMorphing/src/main.py create mode 100644 SlicerBoneMorphing/src/widget/SlicerBoneMorphingWidget.py diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..923763d --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,27 @@ +cmake_minimum_required(VERSION 3.16.3...3.19.7 FATAL_ERROR) + +project(SlicerBoneMorphing) + +#----------------------------------------------------------------------------- +# Extension meta-information +set(EXTENSION_HOMEPAGE "https://www.slicer.org/wiki/Documentation/Nightly/Extensions/SlicerBoneMorphing") +set(EXTENSION_CATEGORY "Examples") +set(EXTENSION_CONTRIBUTORS "Jan Heres (West Bohemian University)") +set(EXTENSION_DESCRIPTION "This extensions allows the user to generate and morph bone meshes based on its CT scans") +set(EXTENSION_ICONURL "https://www.example.com/Slicer/Extensions/SlicerBoneMorphing.png") +set(EXTENSION_SCREENSHOTURLS "https://www.example.com/Slicer/Extensions/SlicerBoneMorphing/Screenshots/1.png") +set(EXTENSION_DEPENDS "NA") # Specified as a list or "NA" if no dependencies + +#----------------------------------------------------------------------------- +# Extension dependencies +find_package(Slicer REQUIRED) +include(${Slicer_USE_FILE}) + +#----------------------------------------------------------------------------- +# Extension modules +add_subdirectory(SlicerBoneMorphing) +## NEXT_MODULE + +#----------------------------------------------------------------------------- +include(${Slicer_EXTENSION_GENERATE_CONFIG}) +include(${Slicer_EXTENSION_CPACK}) diff --git a/SlicerBoneMorphing.png b/SlicerBoneMorphing.png new file mode 100644 index 0000000000000000000000000000000000000000..6aae6ab703e9fb715c775e67ab172a1c21db80cd GIT binary patch literal 17838 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 RXdnOp002ovPDHLkV1gHt7s>zt literal 0 HcmV?d00001 diff --git a/SlicerBoneMorphing/CMakeLists.txt b/SlicerBoneMorphing/CMakeLists.txt new file mode 100644 index 0000000..61c8164 --- /dev/null +++ b/SlicerBoneMorphing/CMakeLists.txt @@ -0,0 +1,31 @@ +#----------------------------------------------------------------------------- +set(MODULE_NAME SlicerBoneMorphing) + +#----------------------------------------------------------------------------- +set(MODULE_PYTHON_SCRIPTS + ${MODULE_NAME}.py + ) + +set(MODULE_PYTHON_RESOURCES + Resources/Icons/${MODULE_NAME}.png + Resources/UI/${MODULE_NAME}.ui + ) + +#----------------------------------------------------------------------------- +slicerMacroBuildScriptedModule( + NAME ${MODULE_NAME} + SCRIPTS ${MODULE_PYTHON_SCRIPTS} + RESOURCES ${MODULE_PYTHON_RESOURCES} + WITH_GENERIC_TESTS + ) + +#----------------------------------------------------------------------------- +if(BUILD_TESTING) + + # Register the unittest subclass in the main script as a ctest. + # Note that the test will also be available at runtime. + slicer_add_python_unittest(SCRIPT ${MODULE_NAME}.py) + + # Additional build-time testing + add_subdirectory(Testing) +endif() diff --git a/SlicerBoneMorphing/Resources/Icons/SlicerBoneMorhping.png b/SlicerBoneMorphing/Resources/Icons/SlicerBoneMorhping.png new file mode 100644 index 0000000000000000000000000000000000000000..5d83ab4f05067d6d5e30808fe07df6b4ac035349 GIT binary patch literal 21024 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

gM5Oyb7$7#KJA2&j@3Tx-)UlJ%O+Q7&{q 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 f>+Cwaj(z + + UI + + + + 0 + 0 + 279 + 286 + + + + + + + Inputs + + + + + + Input volume: + + + + + + + Pick the input to the algorithm. + + + + vtkMRMLScalarVolumeNode + + + + false + + + false + + + false + + + + + + + Image threshold: + + + + + + + Set threshold value for computing the output image. Voxels that have intensities lower than this value will set to zero. + + + 0.100000000000000 + + + -100.000000000000000 + + + 500.000000000000000 + + + 0.500000000000000 + + + + + + + + + + Outputs + + + + + + Thresholded volume: + + + + + + + Pick the output to the algorithm. + + + + vtkMRMLScalarVolumeNode + + + + false + + + true + + + true + + + true + + + + + + + Inverted volume: + + + + + + + Result with inverted threshold will be written into this volume + + + + vtkMRMLScalarVolumeNode + + + + false + + + true + + + true + + + true + + + + + + + + + + Advanced + + + true + + + + + + Invert threshold: + + + + + + + If checked, values above threshold are set to 0. If unchecked, values below are set to 0. + + + + + + + + + + + + + false + + + Run the algorithm. + + + Apply + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + ctkCollapsibleButton + QWidget +

ctkCollapsibleButton.h
+ 1 + + + ctkSliderWidget + QWidget +
ctkSliderWidget.h
+
+ + qMRMLNodeComboBox + QWidget +
qMRMLNodeComboBox.h
+
+ + qMRMLWidget + QWidget +
qMRMLWidget.h
+ 1 +
+ + + + + UI + mrmlSceneChanged(vtkMRMLScene*) + inputSelector + setMRMLScene(vtkMRMLScene*) + + + 122 + 132 + + + 248 + 61 + + + + + UI + mrmlSceneChanged(vtkMRMLScene*) + outputSelector + setMRMLScene(vtkMRMLScene*) + + + 82 + 135 + + + 220 + 161 + + + + + UI + mrmlSceneChanged(vtkMRMLScene*) + invertedOutputSelector + setMRMLScene(vtkMRMLScene*) + + + 161 + 8 + + + 173 + 176 + + + + + diff --git a/SlicerBoneMorphing/SlicerBoneMorphing.py b/SlicerBoneMorphing/SlicerBoneMorphing.py new file mode 100644 index 0000000..9b0cc67 --- /dev/null +++ b/SlicerBoneMorphing/SlicerBoneMorphing.py @@ -0,0 +1,21 @@ +from slicer.ScriptedLoadableModule import ScriptedLoadableModule + +from src.main import * + +class SlicerBoneMorphing(ScriptedLoadableModule): + """Uses ScriptedLoadableModule base class, available at: + https://github.com/Slicer/Slicer/blob/master/Base/Python/slicer/ScriptedLoadableModule.py + """ + + def __init__(self, parent): + ScriptedLoadableModule.__init__(self, parent) + self.parent.title = "Slicer Bone Mesh Module" + self.parent.categories = ["Examples"] + self.parent.dependencies = [] + self.parent.contributors = ["Jan Heres"] + self.parent.helpText = """ + This is a testing module help text. + """ + self.parent.acknowledgementText = """ + Credits: Jan Heres + """ diff --git a/SlicerBoneMorphing/Testing/CMakeLists.txt b/SlicerBoneMorphing/Testing/CMakeLists.txt new file mode 100644 index 0000000..655007a --- /dev/null +++ b/SlicerBoneMorphing/Testing/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(Python) diff --git a/SlicerBoneMorphing/Testing/Python/CMakeLists.txt b/SlicerBoneMorphing/Testing/Python/CMakeLists.txt new file mode 100644 index 0000000..5658d8b --- /dev/null +++ b/SlicerBoneMorphing/Testing/Python/CMakeLists.txt @@ -0,0 +1,2 @@ + +#slicer_add_python_unittest(SCRIPT ${MODULE_NAME}ModuleTest.py) diff --git a/SlicerBoneMorphing/src/CMakeLists.txt b/SlicerBoneMorphing/src/CMakeLists.txt new file mode 100644 index 0000000..1fc302d --- /dev/null +++ b/SlicerBoneMorphing/src/CMakeLists.txt @@ -0,0 +1,2 @@ +add_subdirectory(logic) +add_subdirectory(widget) diff --git a/SlicerBoneMorphing/src/logic/SlicerBoneMorphingLogic.py b/SlicerBoneMorphing/src/logic/SlicerBoneMorphingLogic.py new file mode 100644 index 0000000..f05d2d9 --- /dev/null +++ b/SlicerBoneMorphing/src/logic/SlicerBoneMorphingLogic.py @@ -0,0 +1,12 @@ +from slicer.ScriptedLoadableModule import ScriptedLoadableModuleLogic + + +class SlicerBoneMorphingLogic(ScriptedLoadableModuleLogic): + """This class should implement all the actual + computation done by your module. The interface + should be such that other python code can import + this class and make use of the functionality without + requiring an instance of the Widget. + Uses ScriptedLoadableModuleLogic base class, available at: + https://github.com/Slicer/Slicer/blob/master/Base/Python/slicer/ScriptedLoadableModule.py + """ diff --git a/SlicerBoneMorphing/src/main.py b/SlicerBoneMorphing/src/main.py new file mode 100644 index 0000000..dcf7433 --- /dev/null +++ b/SlicerBoneMorphing/src/main.py @@ -0,0 +1,2 @@ +from .widget.SlicerBoneMorphingWidget import SlicerBoneMorphingWidget +from .logic.SlicerBoneMorphingLogic import SlicerBoneMorphingLogic diff --git a/SlicerBoneMorphing/src/widget/SlicerBoneMorphingWidget.py b/SlicerBoneMorphing/src/widget/SlicerBoneMorphingWidget.py new file mode 100644 index 0000000..a0d41ca --- /dev/null +++ b/SlicerBoneMorphing/src/widget/SlicerBoneMorphingWidget.py @@ -0,0 +1,14 @@ +from slicer.ScriptedLoadableModule import ScriptedLoadableModuleWidget +from __main__ import ctk + +class SlicerBoneMorphingWidget(ScriptedLoadableModuleWidget): + """Uses ScriptedLoadableModuleWidget base class, available at: + https://github.com/Slicer/Slicer/blob/master/Base/Python/slicer/ScriptedLoadableModule.py + """ + + def setup(self): + ScriptedLoadableModuleWidget.setup(self) + + parametersCollapsibleButton = ctk.ctkCollapsibleButton() + parametersCollapsibleButton.text = "Parameters" + self.layout.addWidget(parametersCollapsibleButton)