Changeset e1e41de in sasview for src/sas/sasgui/perspectives/fitting
- Timestamp:
- Dec 15, 2016 4:16:17 AM (8 years ago)
- 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. - Location:
- src/sas/sasgui/perspectives/fitting
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sasgui/perspectives/fitting/media/plugin.rst
r20cfa23 rca1eaeb 560 560 561 561 M_PI_180, M_4PI_3: 562 $\ pi/{180}$, $\tfrac{4}{3}\pi$562 $\frac{\pi}{180}$, $\frac{4\pi}{3}$ 563 563 SINCOS(x, s, c): 564 564 Macro which sets s=sin(x) and c=cos(x). The variables *c* and *s* … … 596 596 These functions have been tuned to be fast and numerically stable down 597 597 to $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!!! 598 which appear on some platforms but not others, so use them where needed. 599 Add the files listed in :code:`source = ["lib/file.c", ...]` to your *model.py* 600 file in the order given, otherwise these functions will not be available. 599 601 600 602 polevl(x, c, n): 601 Polynomial evaluation $p(x) = \sum_{i=0}^n c_i x^ {n-i}$ using Horner's603 Polynomial evaluation $p(x) = \sum_{i=0}^n c_i x^i$ using Horner's 602 604 method so it is faster and more accurate. 603 605 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 604 618 :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. 609 626 610 627 :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): 613 631 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$ 615 633 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 618 637 on some platforms. 619 638 620 639 :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 624 644 $J_0(x) = \frac{1}{\pi}\int_0^\pi \cos(x\sin(\tau))\,d\tau$. 625 645 646 The standard math function j0(x) is not available on all platforms. 647 626 648 :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 630 653 $J_1(x) = \frac{1}{\pi}\int_0^\pi \cos(\tau - x\sin(\tau))\,d\tau$. 631 654 655 The standard math function j1(x) is not available on all platforms. 656 632 657 :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 636 663 $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. 637 667 638 668 :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): 641 672 Sine integral $\text{Si}(x) = \int_0^x \tfrac{\sin t}{t}\,dt$. 642 673 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): 646 696 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. 650 702 651 703 :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. 655 711 656 712 :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 665 727 666 728 Problems with C models -
src/sas/sasgui/perspectives/fitting/basepage.py
rc8e1996 rf668101 143 143 self.theory_qmin_x = None 144 144 self.theory_qmax_x = None 145 self.cb1 = None 145 146 self.btEditMask = None 146 147 self.btFit = None … … 281 282 num=self.npts_x, endpoint=True) 282 283 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}', "") 285 288 self.data.is_data = False 286 289 self.data.id = str(self.uid) + " data" … … 307 310 num=self.npts_x, endpoint=True, base=10.0) 308 311 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}', "") 311 316 self.data.is_data = False 312 317 self.data.id = str(self.uid) + " data" … … 1124 1129 # set data, etc. from the state 1125 1130 # reset page between theory and fitting from bookmarking 1131 #if state.data == None: 1132 # data = None 1133 #else: 1126 1134 data = state.data 1127 1135 … … 1340 1348 except Exception: 1341 1349 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) 1342 1354 1343 1355 def _selectDlg(self): … … 2481 2493 item[2].Enable() 2482 2494 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() 2485 2499 2486 2500 # update params … … 3661 3675 call back for model selection if implemented 3662 3676 """ 3677 def select_all_param(self, event): 3678 """ 3679 set to true or false all checkBox if implemented 3680 """ 3663 3681 def get_weight_flag(self): 3664 3682 """ -
src/sas/sasgui/perspectives/fitting/fitpage.py
rc8e1996 rf668101 168 168 self.set_data(data) 169 169 elif self.dataSource.GetCount() > 0: 170 170 171 pos = self.dataSource.GetSelection() 171 172 data = self.dataSource.GetClientData(pos) … … 617 618 # fill a sizer with the combobox to select dispersion type 618 619 model_disp = wx.StaticText(self, wx.ID_ANY, 'Function') 619 CHECK_STATE = False620 CHECK_STATE = self.cb1.GetValue() 620 621 621 622 ix = 0 … … 961 962 962 963 self.state.model = self.model.clone() 964 963 965 # save state into 964 966 self._copy_parameters_state(self.parameters, self.state.parameters) … … 971 973 wx.PostEvent(self.parent, 972 974 StatusEvent(status=" Selected Distribution: Gaussian")) 975 973 976 # Fill the list of fittable parameters 974 977 self.get_all_checked_params() … … 2682 2685 self._manager.set_param2fit(self.uid, param2fit) 2683 2686 2687 2684 2688 def select_param(self, event=None): 2685 2689 """ … … 2728 2732 if len(self.fittable_param) > 0: 2729 2733 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) 2730 2740 2731 2741 self.save_current_state_fit() … … 2829 2839 iy = 0 2830 2840 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) 2833 2849 ix += 1 2834 2850 self.text2_2 = wx.StaticText(self, wx.ID_ANY, 'Value') … … 2857 2873 self.text2_4.Hide() 2858 2874 2859 CHECK_STATE = False2875 CHECK_STATE = self.cb1.GetValue() 2860 2876 for item in keys: 2861 2877
Note: See TracChangeset
for help on using the changeset viewer.