Changeset e2914b1 in sasview for guitools


Ignore:
Timestamp:
Apr 1, 2008 5:45:29 PM (17 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:
8cebf9b
Parents:
f79b054
Message:

almost worling .can display both files but cannot trans form x to log x because of Log zero .still thinking…but everything else is working…Mathieu can you take a look at all my error function for the special cases such as 1/zero

Location:
guitools
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • guitools/PlotPanel.py

    r52b1f77 re2914b1  
    6060        self.xscales ="" 
    6161        self.yscales ="" 
    62         # keep track if the previous transformation 
    63         self.prevXtrans ="x" 
    64         self.prevYtrans ="Log(y)" 
     62        # keep track if the previous transformation of x and y in Property dialog 
     63        self.prevXtrans =" " 
     64        self.prevYtrans =" " 
     65         
     66    def setTrans(self,xtrans,ytrans):  
     67        """ 
     68            @param xtrans: set x transformation on Property dialog 
     69            @param ytrans: set y transformation on Property dialog 
     70        """ 
     71        self.prevXtrans =xtrans 
     72        self.prevYtrans =ytrans 
    6573         
    6674    def onFitting(self, event):  
     75        """ 
     76            when clicking on linear Fit on context menu , display Fitting Dialog 
     77        """ 
    6778        list =[] 
    6879        list = self.graph.returnPlottable() 
    6980        from fitDialog import LinearFit 
    70          
    7181        print len(list) 
    7282        if len(list.keys())>0: 
     
    7787 
    7888    def _onProperties(self, event): 
    79         
     89        """ 
     90            when clicking on Properties on context menu ,The Property dialog is displayed 
     91            The user selects a transformation for x or y value and a new plot is displayed 
     92        """ 
    8093        from PropertyDialog import Properties 
    8194        dial = Properties(self, -1, 'Properties') 
     95        dial.setValues( self.prevXtrans, self.prevYtrans ) 
    8296        if dial.ShowModal() == wx.ID_OK: 
    8397            self.xscales, self.yscales = dial.getValues() 
     
    86100             
    87101    def toX(self,x): 
     102        """ 
     103            This function is used to load value on Plottable.View 
     104            @param x: Float value 
     105            @return x, 
     106        """ 
    88107        return x 
    89108     
    90109    def toX2(self,x): 
    91110        """ 
     111            This function is used to load value on Plottable.View 
    92112            Calculate x^(2) 
    93113            @param x: float value 
    94114        """ 
    95115        return math.pow(x,2) 
     116     
    96117    def fromX2(self,x): 
    97118         """ 
     119             This function is used to load value on Plottable.View 
    98120            Calculate square root of x 
    99121            @param x: float value 
    100122         """ 
    101          if x >=0 : 
     123         if not x >=0 : 
     124             raise ValueError, "square root of a negative value " 
     125         else: 
    102126             return math.sqrt(x) 
    103          else: 
    104             return 0 
    105     def toLogXY(self,x): 
    106         """ 
     127          
     128    def toLogXY(self,x,y): 
     129        """ 
     130            This function is used to load value on Plottable.View 
    107131            calculate log x 
    108132            @param x: float value 
    109133        """ 
    110         if x > 0: 
    111             return math.log(x) 
     134        if not x*y > 0: 
     135            raise ValueError, "Log(X*Y)of a negative value " 
    112136        else: 
    113             return 0 
     137            return math.log(x*y) 
     138         
    114139    def fromLogXY(self,x): 
    115140        """ 
     141            This function is used to load value on Plottable.View 
    116142            Calculate e^(x) 
    117143            @param x: float value 
    118144        """ 
    119         if x.__class__.__name__ == 'list': 
    120             temp =[] 
    121             for x_i in x: 
    122                 temp.append(math.exp(x_i)) 
    123             return temp 
    124         else: 
    125             return math.exp(x) 
    126      
    127  
     145        return math.exp(x*y) 
     146     
    128147    def set_yscale(self, scale='linear'): 
     148        """ 
     149            Set the scale on Y-axis 
     150            @param scale: the scale of y-axis 
     151        """ 
    129152        self.subplot.set_yscale(scale) 
    130153        self.yscale = scale 
    131154         
    132155    def get_yscale(self): 
     156        """ 
     157             @return: Y-axis scale 
     158        """ 
    133159        return self.yscale 
    134160     
    135161    def set_xscale(self, scale='linear'): 
     162        """ 
     163            Set the scale on x-axis 
     164            @param scale: the scale of x-axis 
     165        """ 
    136166        self.subplot.set_xscale(scale) 
    137167        self.xscale = scale 
    138          
     168        
    139169    def get_xscale(self): 
     170        """ 
     171             @return: x-axis scale 
     172        """ 
    140173        return self.xscale 
    141174 
     
    338371            if ( self.xscales=="x" ): 
    339372                if self.prevXtrans == "x^(2)": 
    340                     item.transform_x(  self.fromX2, self.errFunc ) 
     373                    item.transform_x(  self.fromX2, self.errFuncfromX2 ) 
    341374                #elif self.prevXtrans == "Log(x)" 
    342                     #item.transform_x(  self.fromLogXY,self.errFunc ) 
     375                    #item.transform_x(  self.fromLogXY,self.errFuncfromX2 ) 
    343376                print "Values of  x",item.x[0:5] 
    344377                print "Values of view x",item.view.x[0:5] 
     
    350383                    #item.transform_x(  self.fromLogXY, self.errFunc ) 
    351384                if  self.prevXtrans != "x^(2)": 
    352                     item.transform_x(  self.toX2, self.errFunc ) 
     385                    item.transform_x(  self.toX2, self.errFuncToX2 ) 
    353386                    print "Values of  x",item.x[0:5] 
    354387                    print "Values of view x^(2)",item.view.x[0:5] 
     
    358391            if (self.xscales=="Log(x)" ): 
    359392                if self.prevXtrans == "x^(2)": 
    360                     item.transform_x(  self.fromX2, self.errFunc ) 
     393                    item.transform_x(  self.fromX2, self.errFuncfromX2 ) 
    361394                #elif self.prevXtrans == "Log(x)": 
    362395                    #item.transform_x(  self.toLogXY, self.errFunc ) 
     
    367400            if ( self.yscales=="y" ): 
    368401                if self.prevYtrans == "y^(2)": 
    369                     item.transform_y(  self.toX2, self.errFunc ) 
     402                    item.transform_y(  self.toX2, self.errFuncToX2 ) 
    370403                #elif self.prevXtrans == "Log(y)" 
    371404                    #item.transform_y(  self.fromLogXY.errFunc )    
     
    375408            if ( self.yscales=="Log(y)" ): 
    376409                if self.prevYtrans == "y^(2)": 
    377                      item.transform_y(  self.fromX2, self.errFunc ) 
     410                     item.transform_y(  self.fromX2, self.errFuncfromX2 ) 
    378411                #elif self.prevYtrans != "Log(y)": 
    379412                    #item.transform_y(  self.toLogXY, self.errFunc ) 
     
    386419                       #item.transform_y(  self.fromLogXY, self.errFunc ) 
    387420                if self.prevYtrans != "y^(2)": 
    388                      item.transform_y(  self.toX2, self.errFunc )    
     421                     item.transform_y(  self.toX2, self.errFuncToX2 )    
    389422                self.set_yscale("linear") 
    390423                self.graph.yaxis("\\rm{Intensity^{2}} ","cm^{-2}") 
     
    397430        self.subplot.figure.canvas.draw_idle() 
    398431         
    399     def errFunc(self,x): 
    400         """ 
    401             calculate log x 
    402             @param x: float value 
    403         """ 
    404         if x >=0: 
    405             return math.sqrt(x) 
     432    def errFuncToX2(self,x,dx=None): 
     433        """ 
     434            calculate error of x**2 
     435            @param x: float value 
     436            @param dx: float value 
     437        """ 
     438        if not dx == None: 
     439            return 2*x*dx 
    406440        else: 
    407             return 0 
    408     
    409                  
     441            raise ValueError, "Can't  calculate the error" 
     442    def errFuncfromX2(self,x,dx=None): 
     443        """ 
     444            calculate error of sqrt(x) 
     445            @param x: float value 
     446            @param dx: float value 
     447        """ 
     448        if (x > 0) and (dx != None): 
     449            err= dx/2*math.sqrt(x) 
     450             
     451        else: 
     452            raise ValueError, "Can't  calculate the error" 
     453    def errFuncToLogX(self,x,dx=None): 
     454        """ 
     455            calculate error of Log(xy) 
     456            @param x: float value 
     457            @param dx: float value 
     458        """ 
     459        if (x!=0) and ( dx != None): 
     460            err= dx/x 
     461            if err >= x: 
     462                err = 0.9*x 
     463            return err 
     464        elif x==0: 
     465            raise ValueError, "On calculate error: Can't divide by zero" 
     466        else: 
     467            raise ValueError, "Can't  calculate the error" 
     468         
     469    def errFuncfromLogXY(self,x,dx=None): 
     470        """ 
     471            calculate error of sqrt(x) 
     472            @param x: float value 
     473            @param dx: float value 
     474        """ 
     475        if (x > 0) and (dx != None): 
     476            err= dx/2*math.sqrt(x) 
     477            if err >= x: 
     478                err = 0.9*x 
     479            return err 
     480        else: 
     481            raise ValueError, "Can't  calculate the error" 
     482                    
    410483    def onFitDisplay(self, plottable): 
     484        """ 
     485            Add a new plottable into the graph .In this case this plottable will be used  
     486            to fit some data 
     487            @param plottable: the plottable to plot 
     488        """ 
    411489        self.graph.add(plottable) 
    412490        self.graph.render(self) 
  • guitools/PropertyDialog.py

    r6cfe703 re2914b1  
    6262        return  self.xvalue.SetValue(x),  self.yvalue.SetValue(y) 
    6363         
    64          
    6564    def getValues(self): 
    6665        return self.xvalue.GetValue(), self.yvalue.GetValue() 
  • guitools/plottables.py

    rf79b054 re2914b1  
    339339        self.x= x 
    340340        self.y = y 
    341         self.dx= x 
    342         self.dy = y 
     341         
    343342        self.reset_view() 
    344343         
Note: See TracChangeset for help on using the changeset viewer.