Package VMTKVesselEnhancement :: Module SlicerVMTKVesselEnhancementVEDGUI
[hide private]
[frames] | no frames]

Source Code for Module VMTKVesselEnhancement.SlicerVMTKVesselEnhancementVEDGUI

  1  from SlicerVMTKAdvancedPageSkeleton import SlicerVMTKAdvancedPageSkeleton 
  2  from Slicer import slicer 
  3   
  4  vtkKWPushButton_InvokedEvent = 10000 
  5  vtkKWSpinBox_ValueChangedEvent = 10000 
  6  vtkKWThumbWheel_ValueChangedEvent = 10001 
  7   
8 -class SlicerVMTKVesselEnhancementVEDGUI(SlicerVMTKAdvancedPageSkeleton):
9
10 - def __init__(self,parentFrame,parentClass):
11 SlicerVMTKAdvancedPageSkeleton.__init__(self,parentFrame,parentClass) 12 13 self._spinboxFrame = slicer.vtkKWFrameWithLabel() 14 15 self._sigmaMin = slicer.vtkKWSpinBoxWithLabel() 16 self._sigmaMax = slicer.vtkKWSpinBoxWithLabel() 17 self._numberOfSigmaSteps = slicer.vtkKWThumbWheel() 18 self._alpha = slicer.vtkKWSpinBoxWithLabel() 19 self._beta = slicer.vtkKWSpinBoxWithLabel() 20 self._gamma = slicer.vtkKWSpinBoxWithLabel() 21 self._c = slicer.vtkKWSpinBoxWithLabel() 22 self._timestep = slicer.vtkKWSpinBoxWithLabel() 23 self._epsilon = slicer.vtkKWSpinBoxWithLabel() 24 self._wstrength = slicer.vtkKWSpinBoxWithLabel() 25 self._sensitivity = slicer.vtkKWSpinBoxWithLabel() 26 self._numberOfIterations = slicer.vtkKWThumbWheel() 27 self._numberOfDiffusionSubIterations = slicer.vtkKWThumbWheel() 28 29 self._startButton = slicer.vtkKWPushButton() 30 self._resetButton = slicer.vtkKWPushButton()
31
32 - def Destructor(self):
34 35
36 - def BuildGUI(self):
37 SlicerVMTKAdvancedPageSkeleton.BuildGUI(self) 38 39 40 self._numberOfSigmaSteps.SetParent(self._parentFrame) 41 self._numberOfSigmaSteps.Create() 42 self._numberOfSigmaSteps.SetRange(0.0,2000.0) 43 self._numberOfSigmaSteps.ClampMinimumValueOn() 44 self._numberOfSigmaSteps.ClampMaximumValueOn() 45 self._numberOfSigmaSteps.ClampResolutionOn() 46 self._numberOfSigmaSteps.SetThumbWheelHeight(10) 47 self._numberOfSigmaSteps.SetResolution(1.0) 48 self._numberOfSigmaSteps.SetLength(150) 49 self._numberOfSigmaSteps.DisplayEntryOn() 50 self._numberOfSigmaSteps.DisplayLabelOn() 51 self._numberOfSigmaSteps.GetLabel().SetText("Number of Sigma Steps") 52 53 54 slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 10" % self._numberOfSigmaSteps.GetWidgetName()) 55 56 self._numberOfIterations.SetParent(self._parentFrame) 57 self._numberOfIterations.Create() 58 self._numberOfIterations.SetRange(0.0,2000.0) 59 self._numberOfIterations.ClampMinimumValueOn() 60 self._numberOfIterations.ClampMaximumValueOn() 61 self._numberOfIterations.ClampResolutionOn() 62 self._numberOfIterations.SetThumbWheelHeight(10) 63 self._numberOfIterations.SetResolution(1.0) 64 self._numberOfIterations.SetLength(150) 65 self._numberOfIterations.DisplayEntryOn() 66 self._numberOfIterations.DisplayLabelOn() 67 self._numberOfIterations.GetLabel().SetText("Number of Iterations") 68 69 70 slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 10" % self._numberOfIterations.GetWidgetName()) 71 72 self._numberOfDiffusionSubIterations.SetParent(self._parentFrame) 73 self._numberOfDiffusionSubIterations.Create() 74 self._numberOfDiffusionSubIterations.SetRange(0.0,2000.0) 75 self._numberOfDiffusionSubIterations.ClampMinimumValueOn() 76 self._numberOfDiffusionSubIterations.ClampMaximumValueOn() 77 self._numberOfDiffusionSubIterations.ClampResolutionOn() 78 self._numberOfDiffusionSubIterations.SetThumbWheelHeight(10) 79 self._numberOfDiffusionSubIterations.SetResolution(1.0) 80 self._numberOfDiffusionSubIterations.SetLength(150) 81 self._numberOfDiffusionSubIterations.DisplayEntryOn() 82 self._numberOfDiffusionSubIterations.DisplayLabelOn() 83 self._numberOfDiffusionSubIterations.GetLabel().SetText("Number of Diffusion Sub Iterations") 84 85 86 slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 10" % self._numberOfDiffusionSubIterations.GetWidgetName()) 87 88 self._spinboxFrame.SetParent(self._parentFrame) 89 self._spinboxFrame.Create() 90 self._spinboxFrame.AllowFrameToCollapseOff() 91 self._spinboxFrame.SetLabelText("Input arguments") 92 self._spinboxFrame.SetReliefToSunken() 93 94 slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 10 -in %s" % (self._spinboxFrame.GetWidgetName(), self._parentFrame.GetWidgetName())) 95 96 self._sigmaMin.SetParent(self._spinboxFrame.GetFrame()) 97 self._sigmaMin.Create() 98 self._sigmaMin.GetWidget().SetRange(0.0,100.0) 99 self._sigmaMin.GetWidget().SetIncrement(0.1) 100 self._sigmaMin.GetWidget().SetWidth(5) 101 self._sigmaMin.GetWidget().SetValueFormat("%.1f") 102 self._sigmaMin.SetLabelText("Sigma Min:") 103 self._sigmaMin.SetBalloonHelpString("") 104 105 slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._sigmaMin.GetWidgetName()) 106 107 self._sigmaMax.SetParent(self._spinboxFrame.GetFrame()) 108 self._sigmaMax.Create() 109 self._sigmaMax.GetWidget().SetRange(0.0,100.0) 110 self._sigmaMax.GetWidget().SetIncrement(0.1) 111 self._sigmaMax.GetWidget().SetWidth(5) 112 self._sigmaMax.GetWidget().SetValueFormat("%.1f") 113 self._sigmaMax.SetLabelText("Sigma Max:") 114 self._sigmaMax.SetBalloonHelpString("") 115 116 slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._sigmaMax.GetWidgetName()) 117 118 self._alpha.SetParent(self._spinboxFrame.GetFrame()) 119 self._alpha.Create() 120 self._alpha.GetWidget().SetRange(0.0,100.0) 121 self._alpha.GetWidget().SetIncrement(0.1) 122 self._alpha.GetWidget().SetWidth(5) 123 self._alpha.GetWidget().SetValueFormat("%.1f") 124 self._alpha.SetLabelText("Alpha:") 125 self._alpha.SetBalloonHelpString("") 126 127 slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._alpha.GetWidgetName()) 128 129 self._beta.SetParent(self._spinboxFrame.GetFrame()) 130 self._beta.Create() 131 self._beta.GetWidget().SetRange(0.0,100.0) 132 self._beta.GetWidget().SetIncrement(0.1) 133 self._beta.GetWidget().SetWidth(5) 134 self._beta.GetWidget().SetValueFormat("%.1f") 135 self._beta.SetLabelText("Beta:") 136 self._beta.SetBalloonHelpString("") 137 138 slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._beta.GetWidgetName()) 139 140 self._gamma.SetParent(self._spinboxFrame.GetFrame()) 141 self._gamma.Create() 142 self._gamma.GetWidget().SetRange(0.0,100.0) 143 self._gamma.GetWidget().SetIncrement(0.1) 144 self._gamma.GetWidget().SetWidth(5) 145 self._gamma.GetWidget().SetValueFormat("%.1f") 146 self._gamma.SetLabelText("Gamma:") 147 self._gamma.SetBalloonHelpString("") 148 149 slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._gamma.GetWidgetName()) 150 151 self._c.SetParent(self._spinboxFrame.GetFrame()) 152 self._c.Create() 153 self._c.GetWidget().SetRange(0.0,100.0) 154 self._c.GetWidget().SetIncrement(0.000001) 155 self._c.GetWidget().SetWidth(10) 156 self._c.GetWidget().SetValueFormat("%.6f") 157 self._c.SetLabelText("C:") 158 self._c.SetBalloonHelpString("") 159 160 slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._c.GetWidgetName()) 161 162 self._timestep.SetParent(self._spinboxFrame.GetFrame()) 163 self._timestep.Create() 164 self._timestep.GetWidget().SetRange(0.0,100.0) 165 self._timestep.GetWidget().SetIncrement(0.01) 166 self._timestep.GetWidget().SetWidth(5) 167 self._timestep.GetWidget().SetValueFormat("%.2f") 168 self._timestep.SetLabelText("Timestep:") 169 self._timestep.SetBalloonHelpString("") 170 171 slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._timestep.GetWidgetName()) 172 173 self._epsilon.SetParent(self._spinboxFrame.GetFrame()) 174 self._epsilon.Create() 175 self._epsilon.GetWidget().SetRange(0.0,100.0) 176 self._epsilon.GetWidget().SetIncrement(0.01) 177 self._epsilon.GetWidget().SetWidth(5) 178 self._epsilon.GetWidget().SetValueFormat("%.2f") 179 self._epsilon.SetLabelText("Epsilon:") 180 self._epsilon.SetBalloonHelpString("") 181 182 slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._epsilon.GetWidgetName()) 183 184 self._wstrength.SetParent(self._spinboxFrame.GetFrame()) 185 self._wstrength.Create() 186 self._wstrength.GetWidget().SetRange(0.0,100.0) 187 self._wstrength.GetWidget().SetIncrement(0.1) 188 self._wstrength.GetWidget().SetWidth(5) 189 self._wstrength.GetWidget().SetValueFormat("%.1f") 190 self._wstrength.SetLabelText("WStrength:") 191 self._wstrength.SetBalloonHelpString("") 192 193 slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._wstrength.GetWidgetName()) 194 195 self._sensitivity.SetParent(self._spinboxFrame.GetFrame()) 196 self._sensitivity.Create() 197 self._sensitivity.GetWidget().SetRange(0.0,100.0) 198 self._sensitivity.GetWidget().SetIncrement(0.1) 199 self._sensitivity.GetWidget().SetWidth(5) 200 self._sensitivity.GetWidget().SetValueFormat("%.1f") 201 self._sensitivity.SetLabelText("Sensitivity:") 202 self._sensitivity.SetBalloonHelpString("") 203 204 slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._sensitivity.GetWidgetName()) 205 206 207 self._startButton.SetParent(self._parentFrame) 208 self._startButton.Create() 209 self._startButton.SetEnabled(1) 210 self._startButton.SetActiveBackgroundColor(0.9,0.9,0.9) 211 self._startButton.SetReliefToRaised() 212 self._startButton.SetBackgroundColor(0.9,0.9,0.9) 213 self._startButton.SetText("Start!") 214 self._startButton.SetWidth(8) 215 self._startButton.SetHeight(2) 216 self._startButton.SetBalloonHelpString("Click to start") 217 218 self._resetButton.SetParent(self._parentFrame) 219 self._resetButton.Create() 220 self._resetButton.SetEnabled(1) 221 self._resetButton.SetActiveBackgroundColor(0.9,0.9,0.9) 222 self._resetButton.SetReliefToRaised() 223 self._resetButton.SetBackgroundColor(0.9,0.9,0.9) 224 self._resetButton.SetText("Cancel") 225 self._resetButton.SetWidth(8) 226 self._resetButton.SetHeight(2) 227 self._resetButton.SetBalloonHelpString("Click to reset") 228 229 230 slicer.TkCall("pack %s -side right -expand n -padx 2 -pady 5 -in %s" % (self._startButton.GetWidgetName(), self._parentFrame.GetWidgetName())) 231 slicer.TkCall("pack %s -side right -expand n -padx 2 -pady 5 -in %s" % (self._resetButton.GetWidgetName(), self._parentFrame.GetWidgetName())) 232 233 234 self.Reset()
235
236 - def AddGUIObservers(self):
237 SlicerVMTKAdvancedPageSkeleton.AddGUIObservers(self) 238 239 self._numberOfSigmaStepsTag = self._parentClass.AddObserverByNumber(self._numberOfSigmaSteps,vtkKWThumbWheel_ValueChangedEvent) 240 self._numberOfIterationsTag = self._parentClass.AddObserverByNumber(self._numberOfIterations,vtkKWThumbWheel_ValueChangedEvent) 241 self._numberOfDiffusionSubIterationsTag = self._parentClass.AddObserverByNumber(self._numberOfDiffusionSubIterations,vtkKWThumbWheel_ValueChangedEvent) 242 self._sigmaMinTag = self._parentClass.AddObserverByNumber(self._sigmaMin.GetWidget(),vtkKWSpinBox_ValueChangedEvent) 243 self._sigmaMaxTag = self._parentClass.AddObserverByNumber(self._sigmaMax.GetWidget(),vtkKWSpinBox_ValueChangedEvent) 244 self._alphaTag = self._parentClass.AddObserverByNumber(self._alpha.GetWidget(),vtkKWSpinBox_ValueChangedEvent) 245 self._betaTag = self._parentClass.AddObserverByNumber(self._beta.GetWidget(),vtkKWSpinBox_ValueChangedEvent) 246 self._gammaTag = self._parentClass.AddObserverByNumber(self._gamma.GetWidget(),vtkKWSpinBox_ValueChangedEvent) 247 self._cTag = self._parentClass.AddObserverByNumber(self._c.GetWidget(),vtkKWSpinBox_ValueChangedEvent) 248 self._timestepTag = self._parentClass.AddObserverByNumber(self._timestep.GetWidget(),vtkKWSpinBox_ValueChangedEvent) 249 self._epsilonTag = self._parentClass.AddObserverByNumber(self._epsilon.GetWidget(),vtkKWSpinBox_ValueChangedEvent) 250 self._wstrengthTag = self._parentClass.AddObserverByNumber(self._wstrength.GetWidget(),vtkKWSpinBox_ValueChangedEvent) 251 self._sensitivityTag = self._parentClass.AddObserverByNumber(self._sensitivity.GetWidget(),vtkKWSpinBox_ValueChangedEvent) 252 253 254 255 self._startButtonTag = self._parentClass.AddObserverByNumber(self._startButton,vtkKWPushButton_InvokedEvent) 256 self._resetButtonTag = self._parentClass.AddObserverByNumber(self._resetButton,vtkKWPushButton_InvokedEvent)
257 258
259 - def RemoveGUIObservers(self):
261
262 - def ProcessGUIEvents(self,caller,event):
263 SlicerVMTKAdvancedPageSkeleton.ProcessGUIEvents(self,caller,event) 264 265 if caller == self._numberOfSigmaSteps and event == vtkKWThumbWheel_ValueChangedEvent: 266 self._parentClass.UpdateMRML() 267 elif caller == self._numberOfIterations and event == vtkKWThumbWheel_ValueChangedEvent: 268 self._parentClass.UpdateMRML() 269 elif caller == self._numberOfDiffusionSubIterations and event == vtkKWThumbWheel_ValueChangedEvent: 270 self._parentClass.UpdateMRML() 271 elif caller == self._sigmaMin.GetWidget() and event == vtkKWSpinBox_ValueChangedEvent: 272 self._parentClass.UpdateMRML() 273 elif caller == self._sigmaMax.GetWidget() and event == vtkKWSpinBox_ValueChangedEvent: 274 self._parentClass.UpdateMRML() 275 elif caller == self._alpha.GetWidget() and event == vtkKWSpinBox_ValueChangedEvent: 276 self._parentClass.UpdateMRML() 277 elif caller == self._beta.GetWidget() and event == vtkKWSpinBox_ValueChangedEvent: 278 self._parentClass.UpdateMRML() 279 elif caller == self._gamma.GetWidget() and event == vtkKWSpinBox_ValueChangedEvent: 280 self._parentClass.UpdateMRML() 281 elif caller == self._c.GetWidget() and event == vtkKWSpinBox_ValueChangedEvent: 282 self._parentClass.UpdateMRML() 283 elif caller == self._timestep.GetWidget() and event == vtkKWSpinBox_ValueChangedEvent: 284 self._parentClass.UpdateMRML() 285 elif caller == self._epsilon.GetWidget() and event == vtkKWSpinBox_ValueChangedEvent: 286 self._parentClass.UpdateMRML() 287 elif caller == self._wstrength.GetWidget() and event == vtkKWSpinBox_ValueChangedEvent: 288 self._parentClass.UpdateMRML() 289 elif caller == self._sensitivity.GetWidget() and event == vtkKWSpinBox_ValueChangedEvent: 290 self._parentClass.UpdateMRML() 291 292 elif caller == self._startButton and event == vtkKWPushButton_InvokedEvent: 293 self.Execute() 294 self._parentClass.UpdateMRML() 295 elif caller == self._resetButton and event == vtkKWPushButton_InvokedEvent: 296 self.Reset() 297 self._parentClass.UpdateMRML()
298 299
300 - def UpdateMRML(self):
301 SlicerVMTKAdvancedPageSkeleton.UpdateMRML(self) 302 303 node = self._parentClass.GetScriptedModuleNode() 304 305 if node: 306 307 node.SetParameter('VED_numberOfSigmaSteps',self._numberOfSigmaSteps.GetValue()) 308 node.SetParameter('VED_numberOfIterations',self._numberOfIterations.GetValue()) 309 node.SetParameter('VED_numberOfDiffusionSubIterations',self._numberOfDiffusionSubIterations.GetValue()) 310 node.SetParameter('VED_sigmaMin',self._sigmaMin.GetWidget().GetValue()) 311 node.SetParameter('VED_sigmaMax',self._sigmaMax.GetWidget().GetValue()) 312 node.SetParameter('VED_alpha',self._alpha.GetWidget().GetValue()) 313 node.SetParameter('VED_beta',self._beta.GetWidget().GetValue()) 314 node.SetParameter('VED_gamma',self._gamma.GetWidget().GetValue()) 315 node.SetParameter('VED_c',self._c.GetWidget().GetValue()) 316 node.SetParameter('VED_timestep',self._timestep.GetWidget().GetValue()) 317 node.SetParameter('VED_epsilon',self._epsilon.GetWidget().GetValue()) 318 node.SetParameter('VED_wstrength',self._wstrength.GetWidget().GetValue()) 319 node.SetParameter('VED_sensitivity',self._sensitivity.GetWidget().GetValue())
320 321
322 - def UpdateGUI(self):
323 SlicerVMTKAdvancedPageSkeleton.UpdateGUI(self) 324 325 326 node = self._parentClass.GetScriptedModuleNode() 327 328 if node: 329 330 if node.GetParameter('VED_numberOfSigmaSteps'): 331 self._numberOfSigmaSteps.SetValue(node.GetParameter('VED_numberOfSigmaSteps')) 332 333 if node.GetParameter('VED_numberOfIterations'): 334 self._numberOfIterations.SetValue(node.GetParameter('VED_numberOfIterations')) 335 336 if node.GetParameter('VED_numberOfDiffusionSubIterations'): 337 self._numberOfDiffusionSubIterations.SetValue(node.GetParameter('VED_numberOfDiffusionSubIterations')) 338 339 if node.GetParameter('VED_sigmaMin'): 340 self._sigmaMin.GetWidget().SetValue(node.GetParameter('VED_sigmaMin')) 341 342 if node.GetParameter('VED_sigmaMax'): 343 self._sigmaMax.GetWidget().SetValue(node.GetParameter('VED_sigmaMax')) 344 345 if node.GetParameter('VED_alpha'): 346 self._alpha.GetWidget().SetValue(node.GetParameter('VED_alpha')) 347 348 if node.GetParameter('VED_beta'): 349 self._beta.GetWidget().SetValue(node.GetParameter('VED_beta')) 350 351 if node.GetParameter('VED_gamma'): 352 self._gamma.GetWidget().SetValue(node.GetParameter('VED_gamma')) 353 354 if node.GetParameter('VED_c'): 355 self._c.GetWidget().SetValue(node.GetParameter('VED_c')) 356 357 if node.GetParameter('VED_timestep'): 358 self._timestep.GetWidget().SetValue(node.GetParameter('VED_timestep')) 359 360 if node.GetParameter('VED_epsilon'): 361 self._epsilon.GetWidget().SetValue(node.GetParameter('VED_epsilon')) 362 363 if node.GetParameter('VED_wstrength'): 364 self._wstrength.GetWidget().SetValue(node.GetParameter('VED_wstrength')) 365 366 if node.GetParameter('VED_sensitivity'): 367 self._sensitivity.GetWidget().SetValue(node.GetParameter('VED_sensitivity'))
368
369 - def Execute(self):
370 SlicerVMTKAdvancedPageSkeleton.Execute(self) 371 372 373 inVolume = self._parentClass._inVolumeSelector.GetSelected() 374 outVolume = self._parentClass._outVolumeSelector.GetSelected() 375 sigmaMin = float(self._sigmaMin.GetWidget().GetValue()) 376 sigmaMax = float(self._sigmaMax.GetWidget().GetValue()) 377 numberOfSigmaSteps = int(self._numberOfSigmaSteps.GetValue()) 378 numberOfIterations = int(self._numberOfIterations.GetValue()) 379 numberOfDiffusionSubIterations = int(self._numberOfDiffusionSubIterations.GetValue()) 380 alpha = float(self._alpha.GetWidget().GetValue()) 381 beta = float(self._beta.GetWidget().GetValue()) 382 gamma = float(self._gamma.GetWidget().GetValue()) 383 c = float(self._c.GetWidget().GetValue()) 384 timestep = float(self._timestep.GetWidget().GetValue()) 385 epsilon = float(self._epsilon.GetWidget().GetValue()) 386 wstrength = float(self._wstrength.GetWidget().GetValue()) 387 sensitivity = float(self._sensitivity.GetWidget().GetValue()) 388 389 390 self._parentClass._logic.ApplyVED(inVolume,outVolume,sigmaMin,sigmaMax,numberOfSigmaSteps,alpha,beta,gamma,c,timestep,epsilon,wstrength,sensitivity,numberOfIterations,numberOfDiffusionSubIterations)
391 392
393 - def Reset(self):
394 SlicerVMTKAdvancedPageSkeleton.Reset(self) 395 396 397 self._numberOfSigmaSteps.SetValue(10) 398 self._numberOfIterations.SetValue(0) 399 self._numberOfDiffusionSubIterations.SetValue(0) 400 self._sigmaMin.GetWidget().SetValue(0.2) 401 self._sigmaMax.GetWidget().SetValue(2.0) 402 self._alpha.GetWidget().SetValue(0.5) 403 self._beta.GetWidget().SetValue(0.5) 404 self._gamma.GetWidget().SetValue(5.0) 405 self._c.GetWidget().SetValue(1E-6) 406 self._timestep.GetWidget().SetValue(1E-2) 407 self._epsilon.GetWidget().SetValue(1E-2) 408 self._wstrength.GetWidget().SetValue(25.0) 409 self._sensitivity.GetWidget().SetValue(5.0)
410