1 from SlicerVMTKAdvancedPageSkeleton import SlicerVMTKAdvancedPageSkeleton
2 from Slicer import slicer
3
4 vtkKWPushButton_InvokedEvent = 10000
5 vtkKWSpinBox_ValueChangedEvent = 10000
6 vtkKWThumbWheel_ValueChangedEvent = 10001
7
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
34
35
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
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
261
298
299
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
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
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
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