Changes in / [a57a902:dd02bce] in sasmodels
- Files:
-
- 3 added
- 5 deleted
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
.travis.yml
r947a61e rb419c2d 1 1 language: python 2 sudo: false 2 3 sudo: false 4 3 5 matrix: 4 6 include: 5 - os: linux 6 env: 7 - PY=2.7 8 - os: linux 9 env: 10 - PY=3.6 11 - os: osx 12 language: generic 13 env: 14 - PY=2.7 15 - os: osx 16 language: generic 17 env: 18 - PY=3.5 7 - os: linux 8 env: 9 - PY=2.7 10 - os: linux 11 env: 12 - PY=3.6 13 - os: osx 14 language: generic 15 env: 16 - PY=2.7 17 - os: osx 18 language: generic 19 env: 20 - PY=3.5 21 22 # whitelist 19 23 branches: 20 24 only: 21 - master 25 - master 26 22 27 addons: 23 28 apt: 24 packages: opencl-headers 29 packages: 30 opencl-headers 31 25 32 before_install: 26 - openssl aes-256-cbc -K $encrypted_fe6026add10a_key -iv $encrypted_fe6026add10a_iv 27 -in .travis/travis_rsa.enc -out .travis/travis_rsa -d 28 - echo $TRAVIS_OS_NAME 29 - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh 30 -O miniconda.sh; fi; 31 - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then wget https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh 32 -O miniconda.sh; fi; 33 - bash miniconda.sh -b -p $HOME/miniconda 34 - export PATH="$HOME/miniconda/bin:$PATH" 35 - hash -r 36 - conda update --yes conda 37 - conda info -a 38 - conda install --yes python=$PY numpy scipy cython mako cffi 33 - echo $TRAVIS_OS_NAME 34 35 - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then 36 wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh; 37 fi; 38 - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then 39 wget https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -O miniconda.sh; 40 fi; 41 42 - bash miniconda.sh -b -p $HOME/miniconda 43 - export PATH="$HOME/miniconda/bin:$PATH" 44 - hash -r 45 - conda update --yes conda 46 47 # Useful for debugging any issues with conda 48 - conda info -a 49 50 - conda install --yes python=$PY numpy scipy cython mako cffi 51 52 # Not testing with opencl below, so don't need to install it 53 #- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then 54 # pip install pyopencl; 55 # fi; 56 39 57 install: 40 - pip install bumps 41 - pip install unittest-xml-reporting 58 - pip install bumps 59 - pip install unittest-xml-reporting 60 42 61 script: 43 62 - python --version 44 63 - python -m sasmodels.model_test -v dll all 45 before_deploy: 46 - echo -e "Host danse.chem.utk.edu\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config 47 deploy: 48 skip_cleanup: true 49 provider: script 50 script: /bin/sh -ex ./deploy.sh 51 on: 52 branch: master 64 53 65 notifications: 54 66 slack: -
doc/conf.py
r30b60d2 r8ae8532 211 211 #latex_preamble = '' 212 212 LATEX_PREAMBLE=r""" 213 \newcommand{\lt}{<}214 \newcommand{\gt}{>}215 213 \renewcommand{\AA}{\text{\r{A}}} % Allow \AA in math mode 216 214 \usepackage[utf8]{inputenc} % Allow unicode symbols in text -
doc/guide/magnetism/magnetism.rst
r990d8df r990d8df 16 16 17 17 .. figure:: 18 mag_img/mag_vector. png18 mag_img/mag_vector.bmp 19 19 20 20 The magnetic scattering length density is then … … 36 36 37 37 .. figure:: 38 mag_img/M_angles_pic. png38 mag_img/M_angles_pic.bmp 39 39 40 40 If the angles of the $Q$ vector and the spin-axis $x'$ to the $x$ - axis are -
doc/guide/plugin.rst
r30b60d2 r870a2f4 117 117 Models that do not conform to these requirements will *never* be incorporated 118 118 into the built-in library. 119 120 More complete documentation for the sasmodels package can be found at 121 `<http://www.sasview.org/sasmodels>`_. In particular, 122 `<http://www.sasview.org/sasmodels/api/generate.html#module-sasmodels.generate>`_ 123 describes the structure of a model. 119 124 120 125 … … 608 613 609 614 sas_gamma(x): 610 Gamma function sas_gamma\ $(x) = \Gamma(x)$.615 Gamma function $\text{sas_gamma}(x) = \Gamma(x)$. 611 616 612 617 The standard math function, tgamma(x) is unstable for $x < 1$ … … 618 623 sas_erf(x), sas_erfc(x): 619 624 Error function 620 sas_erf\ $(x) = \frac{2}{\sqrt\pi}\int_0^x e^{-t^2}\,dt$625 $\text{sas_erf}(x) = \frac{2}{\sqrt\pi}\int_0^x e^{-t^2}\,dt$ 621 626 and complementary error function 622 sas_erfc\ $(x) = \frac{2}{\sqrt\pi}\int_x^{\infty} e^{-t^2}\,dt$.627 $\text{sas_erfc}(x) = \frac{2}{\sqrt\pi}\int_x^{\infty} e^{-t^2}\,dt$. 623 628 624 629 The standard math functions erf(x) and erfc(x) are slower and broken … … 629 634 630 635 sas_J0(x): 631 Bessel function of the first kind sas_J0\ $(x)=J_0(x)$ where636 Bessel function of the first kind $\text{sas_J0}(x)=J_0(x)$ where 632 637 $J_0(x) = \frac{1}{\pi}\int_0^\pi \cos(x\sin(\tau))\,d\tau$. 633 638 … … 638 643 639 644 sas_J1(x): 640 Bessel function of the first kind sas_J1\ $(x)=J_1(x)$ where645 Bessel function of the first kind $\text{sas_J1}(x)=J_1(x)$ where 641 646 $J_1(x) = \frac{1}{\pi}\int_0^\pi \cos(\tau - x\sin(\tau))\,d\tau$. 642 647 … … 647 652 648 653 sas_JN(n, x): 649 Bessel function of the first kind and integer order $n$ ,650 sas_JN\ $(n, x)=J_n(x)$ where654 Bessel function of the first kind and integer order $n$: 655 $\text{sas_JN}(n, x)=J_n(x)$ where 651 656 $J_n(x) = \frac{1}{\pi}\int_0^\pi \cos(n\tau - x\sin(\tau))\,d\tau$. 652 If $n$ = 0 or 1, it uses sas_J0( $x$) or sas_J1($x$), respectively.657 If $n$ = 0 or 1, it uses sas_J0(x) or sas_J1(x), respectively. 653 658 654 659 The standard math function jn(n, x) is not available on all platforms. … … 658 663 659 664 sas_Si(x): 660 Sine integral Si\ $(x) = \int_0^x \tfrac{\sin t}{t}\,dt$.665 Sine integral $\text{Si}(x) = \int_0^x \tfrac{\sin t}{t}\,dt$. 661 666 662 667 This function uses Taylor series for small and large arguments: … … 683 688 sas_3j1x_x(x): 684 689 Spherical Bessel form 685 sph_j1c\ $(x) = 3 j_1(x)/x = 3 (\sin(x) - x \cos(x))/x^3$,690 $\text{sph_j1c}(x) = 3 j_1(x)/x = 3 (\sin(x) - x \cos(x))/x^3$, 686 691 with a limiting value of 1 at $x=0$, where $j_1(x)$ is the spherical 687 692 Bessel function of the first kind and first order. … … 694 699 695 700 sas_2J1x_x(x): 696 Bessel form sas_J1c\ $(x) = 2 J_1(x)/x$, with a limiting value701 Bessel form $\text{sas_J1c}(x) = 2 J_1(x)/x$, with a limiting value 697 702 of 1 at $x=0$, where $J_1(x)$ is the Bessel function of first kind 698 703 and first order. -
doc/guide/resolution.rst
r30b60d2 rf8a2baa 212 212 elliptical Gaussian distribution. The $A$ is a normalization factor. 213 213 214 .. figure:: resolution_2d_rotation. png214 .. figure:: resolution_2d_rotation.gif 215 215 216 216 Coordinate axis rotation for 2D resolution calculation. -
doc/rst_prolog
r30b60d2 ra0fb06a 1 1 .. Set up some substitutions to make life easier... 2 .. Remove |biggamma|, etc. when they are no longer needed. 2 3 4 5 .. |alpha| unicode:: U+03B1 6 .. |beta| unicode:: U+03B2 7 .. |gamma| unicode:: U+03B3 8 .. |delta| unicode:: U+03B4 9 .. |epsilon| unicode:: U+03B5 10 .. |zeta| unicode:: U+03B6 11 .. |eta| unicode:: U+03B7 12 .. |theta| unicode:: U+03B8 13 .. |iota| unicode:: U+03B9 14 .. |kappa| unicode:: U+03BA 15 .. |lambda| unicode:: U+03BB 16 .. |mu| unicode:: U+03BC 17 .. |nu| unicode:: U+03BD 18 .. |xi| unicode:: U+03BE 19 .. |omicron| unicode:: U+03BF 20 .. |pi| unicode:: U+03C0 21 .. |rho| unicode:: U+03C1 22 .. |sigma| unicode:: U+03C3 23 .. |tau| unicode:: U+03C4 24 .. |upsilon| unicode:: U+03C5 25 .. |phi| unicode:: U+03C6 26 .. |chi| unicode:: U+03C7 27 .. |psi| unicode:: U+03C8 28 .. |omega| unicode:: U+03C9 29 30 31 .. |biggamma| unicode:: U+0393 32 .. |bigdelta| unicode:: U+0394 33 .. |bigzeta| unicode:: U+039E 34 .. |bigpsi| unicode:: U+03A8 35 .. |bigphi| unicode:: U+03A6 36 .. |bigsigma| unicode:: U+03A3 37 .. |Gamma| unicode:: U+0393 38 .. |Delta| unicode:: U+0394 39 .. |Zeta| unicode:: U+039E 40 .. |Psi| unicode:: U+03A8 41 42 43 .. |drho| replace:: |Delta|\ |rho| 3 44 .. |Ang| unicode:: U+212B 4 45 .. |Ang^-1| replace:: |Ang|\ :sup:`-1` … … 16 57 .. |cm^-3| replace:: cm\ :sup:`-3` 17 58 .. |sr^-1| replace:: sr\ :sup:`-1` 59 .. |P0| replace:: P\ :sub:`0`\ 60 .. |A2| replace:: A\ :sub:`2`\ 61 62 63 .. |equiv| unicode:: U+2261 64 .. |noteql| unicode:: U+2260 65 .. |TM| unicode:: U+2122 66 18 67 19 68 .. |cdot| unicode:: U+00B7 -
sasmodels/generate.py
r30b60d2 r573ffab 210 210 211 211 # Conversion from units defined in the parameter table for each model 212 # to units displayed in the sphinx documentation. 212 # to units displayed in the sphinx documentation. 213 213 # This section associates the unit with the macro to use to produce the LaTex 214 214 # code. The macro itself needs to be defined in sasmodels/doc/rst_prolog. … … 216 216 # NOTE: there is an RST_PROLOG at the end of this file which is NOT 217 217 # used for the bundled documentation. Still as long as we are defining the macros 218 # in two places any new addition should define the macro in both places. 218 # in two places any new addition should define the macro in both places. 219 219 RST_UNITS = { 220 220 "Ang": "|Ang|", … … 898 898 .. |cm^-3| replace:: cm\ :sup:`-3` 899 899 .. |sr^-1| replace:: sr\ :sup:`-1` 900 .. |P0| replace:: P\ :sub:`0`\ 901 902 .. |equiv| unicode:: U+2261 903 .. |noteql| unicode:: U+2260 904 .. |TM| unicode:: U+2122 900 905 901 906 .. |cdot| unicode:: U+00B7 -
sasmodels/models/binary_hard_sphere.py
r30b60d2 r8f04da4 23 23 :nowrap: 24 24 25 \begin{align *}25 \begin{align} 26 26 x &= \frac{(\phi_2 / \phi)\alpha^3}{(1-(\phi_2/\phi) + (\phi_2/\phi) 27 27 \alpha^3)} \\ 28 28 \phi &= \phi_1 + \phi_2 = \text{total volume fraction} \\ 29 29 \alpha &= R_1/R_2 = \text{size ratio} 30 \end{align *}30 \end{align} 31 31 32 32 The 2D scattering intensity is the same as 1D, regardless of the orientation of -
sasmodels/models/core_shell_bicelle.py
r30b60d2 ra151caa 41 41 42 42 I(Q,\alpha) = \frac{\text{scale}}{V_t} \cdot 43 F(Q,\alpha)^2 \cdotsin(\alpha) + \text{background}43 F(Q,\alpha)^2.sin(\alpha) + \text{background} 44 44 45 45 where 46 46 47 47 .. math:: 48 :nowrap:49 48 50 \begin{align *}49 \begin{align} 51 50 F(Q,\alpha) = &\bigg[ 52 51 (\rho_c - \rho_f) V_c \frac{2J_1(QRsin \alpha)}{QRsin\alpha}\frac{sin(QLcos\alpha/2)}{Q(L/2)cos\alpha} \\ … … 54 53 &+(\rho_r - \rho_s) V_t \frac{2J_1(Q(R+t_r)sin\alpha)}{Q(R+t_r)sin\alpha}\frac{sin(Q(L/2+t_f)cos\alpha)}{Q(L/2+t_f)cos\alpha} 55 54 \bigg] 56 \end{align *}55 \end{align} 57 56 58 57 where $V_t$ is the total volume of the bicelle, $V_c$ the volume of the core, -
sasmodels/models/core_shell_bicelle_elliptical.py
r30b60d2 r8f04da4 42 42 43 43 I(Q,\alpha,\psi) = \frac{\text{scale}}{V_t} \cdot 44 F(Q,\alpha, \psi)^2 \cdotsin(\alpha) + \text{background}44 F(Q,\alpha, \psi)^2.sin(\alpha) + \text{background} 45 45 46 where a numerical integration of $F(Q,\alpha, \psi)^2 \cdotsin(\alpha)$ is carried out over \alpha and \psi for:46 where a numerical integration of $F(Q,\alpha, \psi)^2.sin(\alpha)$ is carried out over \alpha and \psi for: 47 47 48 48 .. math:: 49 :nowrap:50 49 51 \begin{align*}50 \begin{align} 52 51 F(Q,\alpha,\psi) = &\bigg[ 53 52 (\rho_c - \rho_f) V_c \frac{2J_1(QR'sin \alpha)}{QR'sin\alpha}\frac{sin(QLcos\alpha/2)}{Q(L/2)cos\alpha} \\ … … 55 54 &+(\rho_r - \rho_s) V_t \frac{2J_1(Q(R'+t_r)sin\alpha)}{Q(R'+t_r)sin\alpha}\frac{sin(Q(L/2+t_f)cos\alpha)}{Q(L/2+t_f)cos\alpha} 56 55 \bigg] 57 \end{align *}56 \end{align} 58 57 59 58 where -
sasmodels/models/core_shell_ellipsoid.py
r30b60d2 r9f6823b 44 44 45 45 .. math:: 46 :nowrap: 47 48 \begin{align*} 46 \begin{align} 49 47 F(q,\alpha) = &f(q,radius\_equat\_core,radius\_equat\_core.x\_core,\alpha) \\ 50 48 &+ f(q,radius\_equat\_core + thick\_shell,radius\_equat\_core.x\_core + thick\_shell.x\_polar\_shell,\alpha) 51 \end{align *}49 \end{align} 52 50 53 51 where -
sasmodels/models/fractal_core_shell.py
r8f04da4 r8f04da4 31 31 $\rho_{solv}$ are the scattering length densities of the core, shell, and 32 32 solvent respectively, $r_c$ and $r_s$ are the radius of the core and the radius 33 of the whole particle respectively, $D_f$ is the fractal dimension, and $\xi$the33 of the whole particle respectively, $D_f$ is the fractal dimension, and |xi| the 34 34 correlation length. 35 35 -
sasmodels/models/hollow_rectangular_prism.py
r30b60d2 r8f04da4 31 31 :nowrap: 32 32 33 \begin{align *}33 \begin{align} 34 34 A_{P\Delta}(q) & = A B C 35 35 \left[\frac{\sin \bigl( q \frac{C}{2} \cos\theta \bigr)} … … 47 47 \left[ \frac{\sin \bigl[ q \bigl(\frac{B}{2}-\Delta\bigr) \sin\theta \cos\phi \bigr]} 48 48 {q \bigl(\frac{B}{2}-\Delta\bigr) \sin\theta \cos\phi} \right] 49 \end{align *}49 \end{align} 50 50 51 51 where $A$, $B$ and $C$ are the external sides of the parallelepiped fulfilling -
sasmodels/models/line.py
rc63a7c8 r48462b0 15 15 16 16 .. math:: 17 18 17 I(q) = \text{scale} (I(qx) \cdot I(qy)) + \text{background} 19 18 -
sasmodels/models/multilayer_vesicle.py
r870a2f4 r870a2f4 33 33 .. math:: 34 34 35 r_i &= r_c + (i-1)(t_s + t_w) \text{ solvent radius before shell } i \\36 R_i &= r_i + t_s \text{ shell radius for shell } i35 r_i &= r_c + (i-1)(t_s + t_w) && \text{ solvent radius before shell } i \\ 36 R_i &= r_i + t_s && \text{ shell radius for shell } i 37 37 38 38 $\phi$ is the volume fraction of particles, $V(r)$ is the volume of a sphere -
sasmodels/models/parallelepiped.py
r30b60d2 r8f04da4 20 20 Parallelepiped with the corresponding definition of sides. 21 21 22 The three dimensions of the parallelepiped (strictly here a cuboid) may be 23 given in *any* size order. To avoid multiple fit solutions, especially 24 with Monte-Carlo fit methods, it may be advisable to restrict their ranges. 25 There may be a number of closely similar "best fits", so some trial and 26 error, or fixing of some dimensions at expected values, may help. 22 .. note:: 23 24 The three dimensions of the parallelepiped (strictly here a cuboid) may be given in 25 $any$ size order. To avoid multiple fit solutions, especially 26 with Monte-Carlo fit methods, it may be advisable to restrict their ranges. There may 27 be a number of closely similar "best fits", so some trial and error, or fixing of some 28 dimensions at expected values, may help. 27 29 28 30 The 1D scattering intensity $I(q)$ is calculated as: -
sasmodels/models/rpa.py
r30b60d2 r4f9e288 30 30 These case numbers are different from those in the NIST SANS package! 31 31 32 The models are based on the papers by Akcasu *et al.*and by33 Hammouda assuming the polymer follows Gaussian statistics such32 The models are based on the papers by Akcasu et al. [#Akcasu]_ and by 33 Hammouda [#Hammouda]_ assuming the polymer follows Gaussian statistics such 34 34 that $R_g^2 = n b^2/6$ where $b$ is the statistical segment length and $n$ is 35 35 the number of statistical segment lengths. A nice tutorial on how these are 36 36 constructed and implemented can be found in chapters 28 and 39 of Boualem 37 Hammouda's 'SANS Toolbox' .37 Hammouda's 'SANS Toolbox'[#toolbox]_. 38 38 39 39 In brief the macroscopic cross sections are derived from the general forms … … 49 49 are calculated with respect to component D).** So the scattering contrast 50 50 for a C/D blend = [SLD(component C) - SLD(component D)]\ :sup:`2`. 51 * Depending on which case is being used, the number of fitting parameters can 51 * Depending on which case is being used, the number of fitting parameters can 52 52 vary. 53 53 … … 57 57 component are obtained from other methods and held fixed while The *scale* 58 58 parameter should be held equal to unity. 59 * The variables are normally the segment lengths ($b_a$, $b_b$, 60 etc.) and $\chi$ parameters ($K_{ab}$, $K_{ac}$, etc). 59 * The variables are normally the segment lengths (b\ :sub:`a`, b\ :sub:`b`, 60 etc) and $\chi$ parameters (K\ :sub:`ab`, K\ :sub:`ac`, etc). 61 61 62 62 63 References 63 64 ---------- 64 65 65 A Z Akcasu, R Klein and B Hammouda, *Macromolecules*, 26 (1993) 4136. 66 67 B. Hammouda, *Advances in Polymer Science* 106 (1993) 87. 68 69 B. Hammouda, *SANS Toolbox* 70 https://www.ncnr.nist.gov/staff/hammouda/the_sans_toolbox.pdf. 66 .. [#Akcasu] A Z Akcasu, R Klein and B Hammouda, *Macromolecules*, 26 (1993) 67 4136. 68 .. [#Hammouda] B. Hammouda, *Advances in Polymer Science* 106 (1993) 87. 69 .. [#toolbox] https://www.ncnr.nist.gov/staff/hammouda/the_sans_toolbox.pdf 71 70 72 71 Authorship and Verification -
sasmodels/models/star_polymer.py
r30b60d2 rd439007 7 7 emanating from a common central (in the case of this model) point. It is 8 8 derived as a special case of on the Benoit model for general branched 9 polymers\ [#CITBenoit]_ as also used by Richter *et al.*\ [#CITRichter]_9 polymers\ [#CITBenoit]_ as also used by Richter ''et. al.''\ [#CITRichter]_ 10 10 11 11 For a star with $f$ arms the scattering intensity $I(q)$ is calculated as -
sasmodels/models/surface_fractal.py
r30b60d2 r48462b0 9 9 10 10 .. math:: 11 :nowrap:12 11 13 \begin{align*}14 12 I(q) &= \text{scale} \times P(q)S(q) + \text{background} \\ 15 13 P(q) &= F(qR)^2 \\ … … 17 15 S(q) &= \Gamma(5-D_S)\xi^{\,5-D_S}\left[1+(q\xi)^2 \right]^{-(5-D_S)/2} 18 16 \sin\left[-(5-D_S) \tan^{-1}(q\xi) \right] q^{-1} \\ 19 \text{scale} &= \text{scale factor}\, N V^1(\rho_\text{particle} - \rho_\text{solvent})^2 \\17 \text{scale} &= \text{scale_factor}\, N V^2(\rho_\text{particle} - \rho_\text{solvent})^2 \\ 20 18 V &= \frac{4}{3}\pi R^3 21 \end{align*}22 19 23 20 where $R$ is the radius of the building block, $D_S$ is the **surface** fractal
Note: See TracChangeset
for help on using the changeset viewer.