Changeset f52bea1 in sasview for guitools/PlotPanel.py


Ignore:
Timestamp:
Apr 8, 2008 5:04:51 PM (16 years ago)
Author:
Gervaise Alina <gervyh@…>
Branches:
master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
3d3a0e5
Parents:
8742751
Message:

Plotpanel plottable fitdialog req modified

File:
1 edited

Legend:

Unmodified
Added
Removed
  • guitools/PlotPanel.py

    rd490a02 rf52bea1  
    5858        self.symbollist = ['o','x','^','v','<','>','+','s','d','D','h','H','p'] 
    5959        #User scale 
    60         self.xscales ="" 
    61         self.yscales ="" 
     60        self.xscales ="x" 
     61        self.yscales ="Log(y)" 
    6262        # keep track if the previous transformation of x and y in Property dialog 
    6363        self.prevXtrans =" " 
    6464        self.prevYtrans =" " 
     65    def returnTrans(self): 
     66        return self.xscales,self.yscales 
    6567         
    6668    def setTrans(self,xtrans,ytrans):  
     
    8385            first_item = list.keys()[0] 
    8486            #print first_item, list[first_item].__class__.__name__ 
    85             dlg = LinearFit( None, first_item, self.onFitDisplay, -1, 'Fitting') 
     87            dlg = LinearFit( None, first_item, self.onFitDisplay,self.returnTrans, -1, 'Fitting') 
    8688            dlg.ShowModal()  
    8789 
     
    125127         else: 
    126128             return math.sqrt(x) 
    127           
     129    def toLogX(self,x): 
     130        """ 
     131            This function is used to load value on Plottable.View 
     132            calculate log x 
     133            @param x: float value 
     134        """ 
     135        if not x > 0: 
     136            raise ValueError, "Log(X)of a negative value " 
     137        else: 
     138            return math.log(x) 
     139         
     140    def toOneOverX(self,x): 
     141        if x !=0: 
     142            return 1/x 
     143        else: 
     144            raise ValueError,"cannot divide by zero" 
     145    def toOneOverSqrtX(self,x): 
     146        if x > 0: 
     147            return 1/math.sqrt(x) 
     148        else: 
     149            raise ValueError,"cannot be computed" 
     150    def toLogYX2(self): 
     151        if y*(x**2) >0: 
     152            return math.log(y*(x**2)) 
     153        else: 
     154             raise ValueError,"cannot be computed" 
    128155    def toLogXY(self,x,y): 
    129156        """ 
     
    371398        for item in list: 
    372399            if ( self.xscales=="x" ): 
    373                 item.transform_x(  self.toX, self.errFunctoX ) 
     400                item.transform_x(  self.toX, self.errToX ) 
    374401                self.set_xscale("linear") 
    375                 self.graph.xaxis('\\rm{q} ', 'A^{-1}') 
     402                name, units = item.get_xaxis() 
     403                self.graph.xaxis("%s" % name,  "%s^{-1}" % units) 
    376404                 
    377405            if ( self.xscales=="x^(2)" ): 
    378                 item.transform_x(  self.toX2, self.errFuncToX2 ) 
     406                item.transform_x(  self.toX2, self.errToX2 ) 
    379407                self.set_xscale('linear') 
    380                 self.graph.xaxis('\\rm{q^{2}} ', 'A^{-2}') 
     408                name, units = item.get_xaxis() 
     409                self.graph.xaxis("%s^{2}" % name,  "%s^{-2}" % units) 
    381410                 
    382411            if (self.xscales=="Log(x)" ): 
    383                 item.transform_x(  self.toX, self.errFuncToLogX ) 
     412                item.transform_x(  self.toX, self.errToLogX ) 
    384413                self.set_xscale("log") 
    385                 self.graph.xaxis('\\rm{q} ', 'A^{-1}') 
     414                name, units = item.get_xaxis() 
     415                self.graph.xaxis("%s" % name,  "%s^{-1}" % units) 
    386416                 
    387417            if ( self.yscales=="y" ): 
    388                 item.transform_y(  self.toX, self.errFunctoX ) 
     418                item.transform_y(  self.toX, self.errToX ) 
    389419                self.set_yscale("linear") 
    390                 self.graph.yaxis("\\rm{Intensity} ","cm^{-1}") 
     420                name, units = item.get_yaxis() 
     421                self.graph.yaxis("%s" % name,  "%s^{-1}" % units) 
    391422                 
    392423            if ( self.yscales=="Log(y)" ):  
    393                 item.transform_y(  self.toX, self.errFuncToLogX) 
     424                item.transform_y(  self.toX, self.errToLogX) 
    394425                self.set_yscale("log")   
    395                 self.graph.yaxis("\\rm{Intensity} ","cm^{-1}") 
     426                name, units = item.get_yaxis() 
     427                self.graph.yaxis("%s" % name,  "%s^{-1}" % units) 
    396428                 
    397429            if ( self.yscales=="y^(2)" ): 
    398                 item.transform_y(  self.toX2, self.errFuncToX2 )     
     430                item.transform_y(  self.toX2, self.errToX2 )     
    399431                self.set_yscale("linear") 
    400                 self.graph.yaxis("\\rm{Intensity^{2}} ","cm^{-2}") 
     432                name, units = item.get_yaxis() 
     433                self.graph.yaxis("%s^2" % name,  "%s^{-2}" % units) 
    401434    
    402435        self.prevXtrans = self.xscales  
     
    405438        self.graph.render(self) 
    406439        self.subplot.figure.canvas.draw_idle() 
    407     def errFunctoX(self,x,dx=None): 
     440         
     441    def errToX(self,x,dx=None): 
    408442        """ 
    409443            calculate error of x**2 
     
    411445            @param dx: float value 
    412446        """ 
    413         if math.fabs(dx) >= math.fabs(x): 
     447        if (dx != None) and (math.fabs(dx) >= math.fabs(x)): 
    414448            return math.fabs(0.9*x) 
    415449        if dx==None: 
    416450             return 0 
    417451        return math.fabs(dx) 
    418     def errFuncToX2(self,x,dx=None): 
     452     
     453    def errToX2(self,x,dx=None): 
    419454        """ 
    420455            calculate error of x**2 
     
    429464        else: 
    430465            return 0.0 
    431     def errFuncfromX2(self,x,dx=None): 
     466    def errFromX2(self,x,dx=None): 
    432467        """ 
    433468            calculate error of sqrt(x) 
     
    447482            return math.fabs(err) 
    448483         
    449     def errFuncToLogX(self,x,dx=None): 
     484    def errToLogX(self,x,dx=None): 
    450485        """ 
    451486            calculate error of Log(xy) 
     
    466501        return math.fabs(err) 
    467502         
    468     def errFuncfromLogXY(self,x,dx=None): 
     503    def errToLogXY(self,x,y,dx=None, dy=None): 
    469504        """ 
    470505            calculate error of Log(xy) 
    471             @param x: float value 
    472             @param dx: float value 
    473         """ 
    474         return  
    475         
    476                     
     506        """ 
     507        if dx==None: 
     508            err = x*(dy**2)/y 
     509        elif dy==None: 
     510            err = y*(dx**2)/x 
     511        elif (x!=0) and (y!=0): 
     512            err = y*(dx**2)/x + x*(dy**2)/y 
     513        if err >= 0: 
     514            if  math.sqrt(err)> x: 
     515                err= 0.9*x 
     516            return math.sqrt(err) 
     517        else: 
     518            raise ValueError, "cannot compute this error" 
     519                       
    477520    def onFitDisplay(self, plottable): 
    478521        """ 
     
    484527        self.graph.add(plottable) 
    485528        self.graph.render(self) 
     529        self.graph.delete(plottable) 
    486530        self.subplot.figure.canvas.draw_idle() 
    487531         
Note: See TracChangeset for help on using the changeset viewer.