Changeset 7988:890670daf212 in orange


Ignore:
Timestamp:
06/06/11 15:10:33 (3 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
6b099c04d8f201ef13f6692e6174999631d522c3
Message:

Caching the computed clustering.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Unsupervised/OWDistanceMap.py

    r7878 r7988  
    7171 
    7272    def __init__(self, parent=None, signalManager = None): 
    73 #        self.callbackDeposit = [] # deposit for OWGUI callback function 
    7473        OWWidget.__init__(self, parent, signalManager, 'Distance Map', wantGraph=True) 
    7574 
     
    9291 
    9392        #set default settings 
    94         self.CellWidth = 15; self.CellHeight = 15 
    95         self.Merge = 1; 
     93        self.CellWidth = 15 
     94        self.CellHeight = 15 
     95        self.Merge = 1 
    9696        self.savedMerge = self.Merge 
    9797        self.Gamma = 1 
    9898        self.Grid = 1 
    9999        self.savedGrid = 1 
    100         self.CutLow = 0; self.CutHigh = 0; self.CutEnabled = 0 
     100        self.CutLow = 0 
     101        self.CutHigh = 0 
     102        self.CutEnabled = 0 
    101103        self.Sort = 0 
    102104        self.SquareCells = 0 
    103         self.ShowLegend = 1; 
    104         self.ShowLabels = 1; 
    105         self.ShowBalloon = 1; 
     105        self.ShowLegend = 1 
     106        self.ShowLabels = 1 
     107        self.ShowBalloon = 1 
    106108        self.ShowItemsInBalloon = 1 
    107109        self.SendOnRelease = 1 
     
    128130                         labelWidth=38, minValue=1, maxValue=self.maxHSize, 
    129131                         step=1, precision=0, 
    130                          callback=[lambda f="CellWidth", t="CellHeight": self.adjustCellSize(f,t), self.drawDistanceMap, self.manageGrid]) 
     132                         callback=[lambda f="CellWidth", t="CellHeight": self.adjustCellSize(f,t), 
     133                                   self.drawDistanceMap, 
     134                                   self.manageGrid]) 
    131135        OWGUI.qwtHSlider(box, self, "CellHeight", label='Height: ', 
    132136                         labelWidth=38, minValue=1, maxValue=self.maxVSize, 
    133137                         step=1, precision=0, 
    134                          callback=[lambda f="CellHeight", t="CellWidth": self.adjustCellSize(f,t), self.drawDistanceMap,self.manageGrid]) 
     138                         callback=[lambda f="CellHeight", t="CellWidth": self.adjustCellSize(f,t), 
     139                                   self.drawDistanceMap, 
     140                                   self.manageGrid]) 
    135141        OWGUI.checkBox(box, self, "SquareCells", "Cells as squares", 
    136142                         callback = [self.setSquares, self.drawDistanceMap]) 
    137         self.gridChkBox = OWGUI.checkBox(box, self, "Grid", "Show grid", callback = self.createDistanceMap, disabled=lambda: min(self.CellWidth, self.CellHeight) <= c_smallcell) 
     143        self.gridChkBox = OWGUI.checkBox(box, self, "Grid", "Show grid", 
     144                                         callback = self.createDistanceMap, 
     145                                         disabled=lambda: min(self.CellWidth, self.CellHeight) <= c_smallcell) 
    138146 
    139147        OWGUI.separator(tab) 
     
    148156                         callback=self.sortItems) 
    149157        OWGUI.rubber(tab) 
    150  
    151 ##        self.tabs.insertTab(tab, "Settings") 
    152158 
    153159        # FILTER TAB 
     
    172178            self.sliderCutLow.box.setDisabled(1) 
    173179            self.sliderCutHigh.box.setDisabled(1) 
    174  
    175  
    176 ##        self.colorPalette = ColorPalette(box, self, "", 
    177 ##                         additionalColors =["Cell outline", "Selected cells"], 
    178 ##                         callback = self.setColor) 
    179 ##        box.layout().addWidget(self.colorPalette) 
     180             
    180181        box = OWGUI.widgetBox(box, "Colors", orientation="horizontal") 
    181182        self.colorCombo = OWColorPalette.PaletteSelectorComboBox(self) 
     
    192193        OWGUI.rubber(tab) 
    193194 
    194         self.setColor(self.selectedSchemaIndex)         
    195  
    196 ##        self.tabs.insertTab(tab, "Colors") 
     195        self.setColor(self.selectedSchemaIndex) 
    197196 
    198197        # INFO TAB 
     
    221220        OWGUI.checkBox(box, self, 'SendOnRelease', "Send after mouse release") 
    222221        OWGUI.rubber(tab) 
    223 ##        self.tabs.insertTab(tab, "Info") 
    224222 
    225223        self.resize(700,400) 
     
    231229        #construct selector 
    232230        self.selector = QGraphicsRectItem(0, 0, self.CellWidth, self.CellHeight, None, self.scene) 
    233 ##        color = self.colorPalette.getCurrentColorSchema().getAdditionalColors()["Cell outline"] 
    234231        color = self.cellOutlineColor 
    235232        self.selector.setPen(QPen(self.qrgbToQColor(color),v_sel_width)) 
    236233        self.selector.setZValue(20) 
    237234 
    238 ##        self.bubble = BubbleInfo(self.scene) 
    239235        self.selection = SelectionManager() 
    240236 
     
    250246        self.errorText.setPos(10,10) 
    251247         
    252 #        OWGUI.button(self.controlArea, self, "&Save Graph", lambda:OWChooseImageSizeDlg(self.scene).exec_(), debuggingEnabled = 0) 
    253248        self.connect(self.graphButton, SIGNAL("clicked()"), lambda:OWChooseImageSizeDlg(self.scene, parent=self).exec_()) 
    254249 
    255  
    256         #restore color schemas from settings 
    257 ##        if self.ColorSchemas: 
    258 ##            self.colorPalette.setColorSchemas(self.ColorSchemas) 
     250        self._clustering_cache = {} 
    259251 
    260252    def sendReport(self): 
     
    807799 
    808800    def sortClustering(self): 
    809         self.rootCluster=orange.HierarchicalClustering(self.matrix, 
     801        cluster = self._clustering_cache.get("sort clustering", None) 
     802        if cluster is None: 
     803            cluster = orange.HierarchicalClustering(self.matrix, 
    810804                linkage=orange.HierarchicalClustering.Average) 
     805            # Cache the cluster 
     806            self._clustering_cache["sort clustering"] = cluster 
     807        self.rootCluster = cluster 
    811808        self.order = list(self.rootCluster.mapping) 
    812  
     809         
    813810    def sortClusteringOrdered(self): 
    814         self.rootCluster=orange.HierarchicalClustering(self.matrix, 
     811        cluster = self._clustering_cache.get("sort ordered clustering", None) 
     812        if cluster is None: 
     813            cluster = orange.HierarchicalClustering(self.matrix, 
    815814                linkage=orange.HierarchicalClustering.Average) 
    816         import orngClustering 
    817         self.progressBarInit() 
    818         orngClustering.orderLeaves(self.rootCluster, self.matrix, self.progressBarSet) 
    819         self.progressBarFinished() 
     815            import orngClustering 
     816            self.progressBarInit() 
     817            orngClustering.orderLeaves(cluster, self.matrix, self.progressBarSet) 
     818            self.progressBarFinished() 
     819            # Cache the cluster 
     820            self._clustering_cache["sort ordered clustering"] = cluster 
     821        self.rootCluster = cluster 
    820822        self.order = list(self.rootCluster.mapping) 
    821          
    822823 
    823824    def sortItems(self): 
     
    830831        self.send("Examples", None) 
    831832        self.send("Attribute List", None) 
     833        self._clustering_cache.clear() 
    832834 
    833835        if not matrix: 
Note: See TracChangeset for help on using the changeset viewer.