Changeset 7848:4850d15b7765 in orange


Ignore:
Timestamp:
04/15/11 14:57:09 (3 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
cc1b58f2e6a34e764e0928a38dad52ad70c92b80
Message:

Using a non recursive method to construct the graphics scene's dendrogram hierarchy.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/OWClustering.py

    r7847 r7848  
    1919        self.cluster = cluster 
    2020        self.branches = [] 
    21         if cluster.branches: 
    22             for branch in cluster.branches: 
    23                 item = type(self)(branch, self) 
    24                 item.setZValue(self.zValue()-1) 
    25                 self.branches.append(item) 
    26             self.setRect(self.branches[0].rect().center().x(), 
    27                          0.0, #self.cluster.height, 
    28                          self.branches[-1].rect().center().x() - self.branches[0].rect().center().x(), 
    29                          self.cluster.height) 
    30         else: 
    31             self.setRect(cluster.first, 0, 0, 0) 
     21#        if cluster.branches: 
     22#            for branch in cluster.branches: 
     23#                item = type(self)(branch, self) 
     24#                item.setZValue(self.zValue()-1) 
     25#                self.branches.append(item) 
     26#            self.setRect(self.branches[0].rect().center().x(), 
     27#                         0.0, #self.cluster.height, 
     28#                         self.branches[-1].rect().center().x() - self.branches[0].rect().center().x(), 
     29#                         self.cluster.height) 
     30#        else: 
     31#            self.setRect(cluster.first, 0, 0, 0) 
    3232        self.setFlags(QGraphicsItem.ItemIsSelectable) 
    3333        self.setPen(self.standardPen) 
     
    3535#        self.setAcceptHoverEvents(True) 
    3636         
    37         if self.isTopLevel(): ## top level cluster 
    38             self.clusterGeometryReset() 
     37#        if self.isTopLevel(): ## top level cluster 
     38#            self.clusterGeometryReset() 
     39             
     40    @classmethod 
     41    def create(cls, cluster, *args, **kwargs): 
     42        """ Construct a hierarchy of HierarchicalClusterItem's statring with 
     43        `cluster`. 
     44         
     45        """ 
     46        items = {cluster: cls(cluster, *args, **kwargs)} 
     47        for node in hierarchical.preorder(cluster): 
     48            for branch in node.branches or []: 
     49                hci = cls(branch, items[node]) 
     50                hci.setZValue(items[node].zValue() - 1) 
     51                items[branch] = hci 
     52                items[node].branches.append(hci) 
     53        items[cluster].clusterGeometryReset() 
     54        return items[cluster] 
     55         
    3956 
    4057    def isTopLevel(self): 
Note: See TracChangeset for help on using the changeset viewer.