예제 #1
0
    def Execute(self):

        if self.Image == None:
            self.PrintError("Error: no Image.")

        if not self.vmtkRenderer:
            self.vmtkRenderer = vmtkrenderer.vmtkRenderer()
            self.vmtkRenderer.Initialize()
            self.OwnRenderer = 1

        self.vmtkRenderer.RegisterScript(self)

        if self.Type == "freehand":
            self.ImageTracerWidget = vtk.vtkImageTracerWidget()
        elif self.Type == "contour":
            self.ImageTracerWidget = vtk.vtkContourWidget()
        self.ImageTracerWidget.SetInteractor(self.vmtkRenderer.RenderWindowInteractor)

        self.SliderWidget = vtk.vtkSliderWidget()
        self.SliderWidget.SetInteractor(self.vmtkRenderer.RenderWindowInteractor)

        self.ImageActor = vtk.vtkImageActor()

        self.vmtkRenderer.AddKeyBinding("n", "Next.", self.NextCallback)
        self.vmtkRenderer.AddKeyBinding("p", "Previous.", self.PreviousCallback)
        self.vmtkRenderer.AddKeyBinding("i", "Interact.", self.InteractCallback)

        self.Display()

        if self.OwnRenderer:
            self.vmtkRenderer.Deallocate()
예제 #2
0
    def Execute(self):

        if self.Image == None:
            self.PrintError('Error: no Image.')

        if not self.vmtkRenderer:
            self.vmtkRenderer = vmtkrenderer.vmtkRenderer()
            self.vmtkRenderer.Initialize()
            self.OwnRenderer = 1

        if self.Type == 'freehand':
            self.ImageTracerWidget = vtk.vtkImageTracerWidget()
        elif self.Type == 'contour':
            self.ImageTracerWidget = vtk.vtkContourWidget()
        self.ImageTracerWidget.SetInteractor(self.vmtkRenderer.RenderWindowInteractor)

        self.SliderWidget = vtk.vtkSliderWidget()
        self.SliderWidget.SetInteractor(self.vmtkRenderer.RenderWindowInteractor)

        self.ImageActor = vtk.vtkImageActor()

        self.vmtkRenderer.RenderWindowInteractor.AddObserver("KeyPressEvent", self.Keypress)

        self.Display()

        if self.OwnRenderer:
            self.vmtkRenderer.Deallocate()
예제 #3
0
    def Execute(self):

        if self.Image == None:
            self.PrintError('Error: no Image.')

        if not self.vmtkRenderer:
            self.vmtkRenderer = vmtkrenderer.vmtkRenderer()
            self.vmtkRenderer.Initialize()
            self.OwnRenderer = 1

        self.vmtkRenderer.RegisterScript(self)

        if self.Type == 'freehand':
            self.ImageTracerWidget = vtk.vtkImageTracerWidget()
        elif self.Type == 'contour':
            self.ImageTracerWidget = vtk.vtkContourWidget()
        self.ImageTracerWidget.SetInteractor(
            self.vmtkRenderer.RenderWindowInteractor)

        self.SliderWidget = vtk.vtkSliderWidget()
        self.SliderWidget.SetInteractor(
            self.vmtkRenderer.RenderWindowInteractor)

        self.ImageActor = vtk.vtkImageActor()

        self.vmtkRenderer.AddKeyBinding('n', 'Next.', self.NextCallback)
        self.vmtkRenderer.AddKeyBinding('p', 'Previous.',
                                        self.PreviousCallback)
        self.vmtkRenderer.AddKeyBinding('i', 'Interact.',
                                        self.InteractCallback)

        self.Display()

        if self.OwnRenderer:
            self.vmtkRenderer.Deallocate()
예제 #4
0
    def Execute(self):

        if self.Image == None:
            self.PrintError('Error: no Image.')

        if not self.vmtkRenderer:
            self.vmtkRenderer = vmtkrenderer.vmtkRenderer()
            self.vmtkRenderer.Initialize()
            self.OwnRenderer = 1

        self.vmtkRenderer.RegisterScript(self) 

        if self.Type == 'freehand':
            self.ImageTracerWidget = vtk.vtkImageTracerWidget()
        elif self.Type == 'contour':
            self.ImageTracerWidget = vtk.vtkContourWidget()
        self.ImageTracerWidget.SetInteractor(self.vmtkRenderer.RenderWindowInteractor)

        self.SliderWidget = vtk.vtkSliderWidget()
        self.SliderWidget.SetInteractor(self.vmtkRenderer.RenderWindowInteractor)

        self.ImageActor = vtk.vtkImageActor()

        self.vmtkRenderer.AddKeyBinding('n','Next.',self.NextCallback)
        self.vmtkRenderer.AddKeyBinding('p','Previous.',self.PreviousCallback)
        self.vmtkRenderer.AddKeyBinding('i','Interact.', self.InteractCallback)

        self.Display()

        if self.OwnRenderer:
            self.vmtkRenderer.Deallocate()
예제 #5
0
    def Execute(self):

        if self.Image == None:
            self.PrintError('Error: no Image.')

        if not self.vmtkRenderer:
            self.vmtkRenderer = vmtkrenderer.vmtkRenderer()
            self.vmtkRenderer.Initialize()
            self.OwnRenderer = 1

        if self.Type == 'freehand':
            self.ImageTracerWidget = vtk.vtkImageTracerWidget()
        elif self.Type == 'contour':
            self.ImageTracerWidget = vtk.vtkContourWidget()
        self.ImageTracerWidget.SetInteractor(
            self.vmtkRenderer.RenderWindowInteractor)

        self.SliderWidget = vtk.vtkSliderWidget()
        self.SliderWidget.SetInteractor(
            self.vmtkRenderer.RenderWindowInteractor)

        self.ImageActor = vtk.vtkImageActor()

        self.vmtkRenderer.RenderWindowInteractor.AddObserver(
            "KeyPressEvent", self.Keypress)

        self.Display()

        if self.OwnRenderer:
            self.vmtkRenderer.Deallocate()
extract.SetVOI(31, 31, 0, 63, 0, 92)
extract.SetSampleRate(1, 1, 1)
extract.SetInputConnection(shifter.GetOutputPort())
extract.ReleaseDataFlagOff()
#

imageActor2 = vtk.vtkImageActor()
imageActor2.GetMapper().SetInputConnection(extract.GetOutputPort())
imageActor2.VisibilityOn()
imageActor2.SetDisplayExtent(31, 31, 0, 63, 0, 92)
imageActor2.InterpolateOff()
#

# Set up the image tracer widget
#
itw = vtk.vtkImageTracerWidget()
#
# Set the tolerance for capturing last handle when near first handle
# to form closed paths.
#
itw.SetCaptureRadius(1.5)
itw.GetGlyphSource().SetColor(1, 0, 0)
#
# Set the size of the glyph handle
#
itw.GetGlyphSource().SetScale(3.0)
#
# Set the initial rotation of the glyph if desired.  The default glyph
# set internally by the widget is a '+' so rotating 45 deg. gives a 'x'
#
itw.GetGlyphSource().SetRotationAngle(45.0)
예제 #7
0
extract.SetVOI(31, 31, 0, 63, 0, 92)
extract.SetSampleRate(1, 1, 1)
extract.SetInputConnection(shifter.GetOutputPort())
extract.ReleaseDataFlagOff()
#

imageActor2 = vtk.vtkImageActor()
imageActor2.SetInput(extract.GetOutput())
imageActor2.VisibilityOn()
imageActor2.SetDisplayExtent(31, 31, 0, 63, 0, 92)
imageActor2.InterpolateOff()
#

# Set up the image tracer widget
#
itw = vtk.vtkImageTracerWidget()
#
# Set the tolerance for capturing last handle when near first handle
# to form closed paths.
#
itw.SetCaptureRadius(1.5)
itw.GetGlyphSource().SetColor(1, 0, 0)
#
# Set the size of the glyph handle
#
itw.GetGlyphSource().SetScale(3.0)
#
# Set the initial rotation of the glyph if desired.  The default glyph
# set internally by the widget is a '+' so rotating 45 deg. gives a 'x'
#
itw.GetGlyphSource().SetRotationAngle(45.0)
예제 #8
0
    def __init__(self, parent, id=-1, title="", name=""):
        """Populates the menu and adds all required panels
        """
        wx.Frame.__init__(self,
                          parent,
                          id=id,
                          title=title,
                          pos=wx.DefaultPosition,
                          size=(1800, 830),
                          name=name)  #1000,875

        self.menubar = wx.MenuBar()
        self.SetMenuBar(self.menubar)

        views_menu = wx.Menu()
        self.views_default_id = wx.NewId()
        views_menu.Append(self.views_default_id, "&Default\tCtrl-D",
                          "Activate default view layout.", wx.ITEM_NORMAL)

        self.views_max_image_id = wx.NewId()
        views_menu.Append(self.views_max_image_id,
                          "&Axial-Sagittal-Coronal View\tCtrl-M",
                          "Activate maximum image view size layout.",
                          wx.ITEM_NORMAL)

        self.views_contour_view_id = wx.NewId()
        views_menu.Append(self.views_contour_view_id,
                          "&Contour Uncertainty view\tCtrl-C",
                          "Activate contour uncertainty view size layout.",
                          wx.ITEM_NORMAL)

        self.views_voxel_view_id = wx.NewId()
        views_menu.Append(self.views_voxel_view_id,
                          "&Voxel Uncertainty view\tCtrl-V",
                          "Activate voxel uncertainty view size layout.",
                          wx.ITEM_NORMAL)

        self.menubar.Append(views_menu, "&Views")

        help_menu = wx.Menu()
        help_about_id = wx.NewId()
        help_menu.Append(help_about_id, "&About\tCtrl-0",
                         "Info about application.", wx.ITEM_NORMAL)

        self.menubar.Append(help_menu, "&Help")

        # tell FrameManager to manage this frame
        self._mgr = wx.aui.AuiManager()
        self._mgr.SetManagedWindow(self)

        self._mgr.AddPane(
            self._create_patients_pane(),
            wx.aui.AuiPaneInfo().Name(
                "patient").Caption("Patient Data").Left().BestSize(
                    wx.Size(600,
                            400)).MinimizeButton(True).MaximizeButton(True))

        self._mgr.AddPane(
            self._create_controls_pane(),
            wx.aui.AuiPaneInfo().Name(
                "control").Caption("Dose Plan Explorer").Bottom().BestSize(
                    wx.Size(600,
                            400)).MinimizeButton(True).MaximizeButton(True))

        self._mgr.AddPane(
            self._create_axial_slices_pane(),
            wx.aui.AuiPaneInfo().Name("axial").Caption(
                "Axial").Center().BestSize(wx.Size(
                    400, 400)).CloseButton(False).MaximizeButton(True))

        self._mgr.AddPane(
            self._create_3D_pane(),
            wx.aui.AuiPaneInfo().Name(
                "3dview").Caption("3D Dose Plan").Left().BestSize(
                    wx.Size(1000,
                            800)).MinimizeButton(True).MaximizeButton(True))

        self._mgr.AddPane(
            self._create_sagittal_slices_pane(),
            wx.aui.AuiPaneInfo().Name(
                "sagittal").Caption("Sagittal").Right().BestSize(
                    wx.Size(400,
                            400)).MinimizeButton(True).MaximizeButton(True))

        self._mgr.AddPane(
            self._create_coronal_slices_pane(),
            wx.aui.AuiPaneInfo().Name(
                "coronal").Caption("Coronal").Right().BestSize(
                    wx.Size(400,
                            400)).MinimizeButton(True).MaximizeButton(True))

        self._mgr.AddPane(
            self._create_barplot_pane(),
            wx.aui.AuiPaneInfo().Name(
                "overview").Caption("Probability Overview").Bottom().BestSize(
                    wx.Size(1000,
                            800)).MinimizeButton(True).MaximizeButton(True))

        self._mgr.AddPane(
            self._create_probs_pane(),
            wx.aui.AuiPaneInfo().Name("probs").Caption(
                "Probabilities for Dose Plans").Bottom().BestSize(
                    wx.Size(1000,
                            800)).MinimizeButton(True).MaximizeButton(True))

        self._mgr.AddPane(
            self._create_distplot_pane(),
            wx.aui.AuiPaneInfo().Name("distplot").Caption(
                "Exploration of dose distribution").Bottom().BestSize(
                    wx.Size(1000,
                            800)).MinimizeButton(True).MaximizeButton(True))

        self._mgr.AddPane(
            self._create_scatterplot_pane(),
            wx.aui.AuiPaneInfo().Name("scatterplot").Caption(
                "Variability scatterplot").Bottom().BestSize(wx.Size(
                    1000, 800)).MinimizeButton(True).MaximizeButton(True))

        self.SetMinSize(wx.Size(400, 300))

        # first we save this default perspective with all panes
        # visible
        self._perspectives = {}
        self._mgr.GetPane("doseplan").Hide()
        self._mgr.GetPane("scatterplot").Hide()
        self._mgr.GetPane("3dview").Hide()
        self._mgr.GetPane("distplot").Hide()
        self._perspectives['default'] = self._mgr.SavePerspective()

        #------------- Show maximum image view ------------------#

        #Show axial,coronal and sagittal panes
        self._mgr.GetPane("axial").Show()
        self._mgr.GetPane("coronal").Show()
        self._mgr.GetPane("sagittal").Show()

        #Hide all the others
        self._mgr.GetPane("patient").Hide()
        self._mgr.GetPane("control").Hide()
        self._mgr.GetPane("overview").Hide()
        self._mgr.GetPane("probs").Hide()
        self._mgr.GetPane("3dview").Hide()
        self._mgr.GetPane("scatterplot").Hide()
        self._mgr.GetPane("distplot").Hide()
        # save the perspective again
        self._perspectives['max_image'] = self._mgr.SavePerspective()

        #------------- Show contour uncertainty view ------------------#

        #Show axial, coronal, sagittal, control, overview and probabilities panes
        self._mgr.GetPane("axial").Show()
        self._mgr.GetPane("coronal").Right()
        self._mgr.GetPane("coronal").Show()
        self._mgr.GetPane("sagittal").Right()
        self._mgr.GetPane("sagittal").Show()
        self._mgr.GetPane("control").Show()
        self._mgr.GetPane("overview").Show()
        self._mgr.GetPane("probs").Show()

        #Hide all the others
        self._mgr.GetPane("patient").Hide()
        self._mgr.GetPane("3dview").Hide()
        self._mgr.GetPane("scatterplot").Hide()
        self._mgr.GetPane("distplot").Hide()

        self._perspectives['contour_view'] = self._mgr.SavePerspective()

        #------------- Show voxel uncertainty view ------------------#

        #Show 3dview, scatterplot, axial and distplot panes
        self._mgr.GetPane("axial").Left().Center()
        self._mgr.GetPane("axial").Show()
        self._mgr.GetPane("3dview").Left().Center()
        self._mgr.GetPane("3dview").Show()
        self._mgr.GetPane("distplot").Right()
        self._mgr.GetPane("distplot").Show()
        self._mgr.GetPane("scatterplot").Right()
        self._mgr.GetPane("scatterplot").Show()

        self._mgr.GetPane("patient").Hide()
        self._mgr.GetPane("control").Hide()
        self._mgr.GetPane("coronal").Hide()
        self._mgr.GetPane("sagittal").Hide()
        self._mgr.GetPane("probs").Hide()
        self._mgr.GetPane("overview").Hide()

        self._perspectives['voxel_view'] = self._mgr.SavePerspective()

        # and put back the default perspective / view
        self._mgr.LoadPerspective(self._perspectives['default'])

        # finally tell the AUI manager to do everything that we've
        # asked
        self._mgr.Update()

        #Bind the events
        self.Bind(wx.EVT_MENU, self.onAbout, id=help_about_id)

        self.patients = {}
        self.contours = {}

        #sns.plt.close(self.figure)

        self.CreateStatusBar()
        self.SetStatusText("Status information can be find here...")

        self.new_pat = None
        self.aboutbox = None

        self.tracer = vtk.vtkImageTracerWidget()
        self.tracer.SetCaptureRadius(10.5)
        self.tracer.GetGlyphSource().SetColor(1, 0, 0)
        self.tracer.GetGlyphSource().SetScale(
            1.0)  # set the size of the glyph handle

        # Set the initial rotation of the glyph if desired.  The default glyph
        # set internally by the widget is a '+' so rotating 45 deg. gives a 'x'
        self.tracer.GetGlyphSource().SetRotationAngle(90.0)
        self.tracer.GetGlyphSource().Modified()
        self.tracer.GetLineProperty().SetColor(1, 0, 0)
        self.tracer.SetPriority(1)
        self.tracer.AutoCloseOn()
        self.tracer.IsClosed()

        self.dc = None
        self.cursor_dist = None