Пример #1
0
    def __init__(self):

        QToolBar.__init__(self)
        VTKObservationMixin.__init__(self)

        self.parameterNode = WarpDrive.WarpDriveLogic().getParameterNode()
        self.addObserver(self.parameterNode, vtk.vtkCommand.ModifiedEvent,
                         self.updateToolbarFromParameterNode)

        self.setWindowTitle(qt.QObject().tr("LeadDBS"))
        self.name = 'LeadDBS'

        #
        # Modality
        #
        self.addWidget(qt.QLabel('Modality:'))
        self.modalityComboBox = qt.QComboBox()
        self.modalityComboBox.addItem('T1w')
        self.modalityComboBox.view().pressed.connect(self.onModalityPressed)
        self.addWidget(self.modalityComboBox)

        #
        # B <-> F slider
        #
        self.addSeparator()
        self.addWidget(qt.QLabel('Template:'))
        templateSlider = qt.QSlider(1)
        templateSlider.singleStep = 10
        templateSlider.minimum = 0
        templateSlider.maximum = 100
        templateSlider.value = 0
        templateSlider.setFixedWidth(120)
        templateSlider.connect(
            'valueChanged(int)', lambda value: slicer.util.
            setSliceViewerLayers(foregroundOpacity=value / 100.0))
        self.addWidget(templateSlider)

        #
        # Space Separator
        #
        self.addSeparator()
        empty = qt.QWidget()
        empty.setSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Preferred)
        self.addWidget(empty)

        #
        # Subject
        #

        self.subjectNameLabel = qt.QLabel('Subject: ')
        self.addWidget(self.subjectNameLabel)

        #
        # Harden Changes
        #
        self.addSeparator()
        self.hardenChangesCheckBox = qt.QCheckBox("Harden Changes")
        self.hardenChangesCheckBox.checked = True
        self.addWidget(self.hardenChangesCheckBox)

        #
        # Save
        #
        self.nextButton = qt.QPushButton("Exit")
        self.nextButton.setFixedWidth(75)
        self.nextButton.setStyleSheet("background-color: green")
        self.addWidget(self.nextButton)
        self.nextButton.connect("clicked(bool)", self.onNextButton)

        #
        # Update
        #

        self.updateModalities(self.parameterNode.GetParameter("subjectPath"))
        self.initSubject()
        self.updateToolbarFromParameterNode()
Пример #2
0
    time.sleep(5)
    exit()
else:
    control = qt.QWidget()
    layout = qt.QVBoxLayout()
    control.setLayout(layout)
    b0 = qt.QPushButton("0: VTK CPU ray cast")
    layout.addWidget(b0)
    b0.connect('clicked()', vr0)
    b1 = qt.QPushButton("1: VTK GPU ray cast")
    layout.addWidget(b1)
    b1.connect('clicked()', vr1)
    b2 = qt.QPushButton("2: VTK GPU texture mapping")
    layout.addWidget(b2)
    b2.connect('clicked()', vr2)
    b3 = qt.QPushButton("3: NCI GPU ray cast")
    layout.addWidget(b3)
    b3.connect('clicked()', vr3)
    b4 = qt.QPushButton("4: NCI GPU ray cast (multi-volume)")
    layout.addWidget(b4)
    b4.connect('clicked()', vr4)
    s1 = qt.QSlider(qt.Qt.Horizontal, control)
    layout.addWidget(s1)
    s1.connect('valueChanged(int)', vrthres)
    be = qt.QPushButton("Exit")
    layout.addWidget(be)
    be.connect('clicked()', exit)
    p = mainWindow().geometry
    control.setGeometry(p.x() - 30, p.y() - 30, 300, 700)
    control.show()
Пример #3
0
    def setup(self):
        ScriptedLoadableModuleWidget.setup(self)

        self.caseInfoCollapsibleButton = ctk.ctkCollapsibleButton()
        self.caseInfoCollapsibleButton.text = "Case information"
        self.caseInfoCollapsibleButton.collapsed = False
        self.layout.addWidget(self.caseInfoCollapsibleButton)
        self.caseAreaLayout = qt.QGridLayout(self.caseInfoCollapsibleButton)
        # Select case
        row = 0
        self.loadCaseButton = ctk.ctkPushButton()
        self.loadCaseButton.text = "Load case"
        self.loadCaseButton.toolTip = "Load a case folder"
        self.caseAreaLayout.addWidget(self.loadCaseButton, row, 0)

        # Reset button
        self.resetButton = ctk.ctkPushButton()
        self.resetButton.text = "Close case"
        self.resetButton.toolTip = "Close the current case"
        self.caseAreaLayout.addWidget(self.resetButton, row, 1)

        # Case info
        row += 1
        self.caseInfoFrame = qt.QFrame()
        self.caseInfoFrame.setFrameStyle(0x0002 | 0x0010)
        self.caseInfoFrame.lineWidth = 2
        self.caseInfoFrame.setStyleSheet(
            "background-color: #EEEEEE; margin: 10px")
        self.caseAreaLayout.addWidget(self.caseInfoFrame, row, 0, 1, 2)

        self.caseInfoFrameLayout = qt.QGridLayout()
        self.caseInfoFrame.setLayout(self.caseInfoFrameLayout)

        self.caseIdLabel = qt.QLabel("Case id: ")
        self.caseIdLabel.setStyleSheet("font-weight: bold")
        self.caseInfoFrameLayout.addWidget(self.caseIdLabel, 0, 0)

        self.showEnhancementCheckboxGroup = qt.QButtonGroup()
        self.showJustOriginalButton = qt.QRadioButton("Original only")
        self.showJustOriginalButton.setChecked(True)
        self.showEnhancementCheckboxGroup.addButton(
            self.showJustOriginalButton, 0)
        self.caseInfoFrameLayout.addWidget(self.showJustOriginalButton, 1, 0)

        self.showOriginalPlusEnhancedButton = qt.QRadioButton(
            "Original and enhanced")
        self.showEnhancementCheckboxGroup.addButton(
            self.showOriginalPlusEnhancedButton, 1)
        self.caseInfoFrameLayout.addWidget(self.showOriginalPlusEnhancedButton,
                                           2, 0)

        self.showJustEnhancedButton = qt.QRadioButton("Enhanced only")
        self.showEnhancementCheckboxGroup.addButton(
            self.showJustEnhancedButton, 2)
        self.caseInfoFrameLayout.addWidget(self.showJustEnhancedButton, 3, 0)

        # Center Volumes button
        self.centerVolumesButton = ctk.ctkPushButton()
        self.centerVolumesButton.text = "Center image/s"
        self.centerVolumesButton.toolTip = "Center all the current visible images"
        self.centerVolumesButton.setFixedWidth(200)
        # self.centerVolumesButton.toolTip = "Load a case folder"
        self.caseInfoFrameLayout.addWidget(self.centerVolumesButton, 4, 0)

        # Enhancement fine tuning
        self.vascularFactorLabel = qt.QLabel("Vascular factor")
        self.vascularFactorLabel.setStyleSheet("font-weight: bold")
        self.caseInfoFrameLayout.addWidget(self.vascularFactorLabel, 0, 1)
        self.vascularFactorSlider = qt.QSlider()
        self.vascularFactorSlider.orientation = 2  # Vertical
        self.vascularFactorSlider.value = 5
        self.vascularFactorSlider.minimum = 0
        self.vascularFactorSlider.maximum = 10
        # self.vascularFactorSlider.setStyleSheet("margin-top:10px;padding-top:20px")
        # self.vascularFactorSlider.setToolTip("Move the slider for a fine tuning segmentation")
        self.caseInfoFrameLayout.addWidget(self.vascularFactorSlider, 1, 1, 4,
                                           1, 0x0004)

        self.enhancementFactorLabel = qt.QLabel("Enhancement factor")
        self.enhancementFactorLabel.setStyleSheet("font-weight: bold")
        self.caseInfoFrameLayout.addWidget(self.enhancementFactorLabel, 0, 2)
        self.enhancementFactorSlider = qt.QSlider()
        self.enhancementFactorSlider.orientation = 2  # Vertical
        self.enhancementFactorSlider.minimum = 0
        self.enhancementFactorSlider.maximum = 10
        self.enhancementFactorSlider.value = 5
        # self.vascularFactorSlider.setStyleSheet("margin-top:10px;padding-top:20px")
        # self.vascularFactorSlider.setToolTip("Move the slider for a fine tuning segmentation")
        self.caseInfoFrameLayout.addWidget(self.enhancementFactorSlider, 1, 2,
                                           4, 1, 0x0004)

        # Editor
        row += 1
        self.editorWidget = ui.CustomEditorWidget(self.parent)
        self.editorWidget.setup()
        self.editorCollapsibleButton = self.editorWidget.editLabelMapsFrame
        self.editorCollapsibleButton.text = "Edit the current eye image"
        self.editorCollapsibleButton.collapsed = False
        self.editorWidget.toolsColor.terminologyCollapsibleButton.setVisible(
            False)
        self.layout.addWidget(self.editorCollapsibleButton)

        ### DIAGNOSIS
        self.diagnosisCollapsibleButton = ctk.ctkCollapsibleButton()
        self.diagnosisCollapsibleButton.text = "Diagnosis"
        self.diagnosisCollapsibleButton.collapsed = False
        self.layout.addWidget(self.diagnosisCollapsibleButton)
        self.diagnosisAreaLayout = qt.QVBoxLayout(
            self.diagnosisCollapsibleButton)

        # Visual Acuity
        label = qt.QLabel("Visual acuity (VA): ")
        label.setStyleSheet("margin: 10px 0 0 10px; font-weight: bold")
        self.diagnosisAreaLayout.addWidget(label)
        self.vaFrame = qt.QFrame()
        self.vaFrame.setFrameStyle(0x0002 | 0x0010)
        self.vaFrame.lineWidth = 2
        self.vaFrame.setStyleSheet("background-color: #EEEEEE; margin: 10px")
        self.vaFrame.setFixedWidth(240)
        self.diagnosisAreaLayout.addWidget(self.vaFrame)

        self.vaFrameLayout = qt.QGridLayout(self.vaFrame)
        self.vaFrameLayout.addWidget(qt.QLabel("OS"), 0, 0)
        self.osLineEdit = qt.QLineEdit()
        self.osLineEdit.setFixedWidth(80)
        self.osLineEdit.setStyleSheet("background-color: white")
        self.vaFrameLayout.addWidget(self.osLineEdit, 0, 1)

        self.vaFrameLayout.addWidget(qt.QLabel("OD"), 1, 0)
        self.odLineEdit = qt.QLineEdit()
        self.odLineEdit.setFixedWidth(80)
        self.odLineEdit.setStyleSheet("background-color: white")
        self.vaFrameLayout.addWidget(self.odLineEdit, 1, 1)

        self.vaModalityButtonGroup = qt.QButtonGroup()
        self.scvaRadioButton = qt.QRadioButton()
        self.scvaRadioButton.setText("SCVA")
        self.vaFrameLayout.addWidget(self.scvaRadioButton, 0, 2)
        self.vaModalityButtonGroup.addButton(self.scvaRadioButton)

        self.bcvaRadioButton = qt.QRadioButton()
        self.bcvaRadioButton.setText("BCVA")
        self.vaFrameLayout.addWidget(self.bcvaRadioButton, 1, 2)
        self.vaModalityButtonGroup.addButton(self.bcvaRadioButton)

        self.ucvaRadioButton = qt.QRadioButton()
        self.ucvaRadioButton.setText("UCVA")
        self.vaFrameLayout.addWidget(self.ucvaRadioButton, 2, 2)
        self.vaModalityButtonGroup.addButton(self.ucvaRadioButton)

        # Problems detected
        label = qt.QLabel("Problems detected: ")
        label.setStyleSheet("margin: 10px 0 0 10px; font-weight: bold")
        self.diagnosisAreaLayout.addWidget(label)

        self.problemsFrame = qt.QFrame()
        self.problemsFrame.setFrameStyle(0x0002 | 0x0010)
        self.problemsFrame.lineWidth = 2
        self.problemsFrame.setStyleSheet(
            "background-color: #EEEEEE; margin: 10px")
        self.diagnosisAreaLayout.addWidget(self.problemsFrame)

        self.problemsFrameLayout = qt.QGridLayout()
        self.problemsFrame.setLayout(self.problemsFrameLayout)
        self.problemsButtons = []

        self.microaneurysmsCheckbox = qt.QCheckBox()
        self.microaneurysmsCheckbox.setText("Microaneurysms")
        self.problemsFrameLayout.addWidget(self.microaneurysmsCheckbox, 0, 0)
        self.problemsButtons.append(self.microaneurysmsCheckbox)

        self.exudatesCheckbox = qt.QCheckBox()
        self.exudatesCheckbox.setText("Exudates")
        self.problemsFrameLayout.addWidget(self.exudatesCheckbox, 0, 1)
        self.problemsButtons.append(self.exudatesCheckbox)

        self.haemorrhagesCheckbox = qt.QCheckBox()
        self.haemorrhagesCheckbox.setText("Haemorrhages")
        self.problemsFrameLayout.addWidget(self.haemorrhagesCheckbox, 0, 2)
        self.problemsButtons.append(self.haemorrhagesCheckbox)

        self.cottonWoolSpotsCheckbox = qt.QCheckBox()
        self.cottonWoolSpotsCheckbox.setText("Cotton wool spots")
        self.problemsFrameLayout.addWidget(self.cottonWoolSpotsCheckbox, 1, 0)
        self.problemsButtons.append(self.cottonWoolSpotsCheckbox)

        self.NeovascularisationCheckbox = qt.QCheckBox()
        self.NeovascularisationCheckbox.setText("Neovascularisation")
        self.problemsFrameLayout.addWidget(self.NeovascularisationCheckbox, 1,
                                           1)
        self.problemsButtons.append(self.NeovascularisationCheckbox)

        label = qt.QLabel("Diabetic retinopathy diagnosis: ")
        label.setStyleSheet("margin: 10px 0 0 10px; font-weight: bold")
        self.diagnosisAreaLayout.addWidget(label)

        # Diabetic Retinopathy diagnosis
        self.diabeticRetinopathyDiagnosisFrame = qt.QFrame()
        self.diabeticRetinopathyDiagnosisFrame.setFrameStyle(0x0002 | 0x0010)
        self.diabeticRetinopathyDiagnosisFrame.lineWidth = 2
        self.diabeticRetinopathyDiagnosisFrame.setStyleSheet(
            "background-color: #EEEEEE; margin: 10px")
        self.diagnosisAreaLayout.addWidget(
            self.diabeticRetinopathyDiagnosisFrame)

        self.diabeticRetinopathyDiagnosisFrameLayout = qt.QHBoxLayout()
        self.diabeticRetinopathyDiagnosisFrame.setLayout(
            self.diabeticRetinopathyDiagnosisFrameLayout)

        self.diagnosisRadioButtonGroup = qt.QButtonGroup()
        for i in range(5):
            rb = qt.QRadioButton(str(i))
            self.diagnosisRadioButtonGroup.addButton(rb, i)
            self.diabeticRetinopathyDiagnosisFrameLayout.addWidget(rb)
        self.diagnosisRadioButtonGroup.buttons()[0].setChecked(True)

        # Additional comments
        label = qt.QLabel("Additional comments:")
        label.setStyleSheet("margin: 10px 0 0 10px; font-weight: bold")
        self.diagnosisAreaLayout.addWidget(label)
        row += 1

        self.additionalCommentsText = qt.QTextEdit()
        self.additionalCommentsText.setStyleSheet("margin: 10px")
        self.diagnosisAreaLayout.addWidget(self.additionalCommentsText)

        self.saveReportButton = ctk.ctkPushButton()
        self.saveReportButton.text = "Save report"
        self.saveReportButton.setFixedWidth(300)
        self.diagnosisAreaLayout.addWidget(self.saveReportButton)

        self.printReportButton = ctk.ctkPushButton()
        self.printReportButton.text = "Save and generate PDF"
        self.printReportButton.setFixedWidth(300)
        self.diagnosisAreaLayout.addWidget(self.printReportButton)

        self.expertModeCollapsibleButton = ctk.ctkCollapsibleButton()
        self.expertModeCollapsibleButton.text = "Expert mode"
        self.expertModeCollapsibleButton.collapsed = True
        self.layout.addWidget(self.expertModeCollapsibleButton)
        self.expertModeLayout = qt.QVBoxLayout(
            self.expertModeCollapsibleButton)
        self.expertModeCheckbox = qt.QCheckBox("Activate expert mode")
        self.expertModeCheckbox.checked = False
        self.expertModeLayout.addWidget(self.expertModeCheckbox)
        self.layout.addStretch(1)

        # Connections
        self.loadCaseButton.connect('clicked()', self.__onLoadCaseClicked__)
        # self.loadReportButton.connect('clicked()', self.__onLoadReportClicked__)
        self.showEnhancementCheckboxGroup.connect(
            "buttonClicked (int)", self.__onEnhancementButtonGroupClicked__)
        self.centerVolumesButton.connect('clicked()',
                                         SlicerUtil.centerAllVolumes)
        self.vascularFactorSlider.connect('sliderReleased()',
                                          self.__onEnhancementFineTuning__)
        self.enhancementFactorSlider.connect('sliderReleased()',
                                             self.__onEnhancementFineTuning__)
        self.saveReportButton.connect('clicked()',
                                      self.__onSaveReportClicked__)
        self.printReportButton.connect('clicked()',
                                       self.__onPrintReportClicked__)
        self.resetButton.connect('clicked()', self.reset)
        self.expertModeCheckbox.connect("stateChanged(int)",
                                        self.__onExpertModeStateChanged__)
        slicer.mrmlScene.AddObserver(slicer.vtkMRMLScene.EndCloseEvent,
                                     self.__onSceneClosed__)

        # Set default layout Red
        SlicerUtil.changeLayoutRedSingle()

        self.refreshUI()
Пример #4
0
    def create(self):
        super(WatershedFromMarkerEffectOptions, self).create()

        if not HAVE_SIMPLEITK:
            self.warningLabel = qt.QLabel()
            self.warningLabel.text = "WatershedFromMarker is not available because\nSimpleITK is not available in this build"
            self.widgets.append(self.warningLabel)
            self.frame.layout().addWidget(self.warningLabel)
            return

        labelVolume = EditUtil.getLabelVolume()
        if labelVolume and labelVolume.GetImageData():
            spacing = labelVolume.GetSpacing()
            self.minimumSigma = 0.1 * min(spacing)
            self.maximumSigma = 100 * self.minimumSigma
        else:
            self.minimumSigma = 0.1
            self.maximumSigma = 10

        self.sigmaFrame = qt.QFrame(self.frame)
        self.sigmaFrame.setLayout(qt.QHBoxLayout())
        self.frame.layout().addWidget(self.sigmaFrame)
        self.widgets.append(self.sigmaFrame)

        tip = "Increasing this value smooths the segmentation and reduces leaks. This is the sigma used for edge detection."
        self.sigmaLabel = qt.QLabel("Object Scale: ", self.frame)
        self.sigmaLabel.setToolTip(tip)
        self.sigmaFrame.layout().addWidget(self.sigmaLabel)
        self.widgets.append(self.sigmaLabel)

        self.sigmaSlider = qt.QSlider(qt.Qt.Horizontal, self.frame)
        self.sigmaFrame.layout().addWidget(self.sigmaSlider)
        self.sigmaFrame.setToolTip(tip)
        self.widgets.append(self.sigmaSlider)

        self.sigmaSpinBox = qt.QDoubleSpinBox(self.frame)
        self.sigmaSpinBox.setToolTip(tip)
        self.sigmaSpinBox.suffix = "mm"

        self.sigmaFrame.layout().addWidget(self.sigmaSpinBox)
        self.widgets.append(self.sigmaSpinBox)

        self.sigmaSpinBox.minimum = self.minimumSigma
        self.sigmaSlider.minimum = self.minimumSigma
        self.sigmaSpinBox.maximum = self.maximumSigma
        self.sigmaSlider.maximum = self.maximumSigma

        decimals = math.floor(math.log(self.minimumSigma, 10))
        if decimals < 0:
            self.sigmaSpinBox.decimals = -decimals + 2

        self.apply = qt.QPushButton("Apply", self.frame)
        self.apply.objectName = self.__class__.__name__ + 'Apply'
        self.apply.setToolTip("Apply the extension operation")

        self.frame.layout().addWidget(self.apply)
        self.widgets.append(self.apply)

        helpDoc = \
            """Use this effect to apply the watershed from markers segmentation from multiple initial labels.

The input to this filter is current labelmap image which is expected to contain multiple labels as initial marks. The marks or labels are grown to fill the image and with edges defining the bondaries between. To segment a single object, mark the object, and then it is suggested to surround the object with a negative label on each axis.

The "Object Scale" parameter is use to adjust the smoothness of the output image and prevent leakage. It is used internally for the sigma of the gradient magnitude.
    """
        HelpButton(self.frame, helpDoc)

        self.sigmaSlider.connect('valueChanged(int)',
                                 self.sigmaSpinBox.setValue)
        self.sigmaSpinBox.connect('valueChanged(double)',
                                  self.sigmaSlider.setValue)

        # if either widget is changed both should change and this should be triggered
        self.connections.append((self.sigmaSpinBox, 'valueChanged(double)',
                                 self.onSigmaValueChanged))

        self.connections.append((self.apply, 'clicked()', self.onApply))

        # Add vertical spacer
        self.frame.layout().addStretch(1)
Пример #5
0
  def setup(self):
    # Instantiate and connect widgets ...

    # Collapsible button
    sampleCollapsibleButton = ctk.ctkCollapsibleButton()
    sampleCollapsibleButton.text = "Main Panel"
    self.layout.addWidget(sampleCollapsibleButton)
    # Set layout

    self.formFrame = qt.QFrame(sampleCollapsibleButton)   
    self.formFrame.setLayout(qt.QHBoxLayout())
    self.formFrame1 = qt.QFrame(sampleCollapsibleButton)   
    self.formFrame1.setLayout(qt.QHBoxLayout())
    self.formFrame2 = qt.QFrame(sampleCollapsibleButton)   
    self.formFrame2.setLayout(qt.QHBoxLayout())
    self.formFrame3 = qt.QFrame(sampleCollapsibleButton)   
    self.formFrame3.setLayout(qt.QHBoxLayout())
    # bind new frame to the layout menu
    self.layout.addWidget(self.formFrame)
    self.layout.addWidget(self.formFrame1)
    self.layout.addWidget(self.formFrame2)
    self.layout.addWidget(self.formFrame3)

    #create volume selector
    self.inputSelector = qt.QLabel("Input Volume", self.formFrame)
    self.formFrame.layout().addWidget(self.inputSelector)

    self.inputSelector = slicer.qMRMLNodeComboBox(self.formFrame)
    self.inputSelector.nodeTypes = ("vtkMRMLScalarVolumeNode","")
    self.inputSelector.addEnabled = False
    self.inputSelector.removeEnabled = False
    #bind the current volume selector to the current scene of slicer
    self.inputSelector.setMRMLScene(slicer.mrmlScene)
    #bind the input selector to the frame
    self.formFrame.layout().addWidget(self.inputSelector)

  

    #Set up buttons
    Button_volume = qt.QPushButton("Show Volume")
    Button_volume.toolTip = "Show Volume of selected file."
    self.formFrame.layout().addWidget(Button_volume)
    Button_volume.connect('clicked(bool)', self.onButton_volumeClicked)


    Button_clip=qt.QPushButton("Crop Volume")
    Button_clip.toolTip="Crop Volume of selected file."
    self.formFrame.layout().addWidget(Button_clip)
    Button_clip.connect('clicked(bool)',self.onButton_cropClicked)


    Button_remove=qt.QPushButton("Remove Volume")
    Button_remove.toolTip="remove current scene's volume."
    self.formFrame.layout().addWidget(Button_remove)
    Button_remove.connect('clicked(bool)',self.onButton_removeClicked)

    #Set up sliders
    self.xLabel = qt.QLabel("LR", self.formFrame1)
    self.xLabel.setMinimumWidth(80)
    self.xsld = qt.QSlider(qt.Qt.Horizontal,self.formFrame1)
    self.xsld.setRange(0, 100)
    self.xsld.setValue(100) 
    self.xsld.setFixedWidth(400)
    self.xsld.setFocusPolicy(qt.Qt.NoFocus)
    self.xsld.setPageStep(5)
    self.xsld.valueChanged.connect(self.xchangeValue)
    self.xnumber = qt.QLabel('100',self.formFrame1)
    self.xnumber.setMinimumWidth(50)
    self.formFrame1.layout().addWidget(self.xLabel)
    self.formFrame1.layout().addWidget(self.xsld)
    self.formFrame1.layout().addWidget(self.xnumber)


    self.yLabel = qt.QLabel("AP", self.formFrame2)
    self.yLabel.setMinimumWidth(80)
    self.ysld = qt.QSlider(qt.Qt.Horizontal,self.formFrame2)
    self.ysld.setRange(0, 100)
    self.ysld.setValue(100) 
    self.ysld.setFixedWidth(400)
    self.ysld.setFocusPolicy(qt.Qt.NoFocus)
    self.ysld.setPageStep(5)
    self.ysld.valueChanged.connect(self.ychangeValue)
    self.ynumber = qt.QLabel('100',self.formFrame2)
    self.ynumber.setMinimumWidth(50)
    self.formFrame2.layout().addWidget(self.yLabel)
    self.formFrame2.layout().addWidget(self.ysld)
    self.formFrame2.layout().addWidget(self.ynumber)

    self.zLabel = qt.QLabel("SI", self.formFrame3)
    self.zLabel.setMinimumWidth(80)
    self.zsld = qt.QSlider(qt.Qt.Horizontal,self.formFrame3)
    self.zsld.setRange(0, 100)
    self.zsld.setValue(100) 
    self.zsld.setFixedWidth(400)
    self.zsld.setFocusPolicy(qt.Qt.NoFocus)
    self.zsld.setPageStep(5)
    self.zsld.valueChanged.connect(self.zchangeValue)
    self.znumber = qt.QLabel('100',self.formFrame3)
    self.znumber.setMinimumWidth(50)
    self.formFrame3.layout().addWidget(self.zLabel)
    self.formFrame3.layout().addWidget(self.zsld)
    self.formFrame3.layout().addWidget(self.znumber)

    #set up initial roi region
    self.x = self.xsld.value
    self.y = self.ysld.value
    self.z = self.zsld.value

    self.Button_volume = Button_volume
    self.r = slicer.mrmlScene.AddNewNodeByClass("vtkMRMLAnnotationROINode")
    self.r.SetRadiusXYZ(100, 100, 100)
Пример #6
0
  time.sleep(5)
  sizeROIX(50)
  slicer.app.processEvents()
  time.sleep(5)
  sizeROIY(50)
  slicer.app.processEvents()
  time.sleep(5)
  sizeROIZ(50)
  slicer.app.processEvents()
  time.sleep(5)
  exit()
else:
  control = qt.QWidget()
  layout = qt.QVBoxLayout()
  control.setLayout(layout)
  sX = qt.QSlider(qt.Qt.Horizontal,control)
  layout.addWidget(sX)
  sX.connect('valueChanged(int)',  moveROIX)
  sY = qt.QSlider(qt.Qt.Horizontal,control)
  layout.addWidget(sY)
  sY.connect('valueChanged(int)',  moveROIY)
  sZ = qt.QSlider(qt.Qt.Horizontal,control)
  layout.addWidget(sZ)
  sZ.connect('valueChanged(int)',  moveROIZ)
  sX1 = qt.QSlider(qt.Qt.Horizontal,control)
  layout.addWidget(sX1)
  sX1.connect('valueChanged(int)',  sizeROIX)
  sY1 = qt.QSlider(qt.Qt.Horizontal,control)
  layout.addWidget(sY1)
  sY1.connect('valueChanged(int)',  sizeROIY)
  sZ1 = qt.QSlider(qt.Qt.Horizontal,control)
Пример #7
0
  def __init__(self):

    QToolBar.__init__(self)
    VTKObservationMixin.__init__(self)

    self.parameterNode = SmudgeModule.SmudgeModuleLogic().getParameterNode()
    self.addObserver(self.parameterNode, vtk.vtkCommand.ModifiedEvent, self.updateToolbarFromMRML)
    
    self.setWindowTitle(qt.QObject().tr("LeadDBS"))
    self.name = 'LeadDBS'
  

    #
    # Modality
    #
    self.addWidget(qt.QLabel('Modality:'))
    self.modalityComboBox = qt.QComboBox()
    self.modalityComboBox.addItem('t1')
    self.modalityComboBox.view().pressed.connect(self.onModalityPressed)
    self.addWidget(self.modalityComboBox)

    #
    # B <-> F slider
    #
    self.addSeparator()
    self.addWidget(qt.QLabel('Template:'))
    templateSlider = qt.QSlider(1)
    templateSlider.singleStep = 10
    templateSlider.minimum = 0
    templateSlider.maximum = 100
    templateSlider.value = 0
    templateSlider.setFixedWidth(120)
    templateSlider.connect('valueChanged(int)', lambda value: slicer.util.setSliceViewerLayers(foregroundOpacity = value / 100.0))
    self.addWidget(templateSlider)

    #
    # Resolution
    #
    self.addSeparator()
    self.addWidget(qt.QLabel('Warp Resolution: '))
    self.resolutionComboBox = qt.QComboBox()
    avalibaleResolutions = [0.5, 1, 2, 5, 10]
    self.resolutionComboBox.addItems([str(r)+'mm' for r in avalibaleResolutions])
    self.resolutionComboBox.setCurrentIndex(avalibaleResolutions.index(float(self.parameterNode.GetParameter("resolution"))))
    self.resolutionComboBox.connect('currentIndexChanged(int)', self.onResolutionChanged)

    self.addWidget(self.resolutionComboBox)

    #
    # Space Separator
    #

    empty = qt.QWidget()
    empty.setSizePolicy(qt.QSizePolicy.Expanding,qt.QSizePolicy.Preferred)
    self.addWidget(empty)

    #
    # Subject
    #

    self.subjectNameLabel = qt.QLabel('Subject: ')    
    self.addWidget(self.subjectNameLabel)

    #
    # Save
    #
    self.saveButton = qt.QPushButton("Finish and Exit")
    self.saveButton.setFixedWidth(200)
    self.saveButton.setStyleSheet("background-color: green")
    self.addWidget(self.saveButton)
    ImportAtlas.ImportAtlasLogic().run(os.path.join(self.parameterNode.GetParameter("MNIAtlasPath"), 'DISTAL Minimal (Ewert 2017)'))
    self.saveButton.connect("clicked(bool)", self.onSaveButton)

    #
    # Update
    #

    self.updateModalities(self.parameterNode.GetParameter("subjectPath"))
    reducedToolbarLogic().loadSubjectTransforms()
    self.onModalityPressed([],self.modalityComboBox.currentText)
    self.updateToolbarFromMRML()
Пример #8
0
    def setup(self):
        ScriptedLoadableModuleWidget.setup(self)
        self.logic = CNN_Image_ClassifierLogic()
        self.moduleDir = os.path.dirname(
            slicer.modules.collect_training_images.path)

        # Instantiate and connect widgets ...

        #
        # Parameters Area
        #
        parametersCollapsibleButton = ctk.ctkCollapsibleButton()
        parametersCollapsibleButton.text = "Parameters"
        self.layout.addWidget(parametersCollapsibleButton)

        # Layout within the dummy collapsible button
        parametersFormLayout = qt.QFormLayout(parametersCollapsibleButton)

        self.modelSelector = qt.QComboBox()
        self.modelSelector.addItems(["Select model"])
        modelDirectoryContents = os.listdir(
            os.path.join(self.moduleDir, os.pardir, "Models/retrainContainer"))
        modelNames = [
            dir for dir in modelDirectoryContents
            if dir.find(".") == -1 and dir != "Dockerfile"
        ]
        self.modelSelector.addItems(["Create new model"])
        self.modelSelector.addItems(modelNames)
        parametersFormLayout.addRow(self.modelSelector)

        #
        # Apply Button
        #
        self.applyButton = qt.QPushButton("Start")
        self.applyButton.toolTip = "Run the algorithm."
        self.applyButton.enabled = False
        parametersFormLayout.addRow(self.applyButton)

        #
        # Object table
        #
        self.objectTable = qt.QTableWidget()
        self.objectTable.setColumnCount(3)
        self.objectTable.setHorizontalHeaderLabels(
            ["Name", "Found", "Confidence"])
        parametersFormLayout.addRow(self.objectTable)

        #
        # Adjust Confidence Thresholds
        #
        confidenceThresholdsCollapsibleButton = ctk.ctkCollapsibleButton()
        confidenceThresholdsCollapsibleButton.text = "Confidence Thresholds"
        self.layout.addWidget(confidenceThresholdsCollapsibleButton)

        confidenceFormLayout = qt.QFormLayout(
            confidenceThresholdsCollapsibleButton)

        self.confidenceSlider = qt.QSlider(0x1)  #horizontal slider
        self.confidenceSlider.setRange(0, 100)
        self.confidenceSlider.setTickInterval(5)
        self.confidenceSlider.setTickPosition(2)  #Ticks appear below slider
        self.confidenceSlider.setSliderPosition(80)
        self.confidenceSlider.setToolTip(
            "Set the minimum degree of confidence that must be met for an object to be considered found"
        )
        confidenceFormLayout.addRow("Confidence: ", self.confidenceSlider)
        self.confidenceLabel = qt.QLabel("80%")
        confidenceFormLayout.addRow(self.confidenceLabel)

        # connections
        self.applyButton.connect('clicked(bool)', self.onApplyButton)
        self.modelSelector.connect('currentIndexChanged(int)',
                                   self.onModelSelected)
        self.confidenceSlider.connect('sliderMoved(int)',
                                      self.onConfidenceChanged)

        # Add vertical spacer
        self.layout.addStretch(1)

        # Refresh Apply button state
        self.onSelect()

        self.webcamReference = slicer.util.getNode('Webcam_Reference')
        if not self.webcamReference:
            imageSpacing = [0.2, 0.2, 0.2]
            imageData = vtk.vtkImageData()
            imageData.SetDimensions(640, 480, 1)
            imageData.AllocateScalars(vtk.VTK_UNSIGNED_CHAR, 1)
            thresholder = vtk.vtkImageThreshold()
            thresholder.SetInputData(imageData)
            thresholder.SetInValue(0)
            thresholder.SetOutValue(0)
            # Create volume node
            self.webcamReference = slicer.vtkMRMLVectorVolumeNode()
            self.webcamReference.SetName('Webcam_Reference')
            self.webcamReference.SetSpacing(imageSpacing)
            self.webcamReference.SetImageDataConnection(
                thresholder.GetOutputPort())
            # Add volume to scene
            slicer.mrmlScene.AddNode(self.webcamReference)
            displayNode = slicer.vtkMRMLVectorVolumeDisplayNode()
            slicer.mrmlScene.AddNode(displayNode)
            self.webcamReference.SetAndObserveDisplayNodeID(
                displayNode.GetID())

        self.webcamConnectorNode = self.createWebcamPlusConnector()
        self.webcamConnectorNode.Start()
        self.setupWebcamResliceDriver()
Пример #9
0
    def setup(self):
        self.developerMode = True
        ScriptedLoadableModuleWidget.setup(self)

        # inspect current Scene and search for files called ?h_pial and ?h_white
        # if found fill the lists with relative nodes
        lhPialNode = slicer.mrmlScene.GetNodesByName(
            'lh_pial').GetItemAsObject(0)
        rhPialNode = slicer.mrmlScene.GetNodesByName(
            'rh_pial').GetItemAsObject(0)
        lhWhiteNode = slicer.mrmlScene.GetNodesByName(
            'lh_white').GetItemAsObject(0)
        rhWhiteNode = slicer.mrmlScene.GetNodesByName(
            'rh_white').GetItemAsObject(0)
        reconFileNode = slicer.mrmlScene.GetNodesByName(
            'recon').GetItemAsObject(0)

        self.gmpiCB = ctk.ctkCollapsibleButton()
        self.gmpiCB.text = "GMPI Computation"
        self.layout.addWidget(self.gmpiCB)
        self.gmpiFL = qt.QFormLayout(self.gmpiCB)

        #### Left Pial selection box
        self.leftPialCBox = slicer.qMRMLNodeComboBox()
        self.leftPialCBox.nodeTypes = (("vtkMRMLModelNode"), "")
        self.leftPialCBox.selectNodeUponCreation = True
        self.leftPialCBox.addEnabled = False
        self.leftPialCBox.removeEnabled = False
        self.leftPialCBox.noneEnabled = True
        self.leftPialCBox.showHidden = False
        self.leftPialCBox.showChildNodeTypes = False
        self.leftPialCBox.setMRMLScene(slicer.mrmlScene)
        self.leftPialCBox.setToolTip("Pick the left pial.")
        self.gmpiFL.addRow("Left Pial: ", self.leftPialCBox)

        #### Left White selection box
        self.leftWhiteCBox = slicer.qMRMLNodeComboBox()
        self.leftWhiteCBox.nodeTypes = (("vtkMRMLModelNode"), "")
        self.leftWhiteCBox.selectNodeUponCreation = True
        self.leftWhiteCBox.addEnabled = False
        self.leftWhiteCBox.removeEnabled = False
        self.leftWhiteCBox.noneEnabled = True
        self.leftWhiteCBox.showHidden = False
        self.leftWhiteCBox.showChildNodeTypes = False
        self.leftWhiteCBox.setMRMLScene(slicer.mrmlScene)
        self.leftWhiteCBox.setToolTip("Pick the left pial.")

        #### Right Pial selection box
        self.rightPialCBox = slicer.qMRMLNodeComboBox()
        self.rightPialCBox.nodeTypes = (("vtkMRMLModelNode"), "")
        self.rightPialCBox.selectNodeUponCreation = True
        self.rightPialCBox.addEnabled = False
        self.rightPialCBox.removeEnabled = False
        self.rightPialCBox.noneEnabled = True
        self.rightPialCBox.showHidden = False
        self.rightPialCBox.showChildNodeTypes = False
        self.rightPialCBox.setMRMLScene(slicer.mrmlScene)
        self.rightPialCBox.setToolTip("Pick the right pial.")
        self.gmpiFL.addRow("Right Pial: ", self.rightPialCBox)

        #### Right White selection box
        self.rightWhiteCBox = slicer.qMRMLNodeComboBox()
        self.rightWhiteCBox.nodeTypes = (("vtkMRMLModelNode"), "")
        self.rightWhiteCBox.selectNodeUponCreation = True
        self.rightWhiteCBox.addEnabled = False
        self.rightWhiteCBox.removeEnabled = False
        self.rightWhiteCBox.noneEnabled = True
        self.rightWhiteCBox.showHidden = False
        self.rightWhiteCBox.showChildNodeTypes = False
        self.rightWhiteCBox.setMRMLScene(slicer.mrmlScene)
        self.rightWhiteCBox.setToolTip("Pick the right pial.")
        self.gmpiFL.addRow("Right White: ", self.rightWhiteCBox)
        self.gmpiFL.addRow("Left White: ", self.leftWhiteCBox)

        #### Fiducials list Combo Box
        self.fiducialsCBox = slicer.qMRMLNodeComboBox()
        self.fiducialsCBox.nodeTypes = (("vtkMRMLMarkupsFiducialNode"), "")
        self.fiducialsCBox.selectNodeUponCreation = False
        self.fiducialsCBox.addEnabled = False
        self.fiducialsCBox.removeEnabled = False
        self.fiducialsCBox.noneEnabled = True
        self.fiducialsCBox.setMRMLScene(slicer.mrmlScene)
        self.fiducialsCBox.setToolTip("Select a fiducial list")
        self.gmpiFL.addRow("Fiducial : ", self.fiducialsCBox)

        # if nodes already exist load them in ComboBoxes
        if lhWhiteNode:
            self.leftWhiteCBox.setCurrentNode(lhWhiteNode)
        if rhWhiteNode:
            self.rightWhiteCBox.setCurrentNode(rhWhiteNode)
        if rhPialNode:
            self.rightPialCBox.setCurrentNode(rhPialNode)
        if lhPialNode:
            self.leftPialCBox.setCurrentNode(lhPialNode)

        if reconFileNode:
            self.fiducialsCBox.setCurrentNode(reconFileNode)

        #### GMPI Threshold Slider
        self.gmpiSlider = qt.QSlider(qt.Qt.Horizontal)
        self.gmpiSlider.setMinimum(-9)
        self.gmpiSlider.setMaximum(9)
        self.gmpiSlider.setValue(-3)

        #### GMPI Spin Box
        self.gmpiSpinBox = qt.QDoubleSpinBox()
        self.gmpiSpinBox.setRange(-1, 1)
        self.gmpiSpinBox.setSingleStep(0.1)
        self.gmpiSpinBox.setValue(float(self.gmpiSlider.value) / 10)

        #### GMPI Slider e SpinBox Layout
        # self.gmpiverticalLayout = qt.QHBoxLayout()
        #
        # self.gmpiverticalLayout.addWidget(self.gmpiSlider)
        # self.gmpiverticalLayout.addWidget(self.gmpiSpinBox)
        # self.gmpiFL.addRow("GMPI Threshold : ", self.gmpiverticalLayout)

        # GMPI Computation Detection button
        self.gmpiPB = qt.QPushButton("Apply")
        self.gmpiPB.toolTip = "Run the algorithm."
        self.gmpiPB.enabled = True

        # Create montage files
        self.montagePB = qt.QPushButton("Create Montage")
        self.montagePB.toolTip = "Create Montage"
        self.montagePB.enabled = True

        #### Aggiungo il bottone al layout
        self.gmpiFL.addRow(self.gmpiPB)
        # self.gmpiFL.addRow(self.montagePB)

        # connections
        self.gmpiPB.connect('clicked(bool)', self.onGMPIComputation)