Changeset 415:1c9e68cb3a06 in orange-bioinformatics


Ignore:
Timestamp:
07/08/08 13:04:00 (6 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
06169f30bdef090caf0b05436817ccdf55b2bb52
Message:

-moved to PyQt4 and Qwt5

File:
1 edited

Legend:

Unmodified
Added
Removed
  • widgets/OWDisplayProfiles.py

    r188 r415  
    2525 
    2626class boxPlotQwtPlotCurve(QwtPlotCurve): 
    27     def __init__(self, parent = None, text = None, connectPoints = 1, tickXw = 1.0/5.0): 
    28         QwtPlotCurve.__init__(self, parent, text) 
     27    def __init__(self, text = None, connectPoints = 1, tickXw = 1.0/5.0): 
     28        QwtPlotCurve.__init__(self, QwtText(text)) 
    2929        self.connectPoints = connectPoints 
    3030        self.tickXw = tickXw 
    3131        self.boxPlotPenWidth = 2 
    3232 
    33     def draw(self, p, xMap, yMap, f, t): 
     33    def draw(self, p, xMap, yMap, f=-1, t=0): 
    3434        # save ex settings 
    35         pen = p.pen() 
    36         brush = p.brush() 
     35##        pen = p.pen() 
     36##        brush = p.brush() 
     37        p.save() 
     38        if type(f)==QRect: 
     39            f = 0 
    3740         
    3841        p.setBackgroundMode(Qt.OpaqueMode) 
    3942        p.setPen(self.pen()) 
    40         if self.style() == QwtCurve.UserCurve: 
     43        if self.style() == QwtPlotCurve.UserCurve: 
    4144            back = p.backgroundMode() 
    4245            p.setBackgroundMode(Qt.OpaqueMode) 
     
    9295 
    9396        # restore ex settings 
    94         p.setPen(pen) 
    95         p.setBrush(brush) 
     97        p.restore() 
     98##        p.setPen(pen) 
     99##        p.setBrush(brush) 
    96100 
    97101    def setBoxPlotPenWidth(self, v): 
    98102        self.boxPlotPenWidth = v 
     103        self.itemChanged() 
    99104 
    100105class profilesGraph(OWGraph): 
     
    123128 
    124129    def removeCurves(self): 
    125         OWGraph.removeCurves(self) 
     130##        OWGraph.removeCurves(self) 
     131        self.clear() 
    126132        self.classColor = None 
    127133        self.classBrighterColor = None 
     
    198204                        xcn += 1 
    199205                        vcn += 1 
    200                     ckey = self.insertCurve('') 
     206                    curve = self.addCurve('', style = QwtPlotCurve.Lines) 
    201207                    if self.showAverageProfile: 
    202                         self.setCurvePen(ckey, QPen(self.classColor[ccn], 1)) 
     208                        curve.setPen(QPen(self.classColor[ccn], 1)) 
    203209                    else: 
    204                         self.setCurvePen(ckey, QPen(self.classBrighterColor[ccn], 1)) 
    205                     self.setCurveData(ckey, x, y) 
    206                     self.setCurveSymbol(ckey, classSymb) 
    207                     self.profileCurveKeys[-1].append(ckey) 
     210                        curve.setPen(QPen(self.classBrighterColor[ccn], 1)) 
     211                    curve.setData(x, y) 
     212                    curve.setSymbol(classSymb) 
     213                    self.profileCurveKeys[-1].append(curve) 
    208214 
    209215                ## average profile and box plot 
     
    263269        for (x, y, tmpCcn) in boxPlotCurveData: 
    264270            classSymb = QwtSymbol(QwtSymbol.Cross, QBrush(self.classBrighterColor[tmpCcn]), QPen(self.classBrighterColor[tmpCcn]), QSize(8,8)) 
    265             curve = boxPlotQwtPlotCurve(self, '', connectPoints = 1, tickXw = 1.0/5.0) 
    266             ckey = self.insertCurve(curve) 
    267             self.setCurvePen(ckey, QPen(self.classBrighterColor[tmpCcn], 3)) 
    268             self.setCurveStyle(ckey, QwtCurve.UserCurve) 
    269             self.setCurveSymbol(ckey, classSymb) 
    270             self.setCurveData(ckey, x, y) 
    271             self.averageProfileCurveKeys[tmpCcn].append(ckey) 
     271            curve = boxPlotQwtPlotCurve('', connectPoints = 1, tickXw = 1.0/5.0) 
     272            curve.attach(self) 
     273            curve.setPen(QPen(self.classBrighterColor[tmpCcn], 3)) 
     274            curve.setStyle(QwtPlotCurve.UserCurve) 
     275            curve.setSymbol(classSymb) 
     276            curve.setData(x, y) 
     277            self.averageProfileCurveKeys[tmpCcn].append(curve) 
    272278 
    273279        ## generate labels for attributes 
     
    277283                labels.append( a.name) 
    278284 
    279         self.setXlabels(labels) 
     285        if None:  
     286            self.setXlabels(labels) 
    280287        self.updateCurveDisplay() 
    281288 
     
    288295            bAve = showCNum and self.showAverageProfile ## 1 = show average profiles for now 
    289296            for ckey in self.profileCurveKeys[cNum]: 
    290                 curve =  self.curve(ckey) 
     297                curve =  ckey #self.curve(ckey) 
    291298                if curve <> None: 
    292                     curve.setEnabled(bSingle) 
    293                     qp = self.curvePen(ckey) 
     299                    curve.setVisible(bSingle) 
     300##                    qp = self.curvePen(ckey) 
     301                    qp = curve.pen() 
    294302                    if not(bAve): 
    295303                        qp.setColor(self.classBrighterColor[cNum]) 
    296304                    else: 
    297305                        qp.setColor(self.classColor[cNum]) 
    298                     self.setCurvePen(ckey, qp) 
     306##                    curve.setPen(qp) 
    299307 
    300308            ## average profiles 
    301309            for ckey in self.averageProfileCurveKeys[cNum]: 
    302                 curve =  self.curve(ckey) 
    303                 if curve <> None: curve.setEnabled(bAve) 
    304  
    305         self.updateLayout() 
    306         self.update() 
     310                curve =  ckey #self.curve(ckey) 
     311                if curve <> None: curve.setVisible(bAve) 
     312 
     313##        self.updateLayout() 
     314        self.replot() 
    307315 
    308316    def setShowClasses(self, list): 
     
    320328    def setPointWidth(self, v): 
    321329        for cNum in range(len(self.showClasses)): 
    322             for ckey in self.profileCurveKeys[cNum]: 
    323                 symb = self.curveSymbol(ckey) 
     330            for curve in self.profileCurveKeys[cNum]: 
     331                symb = curve.symbol() 
    324332                symb.setSize(v, v) 
    325                 self.setCurveSymbol(ckey, symb) 
    326         self.update() 
     333##                curve.setSymbol(symb) 
     334        self.replot() 
    327335 
    328336    def setCurveWidth(self, v): 
    329337        for cNum in range(len(self.showClasses)): 
    330             for ckey in self.profileCurveKeys[cNum]: 
    331                 qp = self.curvePen(ckey) 
     338            for curve in self.profileCurveKeys[cNum]: 
     339                qp = curve.pen() 
    332340                qp.setWidth(v) 
    333                 self.setCurvePen(ckey, qp) 
    334         self.update() 
     341##                curve.setPen(qp) 
     342        self.replot() 
    335343 
    336344    def setAverageCurveWidth(self, v): 
    337345        for cNum in range(len(self.showClasses)): 
    338             for ckey in self.averageProfileCurveKeys[cNum]: 
    339                 qp = self.curvePen(ckey) 
     346            for curve in self.averageProfileCurveKeys[cNum]: 
     347                qp = curve.pen() 
    340348                qp.setWidth(v) 
    341                 self.setCurvePen(ckey, qp) 
    342         self.update() 
     349##                curve.setPen(qp) 
     350        self.replot() 
    343351 
    344352    def setBoxPlotWidth(self, v): 
    345353        for cNum in range(len(self.showClasses)): 
    346             for ckey in self.averageProfileCurveKeys[cNum]: 
    347                 c = self.curve(ckey) 
    348                 c.setBoxPlotPenWidth(v) 
    349                 c.curveChanged() 
    350         self.update() 
     354            for curve in self.averageProfileCurveKeys[cNum]: 
     355##                c = self.curve(ckey) 
     356                curve.setBoxPlotPenWidth(v) 
     357        self.replot() 
    351358 
    352359    def sizeHint(self): 
     
    372379        self.AverageCurveWidth = 4 
    373380        self.BoxPlotWidth = 2 
     381        self.SelectedClasses = [] 
    374382 
    375383        self.CutLow = 0; self.CutHigh = 0; self.CutEnabled = 0 
     
    379387 
    380388        # GUI 
    381         self.layout=QVBoxLayout(self.mainArea) 
    382389        self.graph = profilesGraph(self.mainArea, "") 
    383         self.layout.add(self.graph) 
     390        self.mainArea.layout().addWidget(self.graph) 
    384391        self.graph.hide() 
    385392        self.connect(self.graphButton, SIGNAL("clicked()"), self.graph.saveToFile) 
    386393 
    387394        # GUI definition 
    388         self.tabs = QTabWidget(self.space, 'tabWidget') 
     395        self.tabs = OWGUI.tabWidget(self.space) 
    389396 
    390397        # GRAPH TAB 
    391         GraphTab = QVGroupBox(self) 
     398        GraphTab = OWGUI.createTabPage(self.tabs, "Graph") 
    392399 
    393400        ## display options 
    394         displayOptBox = QVButtonGroup("Display", GraphTab) 
     401        displayOptBox = OWGUI.widgetBox(GraphTab, "Display") #QVButtonGroup("Display", GraphTab) 
    395402        displayOptButtons = ['Majority Class', 'Majority Class Probability', 'Target Class Probability', 'Number of Instances'] 
    396403        OWGUI.checkBox(displayOptBox, self, 'ShowSingleProfiles', 'Expression Profiles', tooltip='', callback=self.updateShowSingleProfiles) 
     
    398405 
    399406        ## class selection (classQLB) 
    400         self.classQVGB = QVGroupBox(GraphTab) 
    401         self.classQVGB.setTitle("Classes") 
    402         self.classQLB = QListBox(self.classQVGB) 
    403         self.classQLB.setSelectionMode(QListBox.Multi) 
    404         self.unselectAllClassedQLB = QPushButton("(Un)Select All", self.classQVGB) 
    405         self.connect(self.unselectAllClassedQLB, SIGNAL("clicked()"), self.SUAclassQLB) 
    406         self.connect(self.classQLB, SIGNAL("selectionChanged()"), self.classSelectionChange) 
     407        self.classQVGB = OWGUI.widgetBox(GraphTab, "Classes") #QVGroupBox(GraphTab) 
     408##        self.classQVGB.setTitle("Classes") 
     409        self.classQLB = OWGUI.listBox(self.classQVGB, self, "SelectedClasses", selectionMode=QListWidget.MultiSelection, callback=self.classSelectionChange) #QListBox(self.classQVGB) 
     410##        self.classQLB.setSelectionMode(QListBox.Multi) 
     411        self.unselectAllClassedQLB = OWGUI.button(self.classQVGB, self, "(Un)Select All", callback=self.SUAclassQLB) #QPushButton("(Un)Select All", self.classQVGB) 
     412##        self.connect(self.unselectAllClassedQLB, SIGNAL("clicked()"), self.SUAclassQLB) 
     413##        self.connect(self.classQLB, SIGNAL("selectionChanged()"), self.classSelectionChange) 
    407414 
    408415        ## show single/average profile 
     
    416423##        self.connect(self.showSingleQLB, SIGNAL("toggled(bool)"), self.updateShowSingleProfiles) 
    417424 
    418         self.tabs.insertTab(GraphTab, "Graph") 
     425##        self.tabs.insertTab(GraphTab, "Graph") 
    419426 
    420427        # SETTINGS TAB 
    421         SettingsTab = QVGroupBox(self) 
     428        SettingsTab = OWGUI.createTabPage(self.tabs, "Settings") #QVGroupBox(self) 
    422429 
    423430        OWGUI.hSlider(SettingsTab, self, 'PointWidth', box='Point Width', minValue=0, maxValue=9, step=1, callback=self.updatePointWidth, ticks=1) 
     
    427434 
    428435 
    429     ## graph y scale 
    430         box = QVButtonGroup("Threshol/ Values", SettingsTab) 
     436    ## graph y scale 
     437        box = OWGUI.widgetBox(SettingsTab, "Threshold/ Values") #QVButtonGroup("Threshol/ Values", SettingsTab) 
    431438        OWGUI.checkBox(box, self, 'CutEnabled', "Enabled", callback=self.setCutEnabled) 
    432439        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) 
     
    436443            self.sliderCutHigh.box.setDisabled(1) 
    437444 
    438         self.tabs.insertTab(SettingsTab, "Settings") 
     445##        self.tabs.insertTab(SettingsTab, "Settings") 
    439446         
    440447        # inputs 
     
    454461 
    455462        self.zoomStack = [] 
    456         self.connect(self.graph, 
    457                      SIGNAL('plotMousePressed(const QMouseEvent&)'), 
    458                      self.onMousePressed) 
    459         self.connect(self.graph, 
    460                      SIGNAL('plotMouseReleased(const QMouseEvent&)'), 
    461                      self.onMouseReleased) 
     463##        self.connect(self.graph, 
     464##                     SIGNAL('plotMousePressed(const QMouseEvent&)'), 
     465##                     self.onMousePressed) 
     466##        self.connect(self.graph, 
     467##                     SIGNAL('plotMouseReleased(const QMouseEvent&)'), 
     468##                     self.onMouseReleased) 
    462469        self.resize(800,600) 
    463470 
     
    574581    ## class selection (classQLB) 
    575582    def classSelectionChange(self): 
    576         list = [] 
    577         selCls = [] 
    578         for i in range(self.classQLB.count()): 
    579             if self.classQLB.isSelected(i): 
    580                 list.append( 1 ) 
    581                 selCls.append(self.classValues[i]) 
    582             else: 
    583                 list.append( 0 ) 
     583##        list = [] 
     584##        selCls = [] 
     585##        for i in range(self.classQLB.count()): 
     586##            if self.classQLB.isSelected(i): 
     587##                list.append( 1 ) 
     588##                selCls.append(self.classValues[i]) 
     589##            else: 
     590##                list.append( 0 ) 
     591        list = [1 if i in self.SelectedClasses else 0 for i in range(self.classQLB.count())] 
     592        selCls = [self.classValues[i] for i in self.SelectedClasses] 
    584593        self.graph.setShowClasses(list) 
    585594        if selCls == []: 
     
    618627        self.graph.setCurveWidth(self.CurveWidth) 
    619628        self.graph.setAverageCurveWidth(self.AverageCurveWidth) 
    620     self.graph.setBoxPlotWidth(self.BoxPlotWidth) 
     629        self.graph.setBoxPlotWidth(self.BoxPlotWidth) 
    621630 
    622631        self.graph.setAxisAutoScale(QwtPlot.xBottom) 
     
    644653            else: 
    645654                self.classValues = [str(nd.name) for nd in self.MAdata] 
    646                  
     655 
     656            print self.classValues 
    647657            for cn in range(len(self.classValues)): 
    648                 self.classQLB.insertItem(ColorPixmap(self.classBrighterColor[cn]), self.classValues[cn]) 
    649             self.classQLB.selectAll(1)  ##or: if numberOfClasses > 0: self.classQLB.setSelected(0, 1) 
    650             self.update() 
     658                self.classQLB.addItem(QListWidgetItem(QIcon(ColorPixmap(self.classBrighterColor[cn])), self.classValues[cn])) 
     659##            self.classQLB.selectAll()  ##or: if numberOfClasses > 0: self.classQLB.setSelected(0, 1) 
     660##            self.update() 
    651661 
    652662            if len(self.MAdata) == 1 and self.MAdata[0].noclass: 
    653                 self.classQVGB.hide() 
     663                pass 
     664##                self.classQVGB.hide() 
    654665        else: 
    655666            self.classColor = None 
    656667            self.classBrighterColor = None 
    657668            self.classValues = [] 
    658         self.classQVGB.update() 
    659         self.classQVGB.layout().activate() 
     669##        self.classQVGB.update() 
     670##        self.classQVGB.layout().activate() 
    660671        self.graph.show() 
    661         self.layout.activate() # this is needed to scale the widget correctly 
     672##        self.layout.activate() # this is needed to scale the widget correctly 
    662673 
    663674    def data(self, MAdata, id=None): 
     
    699710 
    700711        if len(self.MAdata) == 0: 
     712            print "hiding graph" 
    701713            self.graph.hide() 
    702714            self.classQVGB.hide() 
     
    717729    a = QApplication(sys.argv) 
    718730    owdm = OWDisplayProfiles() 
    719     a.setMainWidget(owdm) 
     731##    a.setMainWidget(owdm) 
    720732    d = orange.ExampleTable('wt with class') 
    721733    print len(d) 
    722734    owdm.data(d) 
    723735    owdm.show() 
    724     a.exec_loop() 
     736    a.exec_() 
    725737    owdm.saveSettings() 
Note: See TracChangeset for help on using the changeset viewer.