Changeset 05da1f89 in sasview for guitools


Ignore:
Timestamp:
May 29, 2008 12:18:32 PM (17 years ago)
Author:
Mathieu Doucet <doucetm@…>
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:
b6972a0f
Parents:
e39640f
Message:

Some mods to improve the look of the fit dialog and fix minor bugs.

Location:
guitools
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • guitools/PlotPanel.py

    r34ab06d r05da1f89  
    1515#from plottables import Data1D 
    1616#TODO: make the plottables interactive 
     17 
     18DEBUG = False 
    1719 
    1820from plottables import Graph 
     
    147149        self.ErrBvalue=None 
    148150        self.Chivalue=None 
     151         
    149152    def onWheel(self, event): 
    150153        """ 
    151         Process mouse wheel as zoom events 
     154            Process mouse wheel as zoom events 
     155            @param event: Wheel event 
    152156        """ 
    153157        ax = event.inaxes 
     
    157161            # Event occurred inside a plotting area 
    158162            lo,hi = ax.get_xlim() 
    159             lo,hi = _rescale(lo,hi,step,pt=event.xdata) 
    160             ax.set_xlim((lo,hi)) 
     163            lo,hi = _rescale(lo,hi,step,pt=event.xdata,scale=ax.get_xscale()) 
     164            if not self.xscale=='log' or lo>0: 
     165                ax.set_xlim((lo,hi)) 
    161166 
    162167            lo,hi = ax.get_ylim() 
    163             lo,hi = _rescale(lo,hi,step,pt=event.ydata) 
    164             ax.set_ylim((lo,hi)) 
     168            lo,hi = _rescale(lo,hi,step,pt=event.ydata,scale=ax.get_yscale()) 
     169            if not self.yscale=='log' or lo>0: 
     170                ax.set_ylim((lo,hi)) 
    165171        else: 
    166172             # Check if zoom happens in the axes 
     
    172178                if insidex: 
    173179                    xdata,_ = ax.transAxes.inverse_xy_tup((x,y)) 
    174                     print "xaxis",x,"->",xdata 
    175180                insidey,_ = ax.yaxis.contains(event) 
    176181                if insidey: 
    177182                    _,ydata = ax.transAxes.inverse_xy_tup((x,y)) 
    178                     print "yaxis",y,"->",ydata 
    179183            if xdata is not None: 
    180184                lo,hi = ax.get_xlim() 
    181185                lo,hi = _rescale(lo,hi,step,bal=xdata,scale=ax.get_xscale()) 
    182                 ax.set_xlim((lo,hi)) 
     186                if not self.xscale=='log' or lo>0: 
     187                    ax.set_xlim((lo,hi)) 
    183188            if ydata is not None: 
    184189                lo,hi = ax.get_ylim() 
    185190                lo,hi = _rescale(lo,hi,step,bal=ydata,scale=ax.get_yscale()) 
    186                 ax.set_ylim((lo,hi)) 
     191                if not self.yscale=='log' or lo>0: 
     192                    ax.set_ylim((lo,hi)) 
    187193                
    188194        self.canvas.draw_idle() 
     
    214220        if len(list.keys())>0: 
    215221            first_item = list.keys()[0] 
    216             dlg = LinearFit( None, first_item, self.onFitDisplay,self.returnTrans, -1, 'Fitting') 
     222            dlg = LinearFit( None, first_item, self.onFitDisplay,self.returnTrans, -1, 'Linear Fit') 
    217223            
    218224            if (self.xmin !=0.0 )and ( self.xmax !=0.0)\ 
     
    493499                self.set_xscale("log") 
    494500                name, units = item.get_xaxis()  
    495                 self.graph.xaxis("\log_{10}\ \  %s" % name,  "%s^{-1}" % units) 
     501                self.graph.xaxis("\log_{10}\ \  (%s)" % name,  "%s^{-1}" % units) 
    496502                 
    497503            if ( self.yLabel=="ln(y)" ): 
     
    511517                self.set_yscale("log")   
    512518                name, units = item.get_yaxis() 
    513                 self.graph.yaxis("\log_{10}\ \ %s" % name,  "%s^{-1}" % units) 
     519                self.graph.yaxis("\log_{10}\ \ (%s)" % name,  "%s^{-1}" % units) 
    514520                 
    515521            if ( self.yLabel=="y^(2)" ): 
     
    523529                self.set_yscale("linear") 
    524530                name, units = item.get_yaxis() 
    525                 self.graph.yaxis("%s" % name,  "\ \%s" % units) 
     531                self.graph.yaxis("1/%s" % name,  "\ \%s" % units) 
    526532                 
    527533            if ( self.yLabel =="1/sqrt(y)" ): 
     
    529535                self.set_yscale("linear") 
    530536                name, units = item.get_yaxis() 
    531                 self.graph.yaxis("\sqrt{%s}" %name,  "%s" % units) 
     537                self.graph.yaxis("1/\sqrt{%s}" %name,  "%s" % units) 
    532538                 
    533539            if ( self.yLabel =="ln(y*x)"): 
     
    536542                yname, yunits = item.get_yaxis() 
    537543                xname, xunits = item.get_xaxis() 
    538                 self.graph.yaxis("log\ %s %s" % (yname,xname),  "%s^{-1}%s^{-1}" % (yunits,xunits)) 
     544                self.graph.yaxis("log\ (%s \ \ %s)" % (yname,xname),  "%s^{-1}%s^{-1}" % (yunits,xunits)) 
    539545                 
    540546            if ( self.yLabel =="ln(y*x^(2))"): 
     
    543549                yname, yunits = item.get_yaxis() 
    544550                xname, xunits = item.get_xaxis()  
    545                 self.graph.yaxis("Log %s%s^{2}" % (yname,xname),  "%s^{-1}%s^{-2}" % (yunits,xunits)) 
     551                self.graph.yaxis("Log (%s \ \ %s^{2})" % (yname,xname),  "%s^{-1}%s^{-2}" % (yunits,xunits)) 
    546552             
    547553            if ( self.yLabel =="ln(y*x^(4))"): 
     
    550556                yname, yunits = item.get_yaxis() 
    551557                xname, xunits = item.get_xaxis() 
    552                 self.graph.yaxis("Log %s%s^{4}" % (yname,xname),  "%s^{-1}%s^{-4}" % (yunits,xunits)) 
     558                self.graph.yaxis("Log (%s \ \ %s^{4})" % (yname,xname),  "%s^{-1}%s^{-4}" % (yunits,xunits)) 
    553559             
    554560            if ( self.viewModel == "Guinier lny vs x^(2)"): 
  • guitools/fitDialog.py

    r2e07e8f r05da1f89  
    99import transform 
    1010 
     11def format_number(value, high=False): 
     12    """ 
     13        Return a float in a standardized, human-readable formatted string  
     14    """ 
     15    if high: 
     16        return "%-6.4g" % value 
     17    else: 
     18        return "%-5.3g" % value 
     19 
    1120 
    1221class LinearFit(wx.Dialog): 
    1322    def __init__(self, parent, plottable, push_data,transform, id, title): 
    14         wx.Dialog.__init__(self, parent, id, title, size=(450, 400)) 
     23        wx.Dialog.__init__(self, parent, id, title, size=(400, 380)) 
     24 
    1525        """ 
    1626            Dialog window pops- up when select Linear fit on Context menu 
     
    1929        self.parent = parent 
    2030        self.transform = transform 
     31         
    2132        #dialog panel self call function to plot the fitting function 
    2233        self.push_data = push_data 
    2334        #dialog self plottable 
    24          
    2535        self.plottable = plottable 
     36         
    2637        # Receive transformations of x and y 
    2738        self.xLabel,self.yLabel,self.Avalue,self.Bvalue,\ 
    2839        self.ErrAvalue,self.ErrBvalue,self.Chivalue= self.transform() 
     40         
    2941        #Dialog interface 
    30         panel = wx.Panel(self, -1, style=wx.SIMPLE_BORDER)    
    3142        vbox  = wx.BoxSizer(wx.VERTICAL) 
    3243        sizer = wx.GridBagSizer(5,5) 
    3344        
    34         vbox.Add(panel, 1, wx.EXPAND | wx.ALL) 
     45        _BOX_WIDTH = 100 
    3546  
    36         self.tcA = wx.TextCtrl(panel, -1,size=(120,20),style=wx.SIMPLE_BORDER) 
    37         self.tcErrA = wx.TextCtrl(panel, -1,size=(120,20),style=wx.SIMPLE_BORDER) 
    38         self.tcB = wx.TextCtrl(panel, -1,size=(120,20),style=wx.SIMPLE_BORDER) 
    39         self.tcErrB = wx.TextCtrl(panel, -1,size=(120,20),style=wx.SIMPLE_BORDER) 
    40         self.tcChi = wx.TextCtrl(panel, -1,size=(120,20),style=wx.SIMPLE_BORDER) 
    41         self.xminFit = wx.TextCtrl(panel,-1,size=(120,20),style=wx.SIMPLE_BORDER) 
    42         self.xmaxFit = wx.TextCtrl(panel,-1,size=(120,20),style=wx.SIMPLE_BORDER) 
    43         self.xminTransFit = wx.TextCtrl(panel,-1,size=(120,20),style=wx.SIMPLE_BORDER) 
    44         self.xmaxTransFit = wx.TextCtrl(panel,-1,size=(120,20),style=wx.SIMPLE_BORDER) 
    45         self.initXmin = wx.TextCtrl(panel,-1,size=(120,20),style=wx.SIMPLE_BORDER) 
    46         self.initXmax = wx.TextCtrl(panel,-1,size=(120,20),style=wx.SIMPLE_BORDER) 
    47         self.btFit =wx.Button(panel,-1,'Fit',size=(120, 30)) 
    48         self.btClose =wx.Button(panel, wx.ID_CANCEL,'Close',size=(90, 30) ) 
    49         self.static_line_1 = wx.StaticLine(panel, -1) 
     47        self.tcA      = wx.TextCtrl(self, -1,size=(_BOX_WIDTH,20)) 
     48        self.tcA.SetToolTipString("Fit value for the slope parameter.") 
     49        self.tcErrA   = wx.TextCtrl(self, -1,size=(_BOX_WIDTH,20)) 
     50        self.tcErrA.SetToolTipString("Error on the slope parameter.") 
     51        self.tcB      = wx.TextCtrl(self, -1,size=(_BOX_WIDTH,20)) 
     52        self.tcA.SetToolTipString("Fit value for the constant parameter.") 
     53        self.tcErrB   = wx.TextCtrl(self, -1,size=(_BOX_WIDTH,20)) 
     54        self.tcErrB.SetToolTipString("Error on the constant parameter.") 
     55        self.tcChi    = wx.TextCtrl(self, -1,size=(_BOX_WIDTH,20)) 
     56        self.tcChi.SetToolTipString("Chi^2 over degrees of freedom.") 
     57        self.xminFit  = wx.TextCtrl(self,-1,size=(_BOX_WIDTH,20)) 
     58        self.xminFit.SetToolTipString("Enter the minimum value on the axis to be included in the fit.") 
     59        self.xmaxFit  = wx.TextCtrl(self,-1,size=(_BOX_WIDTH,20)) 
     60        self.xmaxFit.SetToolTipString("Enter the maximum value on the axis to be included in the fit.") 
     61        self.xminTransFit = wx.TextCtrl(self,-1,size=(_BOX_WIDTH,20)) 
     62        self.xmaxTransFit = wx.TextCtrl(self,-1,size=(_BOX_WIDTH,20)) 
     63        self.initXmin = wx.TextCtrl(self,-1,size=(_BOX_WIDTH,20)) 
     64        self.initXmax = wx.TextCtrl(self,-1,size=(_BOX_WIDTH,20)) 
     65 
     66        # Make the info box not editable 
     67        #_BACKGROUND_COLOR = '#ffdf85' 
     68        _BACKGROUND_COLOR = self.GetBackgroundColour() 
     69        self.xminTransFit.SetEditable(False) 
     70        self.xminTransFit.SetBackgroundColour(_BACKGROUND_COLOR) 
     71        self.xmaxTransFit.SetEditable(False) 
     72        self.xmaxTransFit.SetBackgroundColour(_BACKGROUND_COLOR) 
     73        self.initXmin.SetEditable(False) 
     74        self.initXmin.SetBackgroundColour(_BACKGROUND_COLOR) 
     75        self.initXmax.SetEditable(False) 
     76        self.initXmax.SetBackgroundColour(_BACKGROUND_COLOR) 
     77         
     78         
     79        # Buttons on the bottom 
     80        self.static_line_1 = wx.StaticLine(self, -1) 
     81        self.btFit =wx.Button(self,-1,'Fit') 
     82        self.btFit.Bind(wx.EVT_BUTTON, self._onFit) 
     83        self.btFit.SetToolTipString("Perform fit.") 
     84        self.btClose =wx.Button(self, wx.ID_CANCEL,'Close') 
     85         
     86        # Intro 
     87        explanation  = "Perform fit for y(x) = Ax + B" 
     88         
     89        vbox.Add(sizer) 
    5090         
    5191        ix = 0 
    5292        iy = 1 
    53         sizer.Add(wx.StaticText(panel, -1, 'y = Ax +B'),(iy, ix),(1,1),\ 
     93        sizer.Add(wx.StaticText(self, -1, explanation),(iy, ix),\ 
     94                 (1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
     95        iy += 2 
     96        sizer.Add(wx.StaticText(self, -1, 'Parameter A'),(iy, ix),\ 
     97                 (1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
     98        ix += 1 
     99        sizer.Add(self.tcA,(iy, ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     100        ix += 1 
     101        sizer.Add(wx.StaticText(self, -1, '+/-'),(iy, ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     102        ix += 1 
     103        sizer.Add(self.tcErrA, (iy, ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     104        iy += 1 
     105        ix = 0 
     106        sizer.Add(wx.StaticText(self, -1, 'Parameter B'),(iy, ix),(1,1),\ 
    54107                   wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    55         iy+=1 
    56         sizer.Add(wx.StaticText(panel, -1, 'Param A'),(iy, ix),\ 
    57                  (1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    58         ix += 1 
    59         sizer.Add(self.tcA,(iy, ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    60         ix += 1 
    61         sizer.Add(wx.StaticText(panel, -1, '+/-'),(iy, ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    62         ix += 1 
    63         sizer.Add(self.tcErrA, (iy, ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    64         iy += 1 
    65         ix = 0 
    66         sizer.Add(wx.StaticText(panel, -1, 'Param B'),(iy, ix),(1,1),\ 
     108        ix += 1 
     109        sizer.Add(self.tcB, (iy, ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     110        ix += 1 
     111        sizer.Add(wx.StaticText(self, -1, '+/-'),(iy, ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     112        ix += 1 
     113        sizer.Add(self.tcErrB, (iy, ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     114        iy += 1 
     115        ix = 0 
     116        sizer.Add(wx.StaticText(self, -1, 'Chi2/dof'),(iy, ix),(1,1),\ 
    67117                   wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    68118        ix += 1 
    69         sizer.Add(self.tcB, (iy, ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    70         ix += 1 
    71         sizer.Add(wx.StaticText(panel, -1, '+/-'),(iy, ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    72         ix += 1 
    73         sizer.Add(self.tcErrB, (iy, ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    74         iy += 1 
    75         ix = 0 
    76         sizer.Add(wx.StaticText(panel, -1, 'Chi ^{2}'),(iy, ix),(1,1),\ 
    77                    wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    78         ix += 1 
    79119        sizer.Add(self.tcChi, (iy, ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    80         iy += 1 
     120        iy += 2 
    81121        ix = 1 
    82         sizer.Add(wx.StaticText(panel, -1, 'Xmin'),(iy, ix),(1,1),\ 
     122        sizer.Add(wx.StaticText(self, -1, 'Min'),(iy, ix),(1,1),\ 
    83123                   wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    84124        ix += 2 
    85         sizer.Add(wx.StaticText(panel, -1, 'Xmax'),(iy, ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    86         iy += 1 
    87         ix = 0 
    88         sizer.Add(wx.StaticText(panel, -1, 'Plotted Range'),(iy, ix),(1,1),\ 
     125        sizer.Add(wx.StaticText(self, -1, 'Max'),(iy, ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     126        iy += 1 
     127        ix = 0 
     128        sizer.Add(wx.StaticText(self, -1, 'Plotted Range'),(iy, ix),(1,1),\ 
    89129                   wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    90130        ix +=1 
     
    96136        iy += 1 
    97137        ix = 0 
    98         sizer.Add(wx.StaticText(panel, -1, 'Fit Range of '+self.xLabel),(iy, ix),(1,1),\ 
     138        sizer.Add(wx.StaticText(self, -1, 'Fit Range of '+self.xLabel),(iy, ix),(1,1),\ 
    99139                   wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    100140        ix += 1 
     
    106146        iy += 1 
    107147        ix = 0 
    108         sizer.Add(wx.StaticText(panel, -1, 'Fit Range of x'),(iy, ix),(1,1),\ 
     148        sizer.Add(wx.StaticText(self, -1, 'Fit Range of x'),(iy, ix),(1,1),\ 
    109149                   wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    110150        ix += 1 
     
    116156        ix = 1 
    117157         
     158        vbox.Add(self.static_line_1, 0, wx.EXPAND, 0) 
     159         
     160        sizer_button = wx.BoxSizer(wx.HORIZONTAL) 
     161        sizer_button.Add((20, 20), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     162        sizer_button.Add(self.btFit, 0, wx.LEFT|wx.RIGHT|wx.ADJUST_MINSIZE, 10) 
     163        sizer_button.Add(self.btClose, 0, wx.LEFT|wx.RIGHT|wx.ADJUST_MINSIZE, 10)         
     164        vbox.Add(sizer_button, 0, wx.EXPAND|wx.BOTTOM|wx.TOP, 10) 
     165         
     166         
     167         
    118168        sizer.Add(self.btFit, (iy, ix),(1,1), wx.LEFT|wx.ADJUST_MINSIZE, 0) 
    119         self.btFit.Bind(wx.EVT_BUTTON, self._onFit) 
    120         ix += 2 
    121         sizer.Add(self.btClose, (iy, ix),(1,1),\ 
    122                   wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    123          
    124         panel.SetSizer(sizer) 
     169         
     170         
     171        #panel.SetSizer(sizer) 
    125172        self.SetSizer(vbox) 
    126173        self.Centre() 
     
    164211            self.x,self.y,self.dx,self.dy= self.plottable.returnValuesOfView() 
    165212             
    166             self.xminTransFit.SetLabel(str(min(self.x))) 
    167             self.xmaxTransFit.SetLabel(str(max(self.x))) 
    168             self.xminTransFit.Disable() 
    169             self.xmaxTransFit.Disable() 
    170              
    171             self.initXmin.SetValue(str(self.mini)) 
    172             self.initXmax.SetValue(str(self.maxi)) 
    173             self.initXmin.Disable() 
    174             self.initXmax.Disable() 
    175              
    176             self.xminFit.SetLabel(str(self.mini)) 
    177             self.xmaxFit.SetLabel(str(self.maxi)) 
     213             
     214            self.xminTransFit.SetLabel(format_number(min(self.x))) 
     215            self.xmaxTransFit.SetLabel(format_number(max(self.x))) 
     216             
     217            self.initXmin.SetValue(format_number(self.mini)) 
     218            self.initXmax.SetValue(format_number(self.maxi)) 
     219             
     220            self.xminFit.SetLabel(format_number(self.mini)) 
     221            self.xmaxFit.SetLabel(format_number(self.maxi)) 
    178222         
    179223       
     
    203247                xmaxView=self.floatTransform(xmax) 
    204248                if (self.xLabel=="log10(x)"): 
    205                     self.xminTransFit.SetValue(str(math.log10(xminView))) 
    206                     self.xmaxTransFit.SetValue(str(math.log10(xmaxView))) 
    207                 else: 
    208                     self.xminTransFit.SetValue(str(xminView)) 
    209                     self.xmaxTransFit.SetValue(str(xmaxView)) 
    210                 self.xminTransFit.Disable() 
    211                 self.xmaxTransFit.Disable() 
     249                    self.xminTransFit.SetValue(format_number(math.log10(xminView))) 
     250                    self.xmaxTransFit.SetValue(format_number(math.log10(xmaxView))) 
     251                else: 
     252                    self.xminTransFit.SetValue(format_number(xminView)) 
     253                    self.xmaxTransFit.SetValue(format_number(xmaxView)) 
    212254                # Store the transformed values of view x, y,dy in variables  before the fit 
    213255                if  self.yLabel.lower() == "log10(y)": 
     
    240282                    chisqr, out, cov = fittings.sansfit(self.model,  
    241283                                [self.cstA, self.cstB],tempx, tempy,tempdy,xminView,xmaxView) 
    242                 #print "this out",out 
     284                 
     285                # Use chi2/dof 
     286                if len(tempx)>0: 
     287                    chisqr = chisqr/len(tempx) 
     288                 
    243289                #Check that cov and out are iterable before displaying them 
    244290                if cov ==None: 
     
    305351              Display  the value on fit Dialog  
    306352         """ 
    307          self.tcA.SetValue(str(cstA)) 
    308          self.tcB.SetValue(str(cstB)) 
    309          self.tcErrA.SetValue(str(errA)) 
    310          self.tcErrB.SetValue(str(errB)) 
    311          self.tcChi.SetValue(str(Chi)) 
     353         self.tcA.SetValue(format_number(cstA)) 
     354         self.tcB.SetValue(format_number(cstB)) 
     355         self.tcErrA.SetValue(format_number(errA)) 
     356         self.tcErrB.SetValue(format_number(errB)) 
     357         self.tcChi.SetValue(format_number(Chi)) 
    312358         
    313359    def _ongetValues(self): 
     
    325371        if float(usermin) < float(usermax): 
    326372            if float(usermin) >= float(self.mini) and float(usermin) < float(self.maxi): 
    327                 self.xminFit.SetValue(str(usermin)) 
     373                self.xminFit.SetValue(format_number(float(usermin))) 
    328374            else: 
    329                 self.xminFit.SetValue(str(self.mini)) 
     375                self.xminFit.SetValue(format_number(float(self.mini))) 
    330376                 
    331377            if float(usermax) > float(self.mini) and float(usermax) <= float(self.maxi): 
    332                 self.xmaxFit.SetLabel(str(usermax)) 
     378                self.xmaxFit.SetLabel(format_number(float(usermax))) 
    333379            else: 
    334                 self.xmaxFit.SetLabel(str(self.maxi)) 
     380                self.xmaxFit.SetLabel(format_number(float(self.maxi))) 
    335381                 
    336382            mini =float(self.xminFit.GetValue()) 
     
    377423            Set fit parameters 
    378424        """ 
    379         self.xminFit.SetValue(str(xmin)) 
    380         self.xmaxFit.SetValue(str(xmax)) 
    381         self.xminTransFit.SetValue(str(xminTrans)) 
    382         self.xmaxTransFit.SetValue(str(xmaxTrans)) 
    383          
    384     
    385 if __name__ == "__main__":  
    386     app = wx.App() 
    387     dialog=LinearFit(None, -1, 'Fitting') 
    388     dialog.ShowModal() 
     425        self.xminFit.SetValue(format_number(xmin)) 
     426        self.xmaxFit.SetValue(format_number(xmax)) 
     427        self.xminTransFit.SetValue(format_number(xminTrans)) 
     428        self.xmaxTransFit.SetValue(format_number(xmaxTrans)) 
     429         
     430   
     431class MyApp(wx.App): 
     432    def OnInit(self): 
     433        wx.InitAllImageHandlers() 
     434        plot = Theory1D([],[]) 
     435        dialog = LinearFit(None, plot, self.onFitDisplay,self.returnTrans, -1, 'Linear Fit') 
     436        if dialog.ShowModal() == wx.ID_OK: 
     437            pass 
     438        dialog.Destroy() 
     439         
     440        return 1 
     441     
     442    def onFitDisplay(self, tempx,tempy,xminView,xmaxView,xmin,xmax,func): 
     443        pass 
     444         
     445    def returnTrans(self): 
     446        return '','',0,0,0,0,0 
     447 
     448# end of class MyApp 
     449 
     450if __name__ == "__main__": 
     451    app = MyApp(0) 
    389452    app.MainLoop() 
    390  
    391  
  • guitools/plottables.py

    rb43a009 r05da1f89  
    710710        self.dx = dx 
    711711        self.dy = dy 
    712         self.xaxis( 'q', 'A') 
    713         self.yaxis( 'intensity', 'cm') 
     712        self.xaxis( '', '') 
     713        self.yaxis( '', '') 
    714714        self.view = self.View(self.x, self.y, self.dx, self.dy) 
    715715         
     
    744744        self.y = y 
    745745        self.dy = dy 
    746         self.xaxis( 'q', 'A') 
    747         self.yaxis( 'intensity', 'cm') 
     746        self.xaxis( '', '') 
     747        self.yaxis( '', '') 
    748748        self.view = self.View(self.x, self.y, None, self.dy) 
    749749         
  • guitools/requirements.txt

    r88e7d08 r05da1f89  
    104104        ALINA 
    105105 1- Would like to change the y axis label display 
     106  
     107  
     108Cleaning up for deployment: 
     109 
     110 - When zooming, check that the new lower bound is positive if on a log scale [DONE]  
     111 - Fixed bug with the zooming dependency on scale [DONE] 
     112 - Improved look of Fit dialog [DONE] 
     113  
     114 - Improve labels 
     115  
     116 - Problem scales: 
     117     - x vs 1/y 
     118      
  • guitools/transform.py

    r2e07e8f r05da1f89  
    2727     else: 
    2828         return math.sqrt(x) 
     29      
    2930def toLogX(x,y=None): 
    3031    """ 
     
    4344    else: 
    4445        raise ValueError,"cannot divide by zero" 
     46     
    4547def toOneOverSqrtX(y , x=None): 
    46     if y!=None: 
    47         if y > 0: 
    48             return 1/math.sqrt(y) 
    49         else: 
    50             raise ValueError,"cannot be computed" 
     48    if y > 0: 
     49        return 1/math.sqrt(y) 
     50    else: 
     51        raise ValueError,"transform.toOneOverSqrtX: cannot be computed" 
    5152     
    5253     
     
    5556        return math.log(y*(x**2)) 
    5657    else: 
    57          raise ValueError,"cannot be computed" 
     58         raise ValueError,"transform.toLogYX2: cannot be computed" 
    5859      
    5960 
     
    6162    if math.pow(x,4)*y > 0: 
    6263        return math.log(math.pow(x,4)*y) 
     64    else: 
     65         raise ValueError,"transform.toLogYX4: input error" 
    6366 
    6467def toLogXY(y,x): 
     
    9497    if  dx != None: 
    9598        err = 2*x*dx 
    96         if math.fabs(err) >= math.fabs(x): 
    97             err = 0.9*x 
    9899        return math.fabs(err) 
    99100    else: 
    100101        return 0.0 
     102     
    101103def errFromX2(x,y=None,dx=None,dy=None): 
    102104    """ 
     
    110112        else: 
    111113            err = 0 
    112         if math.fabs(err) >= math.fabs(x): 
    113             err = 0.9*x     
    114     else: 
    115         err = 0.9*x 
    116         
    117114        return math.fabs(err) 
     115    else: 
     116        raise ValueError, "transform.errFromX2: can't compute error of negative x" 
     117     
    118118def errToLog10X(x,y=None,dx=None,dy=None): 
    119119    """ 
     
    129129        raise ValueError, "errToLogX: divide by zero" 
    130130     
    131     if math.fabs(dx) >= math.fabs(x): 
    132         dx = 0.9*x 
    133      
    134131    return dx 
    135132     
     
    146143    else: 
    147144        raise ValueError, "errToLogX: divide by zero" 
    148      
    149     if math.fabs(dx) >= math.fabs(x): 
    150         dx = 0.9*x 
    151145     
    152146    return dx 
     
    160154        dy=0 
    161155    err =math.sqrt((2*x*y*dx)**2 +((x**2)*dy)**2) 
    162     #if err >= math.fabs(x): 
    163     #    err =0.9*x 
    164156    return err  
    165157     
     
    174166            dy = 0 
    175167        err = (dx/x)**2 + (dy/y)**2 
    176         #if  math.sqrt(math.fabs(err)) >= math.fabs(x): 
    177         #    err= 0.9*x 
    178168    else: 
    179169        raise ValueError, "cannot compute this error" 
     
    190180        if (dy == None): 
    191181            dy = 0 
    192         err = (2*dx/x)**2 + (dy/y)**2 
    193         #if math.fabs(err) >= math.fabs(x): 
    194         #   err =0.9*x 
     182        err = (2.0*dx/x)**2 + (dy/y)**2 
    195183    else: 
    196184         raise ValueError, "cannot compute this error" 
     
    205193        if dx ==None: 
    206194            dx= 0 
    207         err = -(dx)**2/x**2 
     195        err = dx/x**2 
    208196    else: 
    209197        raise ValueError,"Cannot compute this error" 
    210198     
    211     if math.fabs(err)>= math.fabs(x): 
    212         err= 0.9*x 
    213199    return math.fabs(err) 
    214200 
     
    220206        if dx==None: 
    221207            dx =0 
    222         err= -1/2*math.pow(x, -3/2)* dx 
    223         #if math.fabs(err)>= math.fabs(x): 
    224         #    err=0.9*x 
     208        err= -1/2*math.pow(x, -3.0/2.0)* dx 
    225209    else: 
    226210        raise ValueError, "Cannot compute this error" 
    227211     
    228212    return math.fabs(err) 
     213 
    229214def errToLogYX4(x,y=None,dx=None,dy=None): 
    230215    """ 
     
    236221    if dy==None: 
    237222        dy=0 
    238     err =math.sqrt((4*dx/x)**2 +(dy/y)**2) 
    239     #if err >= math.fabs(x): 
    240     #err =0.9*x 
     223    err =math.sqrt((4.0*dx/x)**2 +(dy/y)**2) 
    241224    return err  
    242225 
Note: See TracChangeset for help on using the changeset viewer.