Changeset a4bd2ac in sasview


Ignore:
Timestamp:
Jun 30, 2008 2:18:57 PM (16 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:
e96a852
Parents:
9a23253e
Message:

Started to add slit smearing. Added Rg and I(q=0) as outputs. GUI

Location:
prview
Files:
6 edited
1 moved

Legend:

Unmodified
Added
Removed
  • prview/config_removed.py

    rf3d51f6 ra4bd2ac  
    66# Version of the application 
    77__appname__ = "PrView" 
    8 __version__ = '0.1.0' 
     8__version__ = '0.1.1' 
    99__download_page__ = 'http://danse.chem.utk.edu' 
    1010 
  • prview/license.txt

    rf3d51f6 ra4bd2ac  
    77the following paper in your publication: 
    88 
    9 P. Butler, M. Doucet, G. Alina, J. Zhou, "SANS analysis software",  
    10 to be published. 
     9P. Butler, M. Doucet, G. Alina, R. Cortes Hernandez, J. Zhou,  
     10"SANS analysis software", to be published. 
    1111 
    1212See the DANSE project web site for license information: 
    1313http://wiki.cacr.caltech.edu/danse/index.php/Main_Page 
    1414 
    15 copyright 2007, University of Tennessee for the DANSE project 
     15copyright 2008, University of Tennessee for the DANSE project 
  • prview/local_config.py

    r4a5de6f ra4bd2ac  
    66# Version of the application 
    77__appname__ = "PrView" 
    8 __version__ = '0.1.0' 
     8__version__ = '0.1.1' 
    99__download_page__ = 'http://danse.chem.utk.edu' 
    1010 
  • prview/perspectives/pr/inversion_panel.py

    r3fd1ebc ra4bd2ac  
    122122         
    123123        ## Data file TextCtrl 
    124         self.data_file = None 
    125         self.plot_data = None 
    126         self.nfunc_ctl = None 
    127         self.alpha_ctl = None 
    128         self.dmax_ctl  = None 
    129         self.time_ctl  = None 
    130         self.chi2_ctl  = None 
    131         self.osc_ctl  = None 
     124        self.data_file  = None 
     125        self.plot_data  = None 
     126        self.nfunc_ctl  = None 
     127        self.alpha_ctl  = None 
     128        self.dmax_ctl   = None 
     129        self.time_ctl   = None 
     130        self.chi2_ctl   = None 
     131        self.osc_ctl    = None 
    132132        self.file_radio = None 
    133133        self.plot_radio = None 
    134134        self.label_sugg = None 
    135         self.qmin_ctl = None 
    136         self.qmax_ctl = None 
     135        self.qmin_ctl   = None 
     136        self.qmax_ctl   = None 
     137         
     138        self.rg_ctl     = None 
     139        self.iq0_ctl    = None 
     140        self.bck_chk    = None 
     141        self.bck_ctl    = None 
    137142         
    138143        # TextCtrl for fraction of positive P(r) 
     
    164169            self.alpha_ctl.SetValue(str(value)) 
    165170        elif name=='chi2': 
    166             self.chi2_ctl.SetValue("%-5.3g" % value) 
     171            self.chi2_ctl.SetValue("%-5.2g" % value) 
     172        elif name=='bck': 
     173            self.bck_ctl.SetValue("%-5.2g" % value) 
    167174        elif name=='q_min': 
    168             self.qmin_ctl.SetValue("%-5.3g" % value) 
     175            self.qmin_ctl.SetValue("%-5.2g" % value) 
    169176        elif name=='q_max': 
    170             self.qmax_ctl.SetValue("%-5.3g" % value) 
     177            self.qmax_ctl.SetValue("%-5.2g" % value) 
    171178        elif name=='elapsed': 
    172179            self.time_ctl.SetValue("%-5.2g" % value) 
     180        elif name=='rg': 
     181            self.rg_ctl.SetValue("%-5.2g" % value) 
     182        elif name=='iq0': 
     183            self.iq0_ctl.SetValue("%-5.2g" % value) 
    173184        elif name=='oscillation': 
    174185            self.osc_ctl.SetValue("%-5.2g" % value) 
     
    219230            except: 
    220231                return -1.0 
     232        elif name=='bck': 
     233            try: 
     234                return float(self.bck_ctl.GetValue()) 
     235            except: 
     236                return -1.0 
    221237        elif name=='q_min': 
    222238            try: 
     
    232248            try: 
    233249                return float(self.time_ctl.GetValue()) 
     250            except: 
     251                return -1.0 
     252        elif name=='rg': 
     253            try: 
     254                return float(self.rg_ctl.GetValue()) 
     255            except: 
     256                return -1.0 
     257        elif name=='iq0': 
     258            try: 
     259                return float(self.iq0_ctl.GetValue()) 
    234260            except: 
    235261                return -1.0 
     
    275301 
    276302        iy = 0 
    277         self.file_radio = wx.RadioButton(self, -1, "File data:") 
     303        if self.standalone==False: 
     304            self.file_radio = wx.RadioButton(self, -1, "File data:") 
     305        else: 
     306            self.file_radio = wx.StaticText(self, -1, "Data file:") 
    278307        self.data_file = wx.TextCtrl(self, -1, size=(100,20)) 
    279308        self.data_file.SetEditable(False) 
     
    283312        self.Bind(wx.EVT_BUTTON, self._change_file, id = id)    
    284313        pars_sizer.Add(self.file_radio, (iy,0), (1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    285         pars_sizer.Add(self.data_file, (iy,1), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
     314        #pars_sizer.Add(self.data_file, (iy,1), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
     315        pars_sizer.Add(self.data_file, (iy,1), (1,1), wx.ADJUST_MINSIZE, 15) 
    286316        pars_sizer.Add(choose_button, (iy,3), (1,1), wx.RIGHT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    287317         
     
    294324            pars_sizer.Add(self.plot_data, (iy,1), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    295325         
    296         boxsizer1.Add(pars_sizer, 0, wx.EXPAND) 
     326        self.bck_chk = wx.CheckBox(self, -1, "Estimate background level") 
     327        self.bck_chk.SetToolTipString("Check box to let the fit estimate the constant background level.") 
     328        self.bck_chk.Bind(wx.EVT_CHECKBOX, self._on_pars_changed) 
     329        iy += 1 
     330        pars_sizer.Add(self.bck_chk, (iy,0), (1,2), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
     331        boxsizer1.Add(pars_sizer, 0, wx.EXPAND)   
    297332        vbox.Add(boxsizer1) 
     333         
     334        # ----- Add slit parameters ----- 
     335        if False: 
     336            sbox = wx.StaticBox(self, -1, "Slit parameters") 
     337            sboxsizer = wx.StaticBoxSizer(sbox, wx.VERTICAL) 
     338            sboxsizer.SetMinSize((320,20)) 
     339             
     340            sizer_slit = wx.GridBagSizer(5,5) 
     341     
     342            label_sheight = wx.StaticText(self, -1, "Height") 
     343            label_swidth = wx.StaticText(self, -1, "Width") 
     344            #label_sunits1 = wx.StaticText(self, -1, "[A^(-1)]") 
     345            label_sunits2 = wx.StaticText(self, -1, "[A^(-1)]") 
     346            self.sheight_ctl = wx.TextCtrl(self, -1, size=(60,20)) 
     347            self.swidth_ctl = wx.TextCtrl(self, -1, size=(60,20)) 
     348            self.sheight_ctl.SetToolTipString("Enter slit height in units of Q or leave blank.") 
     349            self.swidth_ctl.SetToolTipString("Enter slit width in units of Q or leave blank.") 
     350            self.sheight_ctl.Bind(wx.EVT_TEXT, self._on_pars_changed) 
     351            self.swidth_ctl.Bind(wx.EVT_TEXT,  self._on_pars_changed) 
     352             
     353            iy = 0 
     354            sizer_slit.Add(label_sheight,    (iy,0), (1,1), wx.LEFT|wx.EXPAND, 15) 
     355            sizer_slit.Add(self.sheight_ctl, (iy,1), (1,1), wx.LEFT|wx.EXPAND, 10) 
     356            #sizer_slit.Add(label_sunits1,    (iy,2), (1,1), wx.LEFT|wx.EXPAND, 10) 
     357            sizer_slit.Add(label_swidth,     (iy,2), (1,1), wx.LEFT|wx.EXPAND, 15) 
     358            sizer_slit.Add(self.swidth_ctl,  (iy,3), (1,1), wx.LEFT|wx.EXPAND, 10) 
     359            sizer_slit.Add(label_sunits2,    (iy,4), (1,1), wx.LEFT|wx.EXPAND, 10) 
     360             
     361            sboxsizer.Add(sizer_slit, wx.TOP, 15) 
     362            vbox.Add(sboxsizer) 
     363         
    298364 
    299365        # ----- Parameters ----- 
     
    335401         
    336402        # EVT_TEXT would trigger an event for each character entered 
    337         self.nfunc_ctl.Bind(wx.EVT_KILL_FOCUS, self._on_pars_changed) 
    338         self.alpha_ctl.Bind(wx.EVT_KILL_FOCUS, self._read_pars) 
    339         self.dmax_ctl.Bind(wx.EVT_KILL_FOCUS, self._on_pars_changed) 
     403        #self.nfunc_ctl.Bind(wx.EVT_KILL_FOCUS, self._on_pars_changed) 
     404        #self.alpha_ctl.Bind(wx.EVT_KILL_FOCUS, self._read_pars) 
     405        #self.dmax_ctl.Bind(wx.EVT_KILL_FOCUS, self._on_pars_changed) 
    340406        #self.dmax_ctl.Bind(wx.EVT_TEXT_ENTER, self._on_pars_changed) 
    341407        #self.Bind(wx.EVT_TEXT_ENTER, self._on_pars_changed) 
     408         
     409        self.nfunc_ctl.Bind(wx.EVT_TEXT, self._on_pars_changed) 
     410        self.alpha_ctl.Bind(wx.EVT_TEXT, self._read_pars) 
     411        self.dmax_ctl.Bind(wx.EVT_TEXT, self._on_pars_changed) 
     412         
     413         
    342414         
    343415        sizer_params = wx.GridBagSizer(5,5) 
     
    369441        label_qmin = wx.StaticText(self, -1, "Q min") 
    370442        label_qmax = wx.StaticText(self, -1, "Q max") 
     443        #label_qunits1 = wx.StaticText(self, -1, "[A^(-1)]") 
     444        label_qunits2 = wx.StaticText(self, -1, "[A^(-1)]") 
    371445        self.qmin_ctl = wx.TextCtrl(self, -1, size=(60,20)) 
    372446        self.qmax_ctl = wx.TextCtrl(self, -1, size=(60,20)) 
    373         self.qmin_ctl.Bind(wx.EVT_KILL_FOCUS, self._on_pars_changed) 
    374         self.qmax_ctl.Bind(wx.EVT_KILL_FOCUS, self._on_pars_changed) 
     447        self.qmin_ctl.SetToolTipString("Select a lower bound for Q or leave blank.") 
     448        self.qmax_ctl.SetToolTipString("Select an upper bound for Q or leave blank.") 
     449        self.qmin_ctl.Bind(wx.EVT_TEXT, self._on_pars_changed) 
     450        self.qmax_ctl.Bind(wx.EVT_TEXT, self._on_pars_changed) 
    375451         
    376452        iy = 0 
    377         sizer_q.Add(label_qmin, (iy,0), (1,1), wx.LEFT|wx.EXPAND, 15) 
     453        sizer_q.Add(label_qmin,    (iy,0), (1,1), wx.LEFT|wx.EXPAND, 15) 
    378454        sizer_q.Add(self.qmin_ctl, (iy,1), (1,1), wx.LEFT|wx.EXPAND, 10) 
    379         sizer_q.Add(label_qmax, (iy,2), (1,1), wx.LEFT|wx.EXPAND, 15) 
     455        #sizer_q.Add(label_qunits1, (iy,2), (1,1), wx.LEFT|wx.EXPAND, 15) 
     456        sizer_q.Add(label_qmax,    (iy,2), (1,1), wx.LEFT|wx.EXPAND, 15) 
    380457        sizer_q.Add(self.qmax_ctl, (iy,3), (1,1), wx.LEFT|wx.EXPAND, 10) 
     458        sizer_q.Add(label_qunits2, (iy,4), (1,1), wx.LEFT|wx.EXPAND, 15) 
    381459        qboxsizer.Add(sizer_q, wx.TOP, 15) 
    382460        vbox.Add(qboxsizer) 
     
    388466        ressizer = wx.StaticBoxSizer(resbox, wx.VERTICAL) 
    389467        ressizer.SetMinSize((320,50)) 
     468         
     469        label_rg       = wx.StaticText(self, -1, "Rg") 
     470        label_rg_unit  = wx.StaticText(self, -1, "[A]") 
     471        label_iq0      = wx.StaticText(self, -1, "I(Q=0)") 
     472        label_iq0_unit = wx.StaticText(self, -1, "[A^(-1)]") 
     473        label_bck      = wx.StaticText(self, -1, "Background") 
     474        label_bck_unit = wx.StaticText(self, -1, "[A^(-1)]") 
     475        self.rg_ctl    = wx.TextCtrl(self, -1, size=(60,20)) 
     476        self.rg_ctl.SetEditable(False) 
     477        self.rg_ctl.SetToolTipString("Radius of gyration for the computed P(r).") 
     478        self.iq0_ctl   = wx.TextCtrl(self, -1, size=(60,20)) 
     479        self.iq0_ctl.SetEditable(False) 
     480        self.iq0_ctl.SetToolTipString("Scattering intensity at Q=0 for the computed P(r).") 
     481        self.bck_ctl   = wx.TextCtrl(self, -1, size=(60,20)) 
     482        self.bck_ctl.SetEditable(False) 
     483        self.bck_ctl.SetToolTipString("Value of estimated constant background.") 
    390484         
    391485        label_time = wx.StaticText(self, -1, "Computation time") 
     
    427521 
    428522        iy = 0 
     523        sizer_res.Add(label_rg, (iy,0), (1,1), wx.LEFT|wx.EXPAND, 15) 
     524        sizer_res.Add(self.rg_ctl,   (iy,1), (1,1), wx.RIGHT|wx.EXPAND, 15) 
     525        sizer_res.Add(label_rg_unit,   (iy,2), (1,1), wx.RIGHT|wx.EXPAND, 15) 
     526        iy += 1 
     527        sizer_res.Add(label_iq0, (iy,0), (1,1), wx.LEFT|wx.EXPAND, 15) 
     528        sizer_res.Add(self.iq0_ctl,   (iy,1), (1,1), wx.RIGHT|wx.EXPAND, 15) 
     529        sizer_res.Add(label_iq0_unit,   (iy,2), (1,1), wx.RIGHT|wx.EXPAND, 15) 
     530        iy += 1 
     531        sizer_res.Add(label_bck, (iy,0), (1,1), wx.LEFT|wx.EXPAND, 15) 
     532        sizer_res.Add(self.bck_ctl,   (iy,1), (1,1), wx.RIGHT|wx.EXPAND, 15) 
     533        sizer_res.Add(label_bck_unit,   (iy,2), (1,1), wx.RIGHT|wx.EXPAND, 15) 
     534        iy += 1 
    429535        sizer_res.Add(label_time, (iy,0), (1,1), wx.LEFT|wx.EXPAND, 15) 
    430536        sizer_res.Add(self.time_ctl,   (iy,1), (1,1), wx.RIGHT|wx.EXPAND, 15) 
     
    472578 
    473579        self.SetSizer(vbox) 
    474          
    475  
    476580         
    477581    def _on_accept_alpha(self, evt): 
     
    500604        self.qmax_ctl.SetValue("") 
    501605        self.time_ctl.SetValue("") 
     606        self.rg_ctl.SetValue("") 
     607        self.iq0_ctl.SetValue("") 
     608        self.bck_ctl.SetValue("") 
    502609        self.chi2_ctl.SetValue("") 
    503610        self.osc_ctl.SetValue("") 
     
    515622        """ 
    516623        flag, alpha, dmax, nfunc, qmin, qmax = self._read_pars() 
     624        has_bck = self.bck_chk.IsChecked() 
    517625         
    518626        # If the pars are valid, estimate alpha 
     
    522630                self.manager.estimate_plot_inversion(alpha=alpha, nfunc=nfunc,  
    523631                                                     d_max=dmax, 
    524                                                      q_min=qmin, q_max=qmax) 
     632                                                     q_min=qmin, q_max=qmax, 
     633                                                     bck=has_bck) 
    525634            else: 
    526635                path = self.data_file.GetValue() 
    527636                self.manager.estimate_file_inversion(alpha=alpha, nfunc=nfunc,  
    528637                                                     d_max=dmax, path=path, 
    529                                                      q_min=qmin, q_max=qmax) 
     638                                                     q_min=qmin, q_max=qmax, 
     639                                                     bck=has_bck) 
    530640         
    531641         
     
    613723         
    614724        flag, alpha, dmax, nfunc, qmin, qmax = self._read_pars() 
     725        has_bck = self.bck_chk.IsChecked() 
    615726         
    616727        if flag: 
     
    623734                    self.manager.setup_plot_inversion(alpha=alpha, nfunc=nfunc,  
    624735                                                      d_max=dmax, 
    625                                                       q_min=qmin, q_max=qmax) 
     736                                                      q_min=qmin, q_max=qmax, 
     737                                                      bck=has_bck) 
    626738            else: 
    627739                path = self.data_file.GetValue() 
     
    632744                    self.manager.setup_file_inversion(alpha=alpha, nfunc=nfunc,  
    633745                                                      d_max=dmax, path=path, 
    634                                                       q_min=qmin, q_max=qmax 
    635                                                       ) 
     746                                                      q_min=qmin, q_max=qmax, 
     747                                                      bck=has_bck) 
    636748                 
    637749        else: 
     
    649761            if path and os.path.isfile(path): 
    650762                self.data_file.SetValue(str(path)) 
    651                 self.file_radio.SetValue(True) 
     763                if self.standalone==False: 
     764                    self.file_radio.SetValue(True) 
    652765                self._on_pars_changed(None) 
    653766                self.manager.show_data(path) 
  • prview/perspectives/pr/pr.py

    r9b85e93 ra4bd2ac  
    4545        self.q_min      = None 
    4646        self.q_max      = None 
     47        self.has_bck    = False 
    4748        ## Remember last plottable processed 
    4849        self.last_data  = "sphere_60_q0_2.txt" 
     
    7879        """ 
    7980        return [] 
    80         import wx 
    81         shapes = wx.Menu() 
    82  
    83         id = wx.NewId() 
    84         shapes.Append(id, '&Sphere test') 
    85         wx.EVT_MENU(owner, id, self._fit_pr) 
    86          
    87         return [(id, shapes, "P(r)")] 
    8881     
    8982    def help(self, evt): 
     
    440433        self.control_panel.positive = pr.get_positive(out) 
    441434        self.control_panel.pos_err  = pr.get_pos_err(out, cov) 
     435        self.control_panel.rg = pr.rg(out) 
     436        self.control_panel.iq0 = pr.iq0(out) 
     437        self.control_panel.bck = pr.background 
    442438         
    443439        for i in range(len(out)): 
     
    457453            wx.PostEvent(self.parent, NewPlotEvent(plot=new_plot, title="Iq")) 
    458454                 
     455        # Compute the fit I(Q=0) 
     456        try: 
     457            print "I(0) = ", self.pr.iq0(out) 
     458        except: 
     459            pass 
     460         
     461        # Get R_g 
     462        print "Rg = ", self.pr.rg(out) 
    459463        # Show I(q) fit 
    460464        self.show_iq(out, self.pr) 
     
    485489 
    486490         
    487     def setup_plot_inversion(self, alpha, nfunc, d_max, q_min=None, q_max=None): 
     491    def setup_plot_inversion(self, alpha, nfunc, d_max, q_min=None, q_max=None, bck=False): 
    488492        self.alpha = alpha 
    489493        self.nfunc = nfunc 
     
    491495        self.q_min = q_min 
    492496        self.q_max = q_max 
     497        self.has_bck = bck 
    493498         
    494499        try: 
     
    498503            wx.PostEvent(self.parent, StatusEvent(status=sys.exc_value)) 
    499504 
    500     def estimate_plot_inversion(self, alpha, nfunc, d_max, q_min=None, q_max=None): 
     505    def estimate_plot_inversion(self, alpha, nfunc, d_max, q_min=None, q_max=None, bck=False): 
    501506        self.alpha = alpha 
    502507        self.nfunc = nfunc 
     
    504509        self.q_min = q_min 
    505510        self.q_max = q_max 
     511        self.has_bck = bck 
    506512         
    507513        try: 
     
    525531        pr.x = self.current_plottable.x 
    526532        pr.y = self.current_plottable.y 
     533        pr.has_bck = self.has_bck 
    527534         
    528535        # Fill in errors if none were provided 
     
    540547 
    541548           
    542     def setup_file_inversion(self, alpha, nfunc, d_max, path, q_min=None, q_max=None): 
     549    def setup_file_inversion(self, alpha, nfunc, d_max, path, q_min=None, q_max=None, bck=False): 
    543550        self.alpha = alpha 
    544551        self.nfunc = nfunc 
     
    546553        self.q_min = q_min 
    547554        self.q_max = q_max 
     555        self.has_bck = bck 
    548556         
    549557        try: 
     
    553561            wx.PostEvent(self.parent, StatusEvent(status=sys.exc_value)) 
    554562           
    555     def estimate_file_inversion(self, alpha, nfunc, d_max, path, q_min=None, q_max=None): 
     563    def estimate_file_inversion(self, alpha, nfunc, d_max, path, q_min=None, q_max=None, bck=False): 
    556564        self.alpha = alpha 
    557565        self.nfunc = nfunc 
     
    559567        self.q_min = q_min 
    560568        self.q_max = q_max 
     569        self.has_bck = bck 
    561570         
    562571        try: 
     
    586595            pr.y = y 
    587596            pr.err = err 
     597            pr.has_bck = self.has_bck 
    588598             
    589599            self.pr = pr 
  • prview/release_notes.txt

    re009ce1 ra4bd2ac  
    66Package name: None 
    77 
    8 1- Version 0.1.0 
     81- Version 0.1.1 
     9 
     10        - Release date: 6/XX/2008 
     11        - First version put together built on guiframe. 
     12 
     13   Version 0.1.0 
    914 
    1015        - Release date: 5/28/2008 
  • prview/setup_exe.py

    r4a5de6f ra4bd2ac  
    1414 
    1515import py2exe 
     16 
     17manifest = """ 
     18   <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
     19   <assembly xmlns="urn:schemas-microsoft-com:asm.v1" 
     20   manifestVersion="1.0"> 
     21   <assemblyIdentity 
     22       version="0.64.1.0" 
     23       processorArchitecture="x86" 
     24       name="Controls" 
     25       type="win32" 
     26   /> 
     27   <description>PrView</description> 
     28   <dependency> 
     29       <dependentAssembly> 
     30           <assemblyIdentity 
     31               type="win32" 
     32               name="Microsoft.Windows.Common-Controls" 
     33               version="6.0.0.0" 
     34               processorArchitecture="X86" 
     35               publicKeyToken="6595b64144ccf1df" 
     36               language="*" 
     37           /> 
     38       </dependentAssembly> 
     39   </dependency> 
     40   </assembly> 
     41  """ 
    1642 
    1743     
     
    5985    #other_resources = [(RT_MANIFEST, 1, manifest_template % dict(prog="AppJob"))], 
    6086    icon_resources = [(1, "images/ball.ico")], 
     87    other_resources = [(24,1,manifest)], 
    6188    dest_base = "prView" 
    6289    ) 
Note: See TracChangeset for help on using the changeset viewer.