Changeset 7942:47f09dea4cff in orange


Ignore:
Timestamp:
05/25/11 13:10:34 (3 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
9d1f9458e39fd35877939d6008a05adc486dc440
Message:

Bug fixes.

File:
1 edited

Legend:

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

    r7938 r7942  
    6363        self.inputMatrix = None 
    6464        self.matrixSource = "Unknown" 
    65         self.rootCluster = None 
     65        self.root_cluster = None 
    6666        self.selectedExamples = None 
    6767         
     
    237237        self.reportImage(lambda filename: buffer.save(filename, os.path.splitext(filename)[1][1:])) 
    238238         
     239    def clear(self): 
     240        self.matrix = None 
     241        self.root_cluster = None 
     242        self.selected_clusters = None 
     243        self.dendrogram.clear() 
     244        self.labelCombo.clear() 
     245         
    239246    def set_matrix(self, data): 
     247        self.clear() 
    240248        self.matrix = data 
    241249        self.closeContext() 
    242250        if not self.matrix: 
    243             self.rootCluster = None 
     251            self.root_cluster = None 
    244252            self.selectedExamples = None 
    245253            self.dendrogram.clear() 
     
    295303        """ Change the labels in the scene. 
    296304        """ 
    297          
    298305        if self.matrix is None: 
    299306            return 
     
    312319                    labels = [str(item) for item in items] 
    313320        elif self.Annotation > 1 and isinstance(items, ExampleTable): 
    314             attr = self.labelInd[self.Annotation-2] 
     321            attr = self.labelInd[min(self.Annotation - 2, len(self.labelInd) - 1)] 
    315322            labels = [str(ex[attr]) for ex in items] 
    316323        else: 
     
    323330        if self.matrix: 
    324331            self.progressBarInit() 
    325             self.rootCluster = orange.HierarchicalClustering(self.matrix, 
     332            self.root_cluster = orange.HierarchicalClustering(self.matrix, 
    326333                linkage=self.linkage[self.Linkage][1], 
    327 #                overwriteMatrix=self.OverwriteMatrix, 
    328334                progressCallback=lambda value, a: self.progressBarSet(value*100)) 
    329335            self.progressBarFinished() 
     
    331337 
    332338    def display_tree(self): 
    333         root = self.rootCluster 
     339        root = self.root_cluster 
    334340        if self.PrintDepthCheck: 
    335341            root = hierarchical.pruned(root, level=self.PrintDepth) 
     
    371377             
    372378    def on_dendrogram_geometry_change(self, geometry): 
    373         if self.rootCluster and self.dendrogram.widget: 
     379        if self.root_cluster and self.dendrogram.widget: 
    374380            widget = self.dendrogram.widget 
    375381            left, top, right, bottom = widget.layout().getContentsMargins() 
    376382            geometry = geometry.adjusted(left, top, -right, -bottom) 
    377383            self.scale_scene.set_scale_bounds(geometry.left(), geometry.right()) 
    378             self.scale_scene.set_scale(self.rootCluster.height, 0.0) 
     384            self.scale_scene.set_scale(self.root_cluster.height, 0.0) 
    379385            pos = widget.pos_at_height(self.cutoff_height) 
    380386            self.scale_scene.set_marker(pos) 
    381387             
    382388    def on_depth_change(self): 
    383         if self.rootCluster and self.dendrogram.widget: 
     389        if self.root_cluster and self.dendrogram.widget: 
    384390            selected = self.dendrogram.widget.selected_clusters() 
    385391            selected = set([(c.first, c.last) for c in selected]) 
    386             root = self.rootCluster 
     392            root = self.root_cluster 
    387393            if self.PrintDepthCheck: 
    388394                root = hierarchical.pruned(root, level=self.PrintDepth) 
     
    395401        """ Cuttof position changed due to a mouse event in the scale scene. 
    396402        """ 
    397         if self.rootCluster and self.dendrogram.cutoff_line: 
     403        if self.root_cluster and self.dendrogram.cutoff_line: 
    398404            height = self.dendrogram.widget.height_at(pos) 
    399405            self.cutoff_height = height 
     
    403409        """ Cuttof value changed due to line drag in the dendrogram. 
    404410        """ 
    405         if self.rootCluster and self.dendrogram.widget: 
     411        if self.root_cluster and self.dendrogram.widget: 
    406412            self.cutoff_height = height 
    407413            widget = self.dendrogram.widget 
     
    410416             
    411417    def update_cutoff_line(self): 
    412         try: 
     418        if self.matrix: 
    413419            if self.SelectionMode: 
    414420                self.dendrogram.cutoff_line.show() 
     
    417423                self.dendrogram.cutoff_line.hide() 
    418424                self.scale_scene.marker.hide() 
    419         except RuntimeError: # underlying C/C++ object has been deleted 
    420             pass 
    421425             
    422426    def on_selection_change(self): 
    423         try: 
    424             if self.matrix: 
    425                 items = self.dendrogram.selectedItems() 
    426                 self.selected_clusters = [item.cluster for item in items] 
    427                 self.commit_data_if() 
    428         except RuntimeError: 
    429             pass 
     427        if self.matrix: 
     428            items = self.dendrogram.selectedItems() 
     429            self.selected_clusters = [item.cluster for item in items] 
     430            self.commit_data_if() 
    430431         
    431432    def commit_data_if(self): 
     
    436437 
    437438    def commit_data(self): 
    438         items = getattr(self.matrix, "items") 
     439        items = getattr(self.matrix, "items", None) 
    439440        if not items: 
    440441            return # nothing to commit 
     
    443444        self.selectedExamples = None 
    444445        selection = self.selected_clusters 
    445         maps = [list(self.rootCluster.mapping[c.first: c.last]) for c in selection] 
     446        maps = [list(self.root_cluster.mapping[c.first: c.last]) for c in selection] 
    446447         
    447448        from operator import add 
    448449        selected_indices = sorted(reduce(add, maps, [])) 
    449         unselected_indices = sorted(set(self.rootCluster.mapping) - set(selected_indices)) 
     450        unselected_indices = sorted(set(self.root_cluster.mapping) - set(selected_indices)) 
    450451         
    451452        self.selection = selected = [items[k] for k in selected_indices] 
     
    522523       sizeDlg = OWChooseImageSizeDlg(self.dendrogram, parent=self) 
    523524       sizeDlg.exec_() 
    524  
    525 leftMargin=10 
    526 rightMargin=10 
    527 topMargin=10 
    528 bottomMargin=10 
    529 polyOffset=5 
    530 scaleHeight=20 
     525        
    531526 
    532527class DendrogramView(QGraphicsView): 
Note: See TracChangeset for help on using the changeset viewer.