Changeset 3657:9c5a2ce01675 in orange


Ignore:
Timestamp:
05/15/07 15:03:47 (7 years ago)
Author:
martinm <martinm@…>
Branch:
default
Convert:
2edc2e19fb94875f8587d020832f5fde714bb446
Message:

Leaks less now.

Location:
orange/OrangeWidgets/Classify
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Classify/OWNomogram.py

    r3474 r3657  
    206206        else: 
    207207            priorError = 0 
    208         self.bnomogram = BasicNomogram(self, AttValue("Constant", math.log(prior), error = priorError)) 
     208 
     209        if self.bnomogram: 
     210            self.bnomogram.destroy_and_init(self, AttValue("Constant", math.log(prior), error = priorError)) 
     211        else: 
     212            self.bnomogram = BasicNomogram(self, AttValue("Constant", math.log(prior), error = priorError)) 
    209213 
    210214        if self.data: 
     
    212216 
    213217        for at in range(len(att)): 
     218            a = None 
    214219            if att[at].varType == orange.VarTypes.Discrete: 
    215220                if att[at].ordered: 
     
    231236                         
    232237                    a.addAttValue(AttValue(str(cd), beta, lineWidth=thickness, error = se)) 
     238                     
    233239            else: 
    234240                a = AttrLineCont(att[at].name, self.bnomogram) 
     
    282288                # invert values: 
    283289            # if there are more than 1 value in the attribute, add it to the nomogram 
    284             if len(a.attValues)>1: 
     290            if a and len(a.attValues)>1: 
    285291                self.bnomogram.addAttribute(a) 
    286292 
     
    295301            mult = 1 
    296302 
    297         self.bnomogram = BasicNomogram(self, AttValue('Constant', mult*cl.beta[0], error = 0)) 
    298         a = None 
     303        if self.bnomogram: 
     304            self.bnomogram.destroy_and_init(self, AttValue('Constant', mult*cl.beta[0], error = 0)) 
     305        else: 
     306            self.bnomogram = BasicNomogram(self, AttValue('Constant', mult*cl.beta[0], error = 0))             
    299307 
    300308        # After applying feature subset selection on discrete attributes 
     
    395403#                        QMessageBox.NoButton, QMessageBox.NoButton, QMessageBox.NoButton, self).show() 
    396404            return 
    397          
    398         self.bnomogram = BasicNomogram(self, AttValue('Constant', -mult*math.log((1.0/min(max(visualizer.probfunc(0.0),aproxZero),0.9999))-1), 0)) 
     405 
     406        if self.bnomogram: 
     407            self.bnomogram.destroy_and_init(self, AttValue('Constant', -mult*math.log((1.0/min(max(visualizer.probfunc(0.0),aproxZero),0.9999))-1), 0)) 
     408        else: 
     409            self.bnomogram = BasicNomogram(self, AttValue('Constant', -mult*math.log((1.0/min(max(visualizer.probfunc(0.0),aproxZero),0.9999))-1), 0))             
    399410 
    400411        # get maximum and minimum values in visualizer.m 
     
    805816    bayes = orange.BayesLearner(data) 
    806817    bayes.setattr("data",data) 
     818##    for i in range(100000): 
    807819    ow.classifier(bayes) 
    808820 
  • orange/OrangeWidgets/Classify/OWNomogramGraph.py

    r3170 r3657  
    268268    def __init__(self, attribute, canvas, z=50): 
    269269        apply(QCanvasEllipse.__init__,(self,10,10,canvas)) 
    270         self.attribute = attribute 
    271270        #self.canvas = canvas 
    272271        self.setZ(z) 
     
    300299        self.setBrush(QBrush(Qt.blue, self.brush().style())) 
    301300        self.descriptor.hideAll() 
    302  
    303301 
    304302 
     
    513511            val[i].high_errorX = atErrors_mapped[i][1] 
    514512            val[i].low_errorX = atErrors_mapped[i][0] 
    515             a = time.time() 
    516513            if canvas.parent.confidence_check and val[i].error>0: 
    517514                val[i].showErr = True 
     
    598595    # string representation of attribute 
    599596    def toString(self): 
    600         return self.name + str([at.toString() for at in self.attValues])         
    601          
     597        return self.name + str([at.toString() for at in self.attValues]) 
    602598 
    603599 
     
    623619    # initialization before 2d paint 
    624620    def initializeBeforePaint(self, canvas): 
     621        [l.setCanvas(None) for l in self.contLabel] 
    625622        self.atNames = AttrLine(self.name, canvas) 
    626623        for at in self.attValues: 
     
    629626        verticalMapper = Mapper_Linear_Fixed(self.atNames.minValue, self.atNames.maxValue, verticalRect.left()+verticalRect.width()/4, verticalRect.right(), maxLinearValue = self.atNames.maxValue, minLinearValue = self.atNames.minValue) 
    630627        label = verticalMapper.getHeaderLine(canvas, QRect(0,0,self.getHeight(canvas), self.getHeight(canvas)))  
    631         [l.setCanvas(None) for l in self.contLabel] 
    632628        self.contLabel=[] 
    633629        for val in label.attValues: 
     
    920916    def __init__(self, nomogram, parent): 
    921917        apply(QCanvas.__init__,(self, parent, "")) 
     918        self.initVars(nomogram, parent) 
     919 
     920    def initVars(self, nomogram, parent): 
    922921        self.fontSize = parent.fontSize 
    923922        self.headerAttrLine = None 
    924923        self.nomogram = nomogram 
    925924        self.parent = parent 
    926         
     925 
     926    def destroy_and_init(self, nomogram, parent): 
     927        self.destroy() 
     928        self.initVars(nomogram, parent) 
     929 
     930    def destroy(self): 
     931        for item in self.allItems(): 
     932            item.setCanvas(None) 
     933            if hasattr(item, "attribute"): 
     934                item.attribute = None 
     935##        [item.setCanvas(None) for item in self.allItems()] 
     936         
    927937    def paintHeader(self, rect, mapper): 
    928         #if self.headerAttrLine: 
    929         #    self.headerAttrLine.destroy() 
    930         [item.setCanvas(None) for item in self.allItems()] 
    931  
    932938        self.headerAttrLine = mapper.getHeaderLine(self, rect) 
    933939        self.headerAttrLine.name = self.nomogram.parent.pointsName[self.nomogram.parent.yAxis] 
     
    935941        self.resize(self.nomogram.pright, rect.height()+16) 
    936942        self.update() 
     943 
    937944 
    938945 
     
    943950    def __init__(self, nomogram, parent): 
    944951        apply(QCanvas.__init__,(self, parent, "")) 
     952        self.initVars(nomogram, parent) 
     953 
     954    def initVars(self, nomogram, parent):         
    945955        self.fontSize = parent.fontSize 
    946956        self.headerAttrLine = None 
     
    969979        self.linkFunc = self.logit 
    970980        self.invLinkFunc = self.invLogit 
     981 
     982    def destroy_and_init(self, nomogram, parent): 
     983        for item in self.allItems(): 
     984            item.setCanvas(None) 
     985            if hasattr(item, "attribute"): 
     986                item.attribute = None 
     987##         
     988##        [item.setCanvas(None) for item in self.allItems()] 
     989        self.initVars(nomogram, parent) 
    971990 
    972991    def logit(self, val): 
     
    11551174    def __init__(self, parent, constant, *args): 
    11561175        apply(QCanvas.__init__,(self, parent, "")) 
    1157          
     1176 
     1177        self.initVars(parent, constant) 
     1178 
    11581179        self.parent=parent 
     1180        self.header = BasicNomogramHeader(self, parent) 
     1181        self.footerCanvas = BasicNomogramFooter(self, parent) 
     1182        self.parent.header.setCanvas(self.header) 
     1183        self.parent.footer.setCanvas(self.footerCanvas) 
     1184 
     1185    def initVars(self, parent, constant):         
    11591186        self.items = [] 
    11601187         
     
    11711198        self.zeroLine.setZ(-10) 
    11721199 
    1173         self.header = BasicNomogramHeader(self, parent) 
    1174         self.footerCanvas = BasicNomogramFooter(self, parent) 
    1175         self.parent.header.setCanvas(self.header) 
    1176         self.parent.footer.setCanvas(self.footerCanvas) 
     1200    def destroy_and_init(self, parent, constant): 
     1201        for item in self.allItems(): 
     1202            item.setCanvas(None) 
     1203            if hasattr(item, "attribute"): 
     1204                item.attribute = None 
     1205##        [item.setCanvas(None) for item in self.allItems()] 
     1206        self.header.destroy_and_init(self,parent) 
     1207        self.footerCanvas.destroy_and_init(self,parent) 
     1208 
     1209        self.initVars(parent, constant) 
    11771210         
    11781211    def addAttribute(self, attr): 
     
    12761309 
    12771310    def show(self): 
    1278         # set sizes 
    12791311        [item.hide() for item in self.allItems()] 
     1312         
     1313        self.header.destroy_and_init(self,self.parent) 
     1314        self.footerCanvas.destroy_and_init(self,self.parent) 
    12801315         
    12811316        self.setSizes(self.parent) 
     
    13271362         
    13281363    def updateValues(self, x, y, obj): 
    1329         if obj.attribute.updateValueXY(x, y): 
     1364        if obj.descriptor.attribute.updateValueXY(x, y): 
    13301365            self.footerCanvas.updateMarkers() 
    13311366            self.update() 
    1332             self.header.headerAttrLine.marker.setX(obj.attribute.marker.x()) 
     1367            self.header.headerAttrLine.marker.setX(obj.descriptor.attribute.marker.x()) 
    13331368            self.header.headerAttrLine.marker.show() 
    13341369            self.header.update() 
Note: See TracChangeset for help on using the changeset viewer.