Exemplo n.º 1
0
    def __init__(self, parent=None, signalManager=None):
        self.callbackDeposit = []  # deposit for OWGUI callback functions
        OWWidget.__init__(self, parent, signalManager,
                          'Impute & Loess Profiles')

        self._data = None  # exampleTable
        self._dataMA = None  # input 2d masked array
        self._chipdata = None  # [(dirname0, [et0, et1, ...]), ...]
        self._chipdataMA = []  # [(dirname0, [m2d0, m2d1, ...]), ...]
        self.impute = 1
        self.imputeK = 20
        self.smooth = 1
        self.windowSize = 3
        self.commitOnChange = 1

        # Settings
        self.loadSettings()

        # GUI
        self.mainArea.setFixedWidth(0)
        ca = QFrame(self.controlArea)
        gl = QGridLayout(ca, 4, 1, 5)
        # info
        box = QVGroupBox("Info", ca)
        gl.addWidget(box, 0, 0)
        self.infoa = QLabel("No examples on input", box)
        self.infob = QLabel("", box)
        QLabel("", box)
        self.infoc = QLabel("No structured data on input", box)
        self.infod = QLabel("", box)
        # KNN impute
        self.boxImpute = QVGroupBox("Impute missing values", ca)
        gl.addWidget(self.boxImpute, 1, 0)
        OWGUI.checkBox(
            self.boxImpute,
            self,
            "impute",
            "KNN impute",
            tooltip=
            "Impute missing values from values of K nearest neighbours.",
            callback=self.change)
        ##        self.sliderK = OWGUI.hSlider(self.boxImpute, self, "imputeK", box=None, minValue=1, maxValue=7744, step=1, callback=self.imputeChange, labelFormat=" K = %i", ticks=0)
        ##        self.sliderK = OWGUI.qwtHSlider(self.boxImpute, self, "imputeK", box=None, label="K", labelWidth=12, minValue=1, maxValue=7744, step=0.02, precision=0, callback=self.imputeChange, logarithmic=1, ticks=0, maxWidth=200)
        ##        self.sliderK = OWGUI.qwtHSlider(self.boxImpute, self, "imputeK", box=None, label="K", labelWidth=12, minValue=1, maxValue=100, step=1, precision=0, callback=self.imputeKChange, logarithmic=0, ticks=0, maxWidth=200)
        self.sliderK = OWGUI.qwtHSlider(self.boxImpute,
                                        self,
                                        "imputeK",
                                        box=None,
                                        label="K",
                                        labelWidth=15,
                                        minValue=1,
                                        maxValue=999,
                                        step=1,
                                        precision=0,
                                        callback=self.imputeKChange,
                                        logarithmic=0,
                                        ticks=0,
                                        maxWidth=None)
        self.boxImpute.setDisabled(1)
        # loess
        self.boxLoess = QVGroupBox("Smoothing", ca)
        gl.addWidget(self.boxLoess, 2, 0)
        OWGUI.checkBox(self.boxLoess,
                       self,
                       "smooth",
                       "Loess smoothing",
                       tooltip="Loess profiles, impute missing columns.",
                       callback=self.change)
        lbl = QLabel("Window size (number of points)", self.boxLoess)
        lbl.setAlignment(Qt.AlignHCenter)
        self.sliderW = OWGUI.qwtHSlider(self.boxLoess,
                                        self,
                                        "windowSize",
                                        box=None,
                                        label="W",
                                        labelWidth=15,
                                        minValue=1,
                                        maxValue=999,
                                        step=1,
                                        precision=0,
                                        callback=self.smoothWChange,
                                        logarithmic=0,
                                        ticks=0,
                                        maxWidth=None)
        self.boxLoess.setDisabled(1)
        # output
        box = QVGroupBox("Output", ca)
        gl.addWidget(box, 3, 0)
        OWGUI.checkBox(box, self, 'commitOnChange',
                       'Commit data on selection change')
        self.commitBtn = OWGUI.button(box,
                                      self,
                                      "Commit",
                                      callback=self.senddata,
                                      disabled=1)

        self.inputs = [("Examples", ExampleTable, self.data),
                       ("Structured Data", DataFiles, self.chipdata)]
        self.outputs = [("Examples", ExampleTable),
                        ("Structured Data", DataFiles)]

        # data dependent variables
        self.numRowsMissing = 0
        self.numRowsMissingChipData = 0
        self.resize(100, 100)
Exemplo n.º 2
0
    def __init__(self, parent=None, signalManager = None):
#        self.callbackDeposit = [] # deposit for OWGUI callback functions
        OWWidget.__init__(self, parent, signalManager, 'Expression Profiles', 1)

        #set default settings
        self.ShowAverageProfile = 1
        self.ShowSingleProfiles = 0
        self.PointWidth = 2
        self.CurveWidth = 1
        self.AverageCurveWidth = 4
        self.BoxPlotWidth = 2
        self.SelectedClasses = []
        self.Classes = []
        self.autoSendSelected = 0
        self.selectionChangedFlag = False

        self.CutLow = 0; self.CutHigh = 0; self.CutEnabled = 0
        
        self.profileLabel = None

        #load settings
        self.loadSettings()

        # GUI
        self.graph = profilesGraph(self, self.mainArea, "")
        self.mainArea.layout().addWidget(self.graph)
        self.graph.hide()
        self.connect(self.graphButton, SIGNAL("clicked()"), self.graph.saveToFile)

        # GUI definition
        self.tabs = OWGUI.tabWidget(self.space)

        # GRAPH TAB
        GraphTab = OWGUI.createTabPage(self.tabs, "Graph")

        ## display options
        self.infoLabel = OWGUI.widgetLabel(OWGUI.widgetBox(GraphTab, "Info"), "No data on input.")
        displayOptBox = OWGUI.widgetBox(GraphTab, "Display") #QVButtonGroup("Display", GraphTab)
        displayOptButtons = ['Majority Class', 'Majority Class Probability', 'Target Class Probability', 'Number of Instances']
        OWGUI.checkBox(displayOptBox, self, 'ShowSingleProfiles', 'Expression Profiles', tooltip='', callback=self.updateShowSingleProfiles)
        OWGUI.checkBox(displayOptBox, self, 'ShowAverageProfile', 'Box Plot', tooltip='', callback=self.updateShowAverageProfile)

        ## class selection (classQLB)
        self.classQVGB = OWGUI.widgetBox(GraphTab, "Classes") #QVGroupBox(GraphTab)
##        self.classQVGB.setTitle("Classes")
        self.classQLB = OWGUI.listBox(self.classQVGB, self, "SelectedClasses", "Classes", selectionMode=QListWidget.MultiSelection, callback=self.classSelectionChange) #QListBox(self.classQVGB)
##        self.classQLB.setSelectionMode(QListBox.Multi)
        self.unselectAllClassedQLB = OWGUI.button(self.classQVGB, self, "Unselect all", callback=self.SUAclassQLB) #QPushButton("(Un)Select All", self.classQVGB)
##        self.connect(self.unselectAllClassedQLB, SIGNAL("clicked()"), self.SUAclassQLB)
##        self.connect(self.classQLB, SIGNAL("selectionChanged()"), self.classSelectionChange)

        ## show single/average profile
##        self.showAverageQLB = QPushButton("Box Plot", self.classQVGB)
##        self.showAverageQLB.setToggleButton(1)
##        self.showAverageQLB.setOn(self.ShowAverageProfile)
##        self.showSingleQLB = QPushButton("Single Profiles", self.classQVGB)
##        self.showSingleQLB.setToggleButton(1)
##        self.showSingleQLB.setOn(self.ShowSingleProfiles)
##        self.connect(self.showAverageQLB, SIGNAL("toggled(bool)"), self.updateShowAverageProfile)
##        self.connect(self.showSingleQLB, SIGNAL("toggled(bool)"), self.updateShowSingleProfiles)

##        self.tabs.insertTab(GraphTab, "Graph")

        # SETTINGS TAB
        SettingsTab = OWGUI.createTabPage(self.tabs, "Settings") #QVGroupBox(self)

        self.profileLabelComboBox = OWGUI.comboBox(SettingsTab, self, 'profileLabel', 'Profile Labels', sendSelectedValue=True, valueType=str)
        OWGUI.hSlider(SettingsTab, self, 'PointWidth', box='Point Width', minValue=0, maxValue=9, step=1, callback=self.updatePointWidth, ticks=1)
        OWGUI.hSlider(SettingsTab, self, 'CurveWidth', box='Profile Width', minValue=1, maxValue=9, step=1, callback=self.updateCurveWidth, ticks=1)
        OWGUI.hSlider(SettingsTab, self, 'AverageCurveWidth', box='Average Profile Width', minValue=1, maxValue=9, step=1, callback=self.updateAverageCurveWidth, ticks=1)
        OWGUI.hSlider(SettingsTab, self, 'BoxPlotWidth', box='Box Plot Width', minValue=0, maxValue=9, step=1, callback=self.updateBoxPlotWidth, ticks=1)
        OWGUI.checkBox(SettingsTab, self, 'graph.renderAntialiased', "Render antialiased", callback=self.graph.setCurveRenderHints)


    ## graph y scale
        box = OWGUI.widgetBox(SettingsTab, "Threshold/ Values") #QVButtonGroup("Threshol/ Values", SettingsTab)
        OWGUI.checkBox(box, self, 'CutEnabled', "Enabled", callback=self.setCutEnabled)
        self.sliderCutLow = OWGUI.qwtHSlider(box, self, 'CutLow', label='Low:', labelWidth=33, minValue=-20, maxValue=0, step=0.1, precision=1, ticks=0, maxWidth=80, callback=self.updateYaxis)
        self.sliderCutHigh = OWGUI.qwtHSlider(box, self, 'CutHigh', label='High:', labelWidth=33, minValue=0, maxValue=20, step=0.1, precision=1, ticks=0, maxWidth=80, callback=self.updateYaxis)
        if not self.CutEnabled:
            self.sliderCutLow.box.setDisabled(1)
            self.sliderCutHigh.box.setDisabled(1)

##        self.tabs.insertTab(SettingsTab, "Settings")

        self.toolbarSelection = ZoomSelectToolbar(self, self.controlArea, self.graph, self.autoSendSelected, buttons=(ZoomSelectToolbar.IconZoom, ZoomSelectToolbar.IconPan, ZoomSelectToolbar.IconSelect, ZoomSelectToolbar.IconSpace,
                                                                       ZoomSelectToolbar.IconRemoveLast, ZoomSelectToolbar.IconRemoveAll, ZoomSelectToolbar.IconSendSelection))
        cb = OWGUI.checkBox(self.controlArea, self, "autoSendSelected", "Auto send on selection change")
        OWGUI.setStopper(self, self.toolbarSelection.buttonSendSelections, cb, "selectionChangedFlag", self.commit)
        
        # inputs
        # data and graph temp variables
        
        self.inputs = [("Examples", ExampleTable, self.data, Default + Multiple)]
        self.outputs = [("Examples", ExampleTable, Default)]

        # temp variables
        self.MAdata = []
        self.classColor = None
        self.classBrighterColor = None
        self.numberOfClasses  = 0
        self.classValues = []
        self.ctrlPressed = False
        self.attrIcons = self.createAttributeIconDict()

        self.graph.canvas().setMouseTracking(1)

#        self.zoomStack = []
##        self.connect(self.graph,
##                     SIGNAL('plotMousePressed(const QMouseEvent&)'),
##                     self.onMousePressed)
##        self.connect(self.graph,
##                     SIGNAL('plotMouseReleased(const QMouseEvent&)'),
##                     self.onMouseReleased)
        self.resize(800,600)
Exemplo n.º 3
0
    def __init__(self, parent=None, signalManager=None):
        #        self.callbackDeposit = [] # deposit for OWGUI callback functions
        OWWidget.__init__(self, parent, signalManager, 'Expression Profiles',
                          1)

        #set default settings
        self.ShowAverageProfile = 1
        self.ShowSingleProfiles = 0
        self.PointWidth = 2
        self.CurveWidth = 1
        self.AverageCurveWidth = 4
        self.BoxPlotWidth = 2
        self.SelectedClasses = []
        self.Classes = []
        self.autoSendSelected = 0
        self.selectionChangedFlag = False

        self.CutLow = 0
        self.CutHigh = 0
        self.CutEnabled = 0

        self.profileLabel = None

        #load settings
        self.loadSettings()

        # GUI
        self.graph = profilesGraph(self, self.mainArea, "")
        self.mainArea.layout().addWidget(self.graph)
        self.graph.hide()
        self.connect(self.graphButton, SIGNAL("clicked()"),
                     self.graph.saveToFile)

        # GUI definition
        self.tabs = OWGUI.tabWidget(self.space)

        # GRAPH TAB
        GraphTab = OWGUI.createTabPage(self.tabs, "Graph")

        ## display options
        self.infoLabel = OWGUI.widgetLabel(OWGUI.widgetBox(GraphTab, "Info"),
                                           "No data on input.")
        displayOptBox = OWGUI.widgetBox(
            GraphTab, "Display")  #QVButtonGroup("Display", GraphTab)
        displayOptButtons = [
            'Majority Class', 'Majority Class Probability',
            'Target Class Probability', 'Number of Instances'
        ]
        OWGUI.checkBox(displayOptBox,
                       self,
                       'ShowSingleProfiles',
                       'Expression Profiles',
                       tooltip='',
                       callback=self.updateShowSingleProfiles)
        OWGUI.checkBox(displayOptBox,
                       self,
                       'ShowAverageProfile',
                       'Box Plot',
                       tooltip='',
                       callback=self.updateShowAverageProfile)

        ## class selection (classQLB)
        self.classQVGB = OWGUI.widgetBox(GraphTab,
                                         "Classes")  #QVGroupBox(GraphTab)
        ##        self.classQVGB.setTitle("Classes")
        self.classQLB = OWGUI.listBox(
            self.classQVGB,
            self,
            "SelectedClasses",
            "Classes",
            selectionMode=QListWidget.MultiSelection,
            callback=self.classSelectionChange)  #QListBox(self.classQVGB)
        ##        self.classQLB.setSelectionMode(QListBox.Multi)
        self.unselectAllClassedQLB = OWGUI.button(
            self.classQVGB, self, "Unselect all", callback=self.SUAclassQLB
        )  #QPushButton("(Un)Select All", self.classQVGB)
        ##        self.connect(self.unselectAllClassedQLB, SIGNAL("clicked()"), self.SUAclassQLB)
        ##        self.connect(self.classQLB, SIGNAL("selectionChanged()"), self.classSelectionChange)

        ## show single/average profile
        ##        self.showAverageQLB = QPushButton("Box Plot", self.classQVGB)
        ##        self.showAverageQLB.setToggleButton(1)
        ##        self.showAverageQLB.setOn(self.ShowAverageProfile)
        ##        self.showSingleQLB = QPushButton("Single Profiles", self.classQVGB)
        ##        self.showSingleQLB.setToggleButton(1)
        ##        self.showSingleQLB.setOn(self.ShowSingleProfiles)
        ##        self.connect(self.showAverageQLB, SIGNAL("toggled(bool)"), self.updateShowAverageProfile)
        ##        self.connect(self.showSingleQLB, SIGNAL("toggled(bool)"), self.updateShowSingleProfiles)

        ##        self.tabs.insertTab(GraphTab, "Graph")

        # SETTINGS TAB
        SettingsTab = OWGUI.createTabPage(self.tabs,
                                          "Settings")  #QVGroupBox(self)

        self.profileLabelComboBox = OWGUI.comboBox(SettingsTab,
                                                   self,
                                                   'profileLabel',
                                                   'Profile Labels',
                                                   sendSelectedValue=True,
                                                   valueType=str)
        OWGUI.hSlider(SettingsTab,
                      self,
                      'PointWidth',
                      box='Point Width',
                      minValue=0,
                      maxValue=9,
                      step=1,
                      callback=self.updatePointWidth,
                      ticks=1)
        OWGUI.hSlider(SettingsTab,
                      self,
                      'CurveWidth',
                      box='Profile Width',
                      minValue=1,
                      maxValue=9,
                      step=1,
                      callback=self.updateCurveWidth,
                      ticks=1)
        OWGUI.hSlider(SettingsTab,
                      self,
                      'AverageCurveWidth',
                      box='Average Profile Width',
                      minValue=1,
                      maxValue=9,
                      step=1,
                      callback=self.updateAverageCurveWidth,
                      ticks=1)
        OWGUI.hSlider(SettingsTab,
                      self,
                      'BoxPlotWidth',
                      box='Box Plot Width',
                      minValue=0,
                      maxValue=9,
                      step=1,
                      callback=self.updateBoxPlotWidth,
                      ticks=1)
        OWGUI.checkBox(SettingsTab,
                       self,
                       'graph.renderAntialiased',
                       "Render antialiased",
                       callback=self.graph.setCurveRenderHints)

        ## graph y scale
        box = OWGUI.widgetBox(
            SettingsTab, "Threshold/ Values"
        )  #QVButtonGroup("Threshol/ Values", SettingsTab)
        OWGUI.checkBox(box,
                       self,
                       'CutEnabled',
                       "Enabled",
                       callback=self.setCutEnabled)
        self.sliderCutLow = OWGUI.qwtHSlider(box,
                                             self,
                                             'CutLow',
                                             label='Low:',
                                             labelWidth=33,
                                             minValue=-20,
                                             maxValue=0,
                                             step=0.1,
                                             precision=1,
                                             ticks=0,
                                             maxWidth=80,
                                             callback=self.updateYaxis)
        self.sliderCutHigh = OWGUI.qwtHSlider(box,
                                              self,
                                              'CutHigh',
                                              label='High:',
                                              labelWidth=33,
                                              minValue=0,
                                              maxValue=20,
                                              step=0.1,
                                              precision=1,
                                              ticks=0,
                                              maxWidth=80,
                                              callback=self.updateYaxis)
        if not self.CutEnabled:
            self.sliderCutLow.box.setDisabled(1)
            self.sliderCutHigh.box.setDisabled(1)

##        self.tabs.insertTab(SettingsTab, "Settings")

        self.toolbarSelection = ZoomSelectToolbar(
            self,
            self.controlArea,
            self.graph,
            self.autoSendSelected,
            buttons=(ZoomSelectToolbar.IconZoom, ZoomSelectToolbar.IconPan,
                     ZoomSelectToolbar.IconSelect, ZoomSelectToolbar.IconSpace,
                     ZoomSelectToolbar.IconRemoveLast,
                     ZoomSelectToolbar.IconRemoveAll,
                     ZoomSelectToolbar.IconSendSelection))
        cb = OWGUI.checkBox(self.controlArea, self, "autoSendSelected",
                            "Auto send on selection change")
        OWGUI.setStopper(self, self.toolbarSelection.buttonSendSelections, cb,
                         "selectionChangedFlag", self.commit)

        # inputs
        # data and graph temp variables

        self.inputs = [("Examples", ExampleTable, self.data,
                        Default + Multiple)]
        self.outputs = [("Examples", ExampleTable, Default)]

        # temp variables
        self.MAdata = []
        self.classColor = None
        self.classBrighterColor = None
        self.numberOfClasses = 0
        self.classValues = []
        self.ctrlPressed = False
        self.attrIcons = self.createAttributeIconDict()

        self.graph.canvas().setMouseTracking(1)

        #        self.zoomStack = []
        ##        self.connect(self.graph,
        ##                     SIGNAL('plotMousePressed(const QMouseEvent&)'),
        ##                     self.onMousePressed)
        ##        self.connect(self.graph,
        ##                     SIGNAL('plotMouseReleased(const QMouseEvent&)'),
        ##                     self.onMouseReleased)
        self.resize(800, 600)