Changeset e1e41de in sasview for src/sas/sasgui/perspectives/fitting


Ignore:
Timestamp:
Dec 15, 2016 4:16:17 AM (8 years ago)
Author:
jhbakker
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, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
55bc5a7f, a840efb
Parents:
c6728e1 (diff), ec57735 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into Jurtest

Location:
src/sas/sasgui/perspectives/fitting
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/sas/sasgui/perspectives/fitting/media/plugin.rst

    r20cfa23 rca1eaeb  
    560560 
    561561    M_PI_180, M_4PI_3: 
    562         $\pi/{180}$, $\tfrac{4}{3}\pi$ 
     562        $\frac{\pi}{180}$, $\frac{4\pi}{3}$ 
    563563    SINCOS(x, s, c): 
    564564        Macro which sets s=sin(x) and c=cos(x). The variables *c* and *s* 
     
    596596These functions have been tuned to be fast and numerically stable down 
    597597to $q=0$ even in single precision.  In some cases they work around bugs 
    598 which appear on some platforms but not others. So use them where needed!!! 
     598which appear on some platforms but not others, so use them where needed. 
     599Add the files listed in :code:`source = ["lib/file.c", ...]` to your *model.py* 
     600file in the order given, otherwise these functions will not be available. 
    599601 
    600602    polevl(x, c, n): 
    601         Polynomial evaluation $p(x) = \sum_{i=0}^n c_i x^{n-i}$ using Horner's 
     603        Polynomial evaluation $p(x) = \sum_{i=0}^n c_i x^i$ using Horner's 
    602604        method so it is faster and more accurate. 
    603605 
     606        $c = \{c_n, c_{n-1}, \ldots, c_0 \}$ is the table of coefficients, 
     607        sorted from highest to lowest. 
     608 
     609        :code:`source = ["lib/polevl.c", ...]` (`link to code <https://github.com/SasView/sasmodels/tree/master/sasmodels/models/lib/polevl.c>`_) 
     610 
     611    p1evl(x, c, n): 
     612        Evaluation of normalized polynomial $p(x) = x^n + \sum_{i=0}^{n-1} c_i x^i$ 
     613        using Horner's method so it is faster and more accurate. 
     614 
     615        $c = \{c_{n-1}, c_{n-2} \ldots, c_0 \}$ is the table of coefficients, 
     616        sorted from highest to lowest. 
     617 
    604618        :code:`source = ["lib/polevl.c", ...]` 
    605  
    606     sas_gamma: 
    607         Gamma function $\text{sas_gamma}(x) = \Gamma(x)$.  The standard math 
    608         library gamma function, tgamma(x) is unstable below 1 on some platforms. 
     619        (`link to code <https://github.com/SasView/sasmodels/tree/master/sasmodels/models/lib/polevl.c>`_) 
     620 
     621    sas_gamma(x): 
     622        Gamma function $\text{sas_gamma}(x) = \Gamma(x)$. 
     623 
     624        The standard math function, tgamma(x) is unstable for $x < 1$ 
     625        on some platforms. 
    609626 
    610627        :code:`source = ["lib/sasgamma.c", ...]` 
    611  
    612     erf, erfc: 
     628        (`link to code <https://github.com/SasView/sasmodels/tree/master/sasmodels/models/lib/sas_gamma.c>`_) 
     629 
     630    sas_erf(x), sas_erfc(x): 
    613631        Error function 
    614         $\text{erf}(x) = \frac{1}{\sqrt\pi}\int_0^x e^{-t^2}\,dt$ 
     632        $\text{sas_erf}(x) = \frac{2}{\sqrt\pi}\int_0^x e^{-t^2}\,dt$ 
    615633        and complementary error function 
    616         $\text{erfc}(x) = \frac{1}{\sqrt\pi}\int_x^\inf e^{-t^2}\,dt$. 
    617         The standard math library erf and erfc are slower and broken 
     634        $\text{sas_erfc}(x) = \frac{2}{\sqrt\pi}\int_x^{\infty} e^{-t^2}\,dt$. 
     635 
     636        The standard math functions erf(x) and erfc(x) are slower and broken 
    618637        on some platforms. 
    619638 
    620639        :code:`source = ["lib/polevl.c", "lib/sas_erf.c", ...]` 
    621  
    622     sas_J0: 
    623         Bessel function of the first kind where 
     640        (`link to error functions' code <https://github.com/SasView/sasmodels/tree/master/sasmodels/models/lib/sas_erf.c>`_) 
     641 
     642    sas_J0(x): 
     643        Bessel function of the first kind $\text{sas_J0}(x)=J_0(x)$ where 
    624644        $J_0(x) = \frac{1}{\pi}\int_0^\pi \cos(x\sin(\tau))\,d\tau$. 
    625645 
     646        The standard math function j0(x) is not available on all platforms. 
     647 
    626648        :code:`source = ["lib/polevl.c", "lib/sas_J0.c", ...]` 
    627  
    628     sas_J1: 
    629         Bessel function of the first kind where 
     649        (`link to Bessel function's code <https://github.com/SasView/sasmodels/tree/master/sasmodels/models/lib/sas_J0.c>`_) 
     650 
     651    sas_J1(x): 
     652        Bessel function of the first kind  $\text{sas_J1}(x)=J_1(x)$ where 
    630653        $J_1(x) = \frac{1}{\pi}\int_0^\pi \cos(\tau - x\sin(\tau))\,d\tau$. 
    631654 
     655        The standard math function j1(x) is not available on all platforms. 
     656 
    632657        :code:`source = ["lib/polevl.c", "lib/sas_J1.c", ...]` 
    633  
    634     sas_JN: 
    635         Bessel function of the first kind where 
     658        (`link to Bessel function's code <https://github.com/SasView/sasmodels/tree/master/sasmodels/models/lib/sas_J1.c>`_) 
     659 
     660    sas_JN(n, x): 
     661        Bessel function of the first kind and integer order $n$: 
     662        $\text{sas_JN}(n, x)=J_n(x)$ where 
    636663        $J_n(x) = \frac{1}{\pi}\int_0^\pi \cos(n\tau - x\sin(\tau))\,d\tau$. 
     664        If $n$ = 0 or 1, it uses sas_J0(x) or sas_J1(x), respectively. 
     665 
     666        The standard math function jn(n, x) is not available on all platforms. 
    637667 
    638668        :code:`source = ["lib/polevl.c", "lib/sas_J0.c", "lib/sas_J1.c", "lib/sas_JN.c", ...]` 
    639  
    640     Si: 
     669        (`link to Bessel function's code <https://github.com/SasView/sasmodels/tree/master/sasmodels/models/lib/sas_JN.c>`_) 
     670 
     671    Si(x): 
    641672        Sine integral $\text{Si}(x) = \int_0^x \tfrac{\sin t}{t}\,dt$. 
    642673 
    643         :code:`soure = ["lib/Si.c", ...]` 
    644  
    645     sph_j1c(qr): 
     674        This function uses Taylor series for small and large arguments: 
     675 
     676        For large arguments, 
     677 
     678        .. math:: 
     679 
     680             \text{Si}(x) \sim \frac{\pi}{2} 
     681             - \frac{\cos(x)}{x}\left(1 - \frac{2!}{x^2} + \frac{4!}{x^4} - \frac{6!}{x^6} \right) 
     682             - \frac{\sin(x)}{x}\left(\frac{1}{x} - \frac{3!}{x^3} + \frac{5!}{x^5} - \frac{7!}{x^7}\right) 
     683 
     684        For small arguments, 
     685 
     686        .. math:: 
     687 
     688           \text{Si}(x) \sim x 
     689           - \frac{x^3}{3\times 3!} + \frac{x^5}{5 \times 5!} - \frac{x^7}{7 \times 7!} 
     690           + \frac{x^9}{9\times 9!} - \frac{x^{11}}{11\times 11!} 
     691 
     692        :code:`source = ["lib/Si.c", ...]` 
     693        (`link to code <https://github.com/SasView/sasmodels/tree/master/sasmodels/models/lib/Si.c>`_) 
     694 
     695    sph_j1c(x): 
    646696        Spherical Bessel form 
    647         $F(qr) = 3 j_1(qr)/(qr) = 3 (\sin(qr) - qr \cos(qr))/{(qr)^3}$, 
    648         with a limiting value of 1 at $qr=0$.  This function uses a Taylor 
    649         series for small $qr$ for numerical accuracy. 
     697        $\text{sph_j1c}(x) = 3 j_1(x)/x = 3 (\sin(x) - x \cos(x))/x^3$, 
     698        with a limiting value of 1 at $x=0$, where $j_1(x)$ is the spherical 
     699        Bessel function of the first kind and first order. 
     700 
     701        This function uses a Taylor series for small $x$ for numerical accuracy. 
    650702 
    651703        :code:`source = ["lib/sph_j1c.c", ...]` 
    652  
    653     sas_J1c(qr): 
    654         Bessel form $F(qr) = 2 J_1(qr)/{(qr)}$, with a limiting value of 1 at $qr=0$. 
     704        (`link to code <https://github.com/SasView/sasmodels/tree/master/sasmodels/models/lib/sph_j1c.c>`_) 
     705 
     706 
     707    sas_J1c(x): 
     708        Bessel form $\text{sas_J1c}(x) = 2 J_1(x)/x$, with a limiting value 
     709        of 1 at $x=0$, where $J_1(x)$ is the Bessel function of first kind 
     710        and first order. 
    655711 
    656712        :code:`source = ["lib/polevl.c", "lib/sas_J1.c", ...]` 
    657  
    658     Gauss76z[i], Gauss76Wt[i]: 
    659         Points $z_i$ and weights $w_i$ for 76-point Gaussian quadrature, 
    660         computing $\int_{-1}^1 f(z)\,dz \approx \sum_{i=1}^{76} w_i f(z_i)$. 
    661         Similar arrays are available in :code:`gauss20.c` for 20 point 
    662         quadrature and in :code:`gauss150.c` for 150 point quadrature. 
    663  
    664         :code:`source = ["gauss76.c", ...]` 
     713        (`link to Bessel form's code <https://github.com/SasView/sasmodels/tree/master/sasmodels/models/lib/sas_J1.c>`_) 
     714 
     715 
     716    Gauss76Z[i], Gauss76Wt[i]: 
     717        Points $z_i$ and weights $w_i$ for 76-point Gaussian quadrature, respectively, 
     718        computing $\int_{-1}^1 f(z)\,dz \approx \sum_{i=1}^{76} w_i\,f(z_i)$. 
     719 
     720        Similar arrays are available in :code:`gauss20.c` for 20-point 
     721        quadrature and in :code:`gauss150.c` for 150-point quadrature. 
     722 
     723        :code:`source = ["lib/gauss76.c", ...]` 
     724        (`link to code <https://github.com/SasView/sasmodels/tree/master/sasmodels/models/lib/gauss76.c>`_) 
     725 
     726 
    665727 
    666728Problems with C models 
  • src/sas/sasgui/perspectives/fitting/basepage.py

    rc8e1996 rf668101  
    143143        self.theory_qmin_x = None 
    144144        self.theory_qmax_x = None 
     145        self.cb1 = None 
    145146        self.btEditMask = None 
    146147        self.btFit = None 
     
    281282                           num=self.npts_x, endpoint=True) 
    282283        self.data = Data1D(x=x) 
    283         self.data.xaxis('\\rm{Q}', "A^{-1}") 
    284         self.data.yaxis('\\rm{Intensity}', "cm^{-1}") 
     284        #self.data.xaxis('\\rm{Q}', "A^{-1}") 
     285        self.data.xaxis('\\rm{X}', "") 
     286        #self.data.yaxis('\\rm{Intensity}', "cm^{-1}") 
     287        self.data.yaxis('\\rm{Y}', "") 
    285288        self.data.is_data = False 
    286289        self.data.id = str(self.uid) + " data" 
     
    307310                           num=self.npts_x, endpoint=True, base=10.0) 
    308311        self.data = Data1D(x=x) 
    309         self.data.xaxis('\\rm{Q}', "A^{-1}") 
    310         self.data.yaxis('\\rm{Intensity}', "cm^{-1}") 
     312        #self.data.xaxis('\\rm{Q}', "A^{-1}") 
     313        #self.data.yaxis('\\rm{Intensity}', "cm^{-1}") 
     314        self.data.xaxis('\\rm{X}', "") 
     315        self.data.yaxis('\\rm{Y}', "") 
    311316        self.data.is_data = False 
    312317        self.data.id = str(self.uid) + " data" 
     
    11241129        # set data, etc. from the state 
    11251130        # reset page between theory and fitting from bookmarking 
     1131        #if state.data == None: 
     1132        #    data = None 
     1133        #else: 
    11261134        data = state.data 
    11271135 
     
    13401348                        except Exception: 
    13411349                            logging.error(traceback.format_exc()) 
     1350 
     1351        # Make sure the check box updated when all checked 
     1352        if self.cb1.GetValue(): 
     1353            self.select_all_param(None) 
    13421354 
    13431355    def _selectDlg(self): 
     
    24812493                        item[2].Enable() 
    24822494 
    2483             # Make sure the check box updated 
    2484             self.get_all_checked_params() 
     2495            # Make sure the check box updated when all checked 
     2496            if self.cb1.GetValue(): 
     2497                #self.select_all_param(None) 
     2498                self.get_all_checked_params() 
    24852499 
    24862500            # update params 
     
    36613675        call back for model selection if implemented 
    36623676        """ 
     3677    def select_all_param(self, event): 
     3678        """ 
     3679        set to true or false all checkBox if implemented 
     3680        """ 
    36633681    def get_weight_flag(self): 
    36643682        """ 
  • src/sas/sasgui/perspectives/fitting/fitpage.py

    rc8e1996 rf668101  
    168168            self.set_data(data) 
    169169        elif self.dataSource.GetCount() > 0: 
     170 
    170171            pos = self.dataSource.GetSelection() 
    171172            data = self.dataSource.GetClientData(pos) 
     
    617618        # fill a sizer with the combobox to select dispersion type 
    618619        model_disp = wx.StaticText(self, wx.ID_ANY, 'Function') 
    619         CHECK_STATE = False 
     620        CHECK_STATE = self.cb1.GetValue() 
    620621 
    621622        ix = 0 
     
    961962 
    962963        self.state.model = self.model.clone() 
     964 
    963965        # save state into 
    964966        self._copy_parameters_state(self.parameters, self.state.parameters) 
     
    971973        wx.PostEvent(self.parent, 
    972974                     StatusEvent(status=" Selected Distribution: Gaussian")) 
     975 
    973976        # Fill the list of fittable parameters 
    974977        self.get_all_checked_params() 
     
    26822685        self._manager.set_param2fit(self.uid, param2fit) 
    26832686 
     2687 
    26842688    def select_param(self, event=None): 
    26852689        """ 
     
    27282732        if len(self.fittable_param) > 0: 
    27292733            len_orient_para *= 2 
     2734        #Set the value of checkbox that selected every checkbox or not 
     2735        if len(self.parameters) + len(self.fittable_param) - len_orient_para \ 
     2736            == len(self.param_toFit): 
     2737            self.cb1.SetValue(True) 
     2738        else: 
     2739            self.cb1.SetValue(False) 
    27302740 
    27312741        self.save_current_state_fit() 
     
    28292839        iy = 0 
    28302840        ix = 0 
    2831         sizer.Add(wx.StaticText(self, wx.ID_ANY, 'Parameter'), 
    2832                   (iy, ix), (1, 1), wx.EXPAND | wx.ADJUST_MINSIZE, 0) 
     2841        select_text = "Select All" 
     2842        self.cb1 = wx.CheckBox(self, wx.ID_ANY, str(select_text), (10, 10)) 
     2843        wx.EVT_CHECKBOX(self, self.cb1.GetId(), self.select_all_param) 
     2844        self.cb1.SetToolTipString("To check/uncheck all the boxes below.") 
     2845        self.cb1.SetValue(True) 
     2846 
     2847        sizer.Add(self.cb1, (iy, ix), (1, 1), \ 
     2848                             wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 5) 
    28332849        ix += 1 
    28342850        self.text2_2 = wx.StaticText(self, wx.ID_ANY, 'Value') 
     
    28572873        self.text2_4.Hide() 
    28582874 
    2859         CHECK_STATE = False 
     2875        CHECK_STATE = self.cb1.GetValue() 
    28602876        for item in keys: 
    28612877 
Note: See TracChangeset for help on using the changeset viewer.