Changes in / [150fb81:7e74ed5] in sasmodels


Ignore:
Location:
sasmodels
Files:
2 deleted
17 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/compare.py

    rfe25eda r8c65a33  
    10631063    # Evaluate preset parameter expressions 
    10641064    context = MATH.copy() 
    1065     context['np'] = np 
    10661065    context.update(pars) 
    10671066    context.update((k,v) for k,v in presets.items() if isinstance(v, float)) 
  • sasmodels/details.py

    rccd5f01 r6dc78e4  
    230230    npars = kernel.info.parameters.npars 
    231231    nvalues = kernel.info.parameters.nvalues 
    232     scalars = [(v[0] if len(v) else np.NaN) for v, w in pairs] 
     232    scalars = [v[0][0] for v in pairs] 
    233233    values, weights = zip(*pairs[2:npars+2]) if npars else ((),()) 
    234234    length = np.array([len(w) for w in weights]) 
  • sasmodels/kernel_header.c

    rb7e8b94 r218cdbc  
    148148inline double sinc(double x) { return x==0 ? 1.0 : sin(x)/x; } 
    149149 
    150 #if 1 
    151 //think cos(theta) should be sin(theta) in new coords, RKH 11Jan2017 
     150#if 0 
    152151#define ORIENT_SYMMETRIC(qx, qy, theta, phi, q, sn, cn) do { \ 
    153152    SINCOS(phi*M_PI_180, sn, cn); \ 
    154153    q = sqrt(qx*qx + qy*qy); \ 
    155     cn  = (q==0. ? 1.0 : (cn*qx + sn*qy)/q * sin(theta*M_PI_180));  \ 
     154    cn  = (q==0. ? 1.0 : (cn*qx + sn*qy)/q * cos(theta*M_PI_180));  \ 
    156155    sn = sqrt(1 - cn*cn); \ 
    157156    } while (0) 
  • sasmodels/models/barbell.py

    rfcb33e4 r0d6e865  
    2020.. math:: 
    2121 
    22     I(q) = \frac{\Delta \rho^2}{V} \left<A^2(q,\alpha).sin(\alpha)\right> 
     22    I(q) = \frac{\Delta \rho^2}{V} \left<A^2(q)\right> 
    2323 
    24 where the amplitude $A(q,\alpha)$ with the rod axis at angle $\alpha$ to $q$ is given as 
     24where the amplitude $A(q)$ is given as 
    2525 
    2626.. math:: 
    2727 
    2828    A(q) =&\ \pi r^2L 
    29         \frac{\sin\left(\tfrac12 qL\cos\alpha\right)} 
    30              {\tfrac12 qL\cos\alpha} 
    31         \frac{2 J_1(qr\sin\alpha)}{qr\sin\alpha} \\ 
     29        \frac{\sin\left(\tfrac12 qL\cos\theta\right)} 
     30             {\tfrac12 qL\cos\theta} 
     31        \frac{2 J_1(qr\sin\theta)}{qr\sin\theta} \\ 
    3232        &\ + 4 \pi R^3 \int_{-h/R}^1 dt 
    33         \cos\left[ q\cos\alpha 
     33        \cos\left[ q\cos\theta 
    3434            \left(Rt + h + {\tfrac12} L\right)\right] 
    3535        \times (1-t^2) 
    36         \frac{J_1\left[qR\sin\alpha \left(1-t^2\right)^{1/2}\right]} 
    37              {qR\sin\alpha \left(1-t^2\right)^{1/2}} 
     36        \frac{J_1\left[qR\sin\theta \left(1-t^2\right)^{1/2}\right]} 
     37             {qR\sin\theta \left(1-t^2\right)^{1/2}} 
    3838 
    3939The $\left<\ldots\right>$ brackets denote an average of the structure over 
    40 all orientations. $\left<A^2(q,\alpha)\right>$ is then the form factor, $P(q)$. 
     40all orientations. $\left<A^2(q)\right>$ is then the form factor, $P(q)$. 
    4141The scale factor is equivalent to the volume fraction of cylinders, each of 
    4242volume, $V$. Contrast $\Delta\rho$ is the difference of scattering length 
     
    8585* **Author:** NIST IGOR/DANSE **Date:** pre 2010 
    8686* **Last Modified by:** Paul Butler **Date:** March 20, 2016 
    87 * **Last Reviewed by:** Richard Heenan **Date:** January 4, 2017 
     87* **Last Reviewed by:** Paul Butler **Date:** March 20, 2016 
    8888""" 
    8989from numpy import inf 
  • sasmodels/models/capped_cylinder.py

    rfcb33e4 r0d6e865  
    2121.. math:: 
    2222 
    23     I(q) = \frac{\Delta \rho^2}{V} \left<A^2(q,\alpha).sin(\alpha)\right> 
     23    I(q) = \frac{\Delta \rho^2}{V} \left<A^2(q)\right> 
    2424 
    25 where the amplitude $A(q,\alpha)$ with the rod axis at angle $\alpha$ to $q$ is given as 
     25where the amplitude $A(q)$ is given as 
    2626 
    2727.. math:: 
    2828 
    2929    A(q) =&\ \pi r^2L 
    30         \frac{\sin\left(\tfrac12 qL\cos\alpha\right)} 
    31             {\tfrac12 qL\cos\alpha} 
    32         \frac{2 J_1(qr\sin\alpha)}{qr\sin\alpha} \\ 
     30        \frac{\sin\left(\tfrac12 qL\cos\theta\right)} 
     31            {\tfrac12 qL\cos\theta} 
     32        \frac{2 J_1(qr\sin\theta)}{qr\sin\theta} \\ 
    3333        &\ + 4 \pi R^3 \int_{-h/R}^1 dt 
    34         \cos\left[ q\cos\alpha 
     34        \cos\left[ q\cos\theta 
    3535            \left(Rt + h + {\tfrac12} L\right)\right] 
    3636        \times (1-t^2) 
    37         \frac{J_1\left[qR\sin\alpha \left(1-t^2\right)^{1/2}\right]} 
    38              {qR\sin\alpha \left(1-t^2\right)^{1/2}} 
     37        \frac{J_1\left[qR\sin\theta \left(1-t^2\right)^{1/2}\right]} 
     38             {qR\sin\theta \left(1-t^2\right)^{1/2}} 
    3939 
    4040The $\left<\ldots\right>$ brackets denote an average of the structure over 
     
    8888* **Author:** NIST IGOR/DANSE **Date:** pre 2010 
    8989* **Last Modified by:** Paul Butler **Date:** September 30, 2016 
    90 * **Last Reviewed by:** Richard Heenan **Date:** January 4, 2017 
    91  
     90* **Last Reviewed by:** Richard Heenan **Date:** March 19, 2016 
    9291""" 
    9392from numpy import inf 
  • sasmodels/models/core_shell_bicelle.py

    rfcb33e4 rb829b16  
    4141 
    4242    I(Q,\alpha) = \frac{\text{scale}}{V_t} \cdot 
    43         F(Q,\alpha)^2.sin(\alpha) + \text{background} 
     43        F(Q,\alpha)^2 + \text{background} 
    4444 
    4545where 
     
    8585* **Author:** NIST IGOR/DANSE **Date:** pre 2010 
    8686* **Last Modified by:** Paul Butler **Date:** September 30, 2016 
    87 * **Last Reviewed by:** Richard Heenan **Date:** January 4, 2017 
     87* **Last Reviewed by:** Richard Heenan **Date:** October 5, 2016 
    8888""" 
    8989 
  • sasmodels/models/core_shell_cylinder.py

    rfcb33e4 r755ecc2  
    99.. math:: 
    1010 
    11     I(q,\alpha) = \frac{\text{scale}}{V_s} F^2(q,\alpha).sin(\alpha) + \text{background} 
     11    I(q,\alpha) = \frac{\text{scale}}{V_s} F^2(q) + \text{background} 
    1212 
    1313where 
     
    1515.. math:: 
    1616 
    17     F(q,\alpha) = &\ (\rho_c - \rho_s) V_c 
     17    F(q) = &\ (\rho_c - \rho_s) V_c 
    1818           \frac{\sin \left( q \tfrac12 L\cos\alpha \right)} 
    1919                {q \tfrac12 L\cos\alpha} 
  • sasmodels/models/core_shell_ellipsoid.py

    rb7e8b94 r73e08ae  
    162162 
    163163q = 0.1 
    164 # tests had in old coords theta=0, phi=0; new coords theta=90, phi=0 
    165 qx = q*cos(pi/6.0) 
    166 qy = q*sin(pi/6.0) 
    167 phi = 0.0 
    168 # 11Jan2017 RKH sorted tests after redefinition of angles 
    169 tests = [ 
    170      # Accuracy tests based on content in test/utest_coreshellellipsoidXTmodel.py 
    171     [{'radius_equat_core': 200.0, 
    172       'x_core': 0.1, 
    173       'thick_shell': 50.0, 
    174       'x_polar_shell': 0.2, 
    175       'sld_core': 2.0, 
    176       'sld_shell': 1.0, 
    177       'sld_solvent': 6.3, 
    178       'background': 0.001, 
    179       'scale': 1.0, 
    180      }, 1.0, 0.00189402], 
     164phi = pi/6 
     165qx = q*cos(phi) 
     166qy = q*sin(phi) 
     167# After redefinition of angles find new reasonable values for unit test 
     168#tests = [ 
     169#    # Accuracy tests based on content in test/utest_coreshellellipsoidXTmodel.py 
     170#    [{'radius_equat_core': 200.0, 
     171#      'x_core': 0.1, 
     172#      'thick_shell': 50.0, 
     173#      'x_polar_shell': 0.2, 
     174#      'sld_core': 2.0, 
     175#      'sld_shell': 1.0, 
     176#      'sld_solvent': 6.3, 
     177#      'background': 0.001, 
     178#      'scale': 1.0, 
     179#     }, 1.0, 0.00189402], 
    181180 
    182181    # Additional tests with larger range of parameters 
    183     [{'background': 0.01}, 0.1, 11.6915], 
    184  
    185     [{'radius_equat_core': 20.0, 
    186       'x_core': 200.0, 
    187       'thick_shell': 54.0, 
    188       'x_polar_shell': 3.0, 
    189       'sld_core': 20.0, 
    190       'sld_shell': 10.0, 
    191       'sld_solvent': 6.0, 
    192       'background': 0.0, 
    193       'scale': 1.0, 
    194      }, 0.01, 8688.53], 
    195 # why does it need theta setting here, not globally above? 
    196    [{'background': 0.001, 'theta':90.0}, (0.4, 0.5), 0.00690673], 
    197  
    198    [{'radius_equat_core': 20.0, 
    199       'x_core': 200.0, 
    200       'thick_shell': 54.0, 
    201       'x_polar_shell': 3.0, 
    202       'sld_core': 20.0, 
    203       'sld_shell': 10.0, 
    204       'sld_solvent': 6.0, 
    205       'background': 0.01, 
    206       'scale': 0.01, 
    207       'theta': 90.0, 
    208      }, (qx, qy), 0.01000025], 
    209     ] 
     182#    [{'background': 0.01}, 0.1, 11.6915], 
     183 
     184#    [{'radius_equat_core': 20.0, 
     185#      'x_core': 200.0, 
     186#      'thick_shell': 54.0, 
     187#      'x_polar_shell': 3.0, 
     188#      'sld_core': 20.0, 
     189#      'sld_shell': 10.0, 
     190#      'sld_solvent': 6.0, 
     191#      'background': 0.0, 
     192#      'scale': 1.0, 
     193#     }, 0.01, 8688.53], 
     194 
     195#   [{'background': 0.001}, (0.4, 0.5), 0.00690673], 
     196 
     197#   [{'radius_equat_core': 20.0, 
     198#      'x_core': 200.0, 
     199#      'thick_shell': 54.0, 
     200#      'x_polar_shell': 3.0, 
     201#      'sld_core': 20.0, 
     202#      'sld_shell': 10.0, 
     203#      'sld_solvent': 6.0, 
     204#      'background': 0.01, 
     205#      'scale': 0.01, 
     206#     }, (qx, qy), 0.0100002], 
     207#    ] 
  • sasmodels/models/cylinder.py

    rb7e8b94 r4cdd0cc  
    22# Note: model title and parameter table are inserted automatically 
    33r""" 
    4  
     4The form factor is normalized by the particle volume V = \piR^2L. 
    55For information about polarised and magnetic scattering, see 
    66the :ref:`magnetism` documentation. 
     
    1414.. math:: 
    1515 
    16     P(q,\alpha) = \frac{\text{scale}}{V} F^2(q,\alpha).sin(\alpha) + \text{background} 
     16    P(q,\alpha) = \frac{\text{scale}}{V} F^2(q,\alpha) + \text{background} 
    1717 
    1818where 
     
    2525           \frac{J_1 \left(q R \sin \alpha\right)}{q R \sin \alpha} 
    2626 
    27 and $\alpha$ is the angle between the axis of the cylinder and $\vec q$, $V =\pi R^2L$ 
     27and $\alpha$ is the angle between the axis of the cylinder and $\vec q$, $V$ 
    2828is the volume of the cylinder, $L$ is the length of the cylinder, $R$ is the 
    2929radius of the cylinder, and $\Delta\rho$ (contrast) is the scattering length 
     
    3535.. math:: 
    3636 
    37     F^2(q)=\int_{0}^{\pi/2}{F^2(q,\alpha)\sin(\alpha)d\alpha}=\int_{0}^{1}{F^2(q,u)du} 
     37    F^2(q)=\int_{0}^{\pi/2}{F^2(q,\theta)\sin(\theta)d\theta} 
    3838 
    3939 
    40 Numerical integration is simplified by a change of variable to $u = cos(\alpha)$ with  
    41 $sin(\alpha)=\sqrt{1-u^2}$.  
    42  
    43 The output of the 1D scattering intensity function for randomly oriented 
    44 cylinders is thus given by 
    45  
    46 .. math:: 
    47  
    48     P(q) = \frac{\text{scale}}{V} 
    49         \int_0^{\pi/2} F^2(q,\alpha) \sin \alpha\ d\alpha + \text{background} 
    50  
    51  
    52 NB: The 2nd virial coefficient of the cylinder is calculated based on the 
    53 radius and length values, and used as the effective radius for $S(q)$ 
    54 when $P(q) \cdot S(q)$ is applied. 
    55  
    56 For oriented cylinders, we define the direction of the 
    57 axis of the cylinder using two angles $\theta$ (note this is not the 
    58 same as the scattering angle used in q) and $\phi$. Those angles 
     40To provide easy access to the orientation of the cylinder, we define the 
     41axis of the cylinder using two angles $\theta$ and $\phi$. Those angles 
    5942are defined in :numref:`cylinder-angle-definition` . 
    6043 
     
    6548    Definition of the angles for oriented cylinders. 
    6649 
    67 The $\theta$ and $\phi$ parameters only appear in the model when fitting 2d data. 
     50 
     51NB: The 2nd virial coefficient of the cylinder is calculated based on the 
     52radius and length values, and used as the effective radius for $S(q)$ 
     53when $P(q) \cdot S(q)$ is applied. 
     54 
     55The output of the 1D scattering intensity function for randomly oriented 
     56cylinders is then given by 
     57 
     58.. math:: 
     59 
     60    P(q) = \frac{\text{scale}}{V} 
     61        \int_0^{\pi/2} F^2(q,\alpha) \sin \alpha\ d\alpha + \text{background} 
     62 
     63The $\theta$ and $\phi$ parameters are not used for the 1D output. 
    6864 
    6965Validation 
     
    7874 
    7975    P(q) = \int_0^{\pi/2} d\phi 
    80         \int_0^\pi p(\theta) P_0(q,\theta) \sin \theta\ d\theta 
     76        \int_0^\pi p(\alpha) P_0(q,\alpha) \sin \alpha\ d\alpha 
    8177 
    8278 
    8379where $p(\theta,\phi) = 1$ is the probability distribution for the orientation 
    84 and $P_0(q,\theta)$ is the scattering intensity for the fully oriented 
     80and $P_0(q,\alpha)$ is the scattering intensity for the fully oriented 
    8581system, and then comparing to the 1D result. 
    8682 
     
    149145 
    150146qx, qy = 0.2 * np.cos(2.5), 0.2 * np.sin(2.5) 
    151 # After redefinition of angles, find new tests values.  Was 10 10 in old coords 
    152 tests = [[{}, 0.2, 0.042761386790780453], 
    153         [{}, [0.2], [0.042761386790780453]], 
    154 #  new coords     
    155         [{'theta':80.1534480601659, 'phi':10.1510817110481}, (qx, qy), 0.03514647218513852], 
    156         [{'theta':80.1534480601659, 'phi':10.1510817110481}, [(qx, qy)], [0.03514647218513852]], 
    157 # old coords   [{'theta':10.0, 'phi':10.0}, (qx, qy), 0.03514647218513852], 
    158 #              [{'theta':10.0, 'phi':10.0}, [(qx, qy)], [0.03514647218513852]], 
    159         ] 
     147# After redefinition of angles, find new tests values  
     148#tests = [[{}, 0.2, 0.042761386790780453], 
     149#         [{}, [0.2], [0.042761386790780453]], 
     150#         [{'theta':10.0, 'phi':10.0}, (qx, qy), 0.03514647218513852], 
     151#         [{'theta':10.0, 'phi':10.0}, [(qx, qy)], [0.03514647218513852]], 
     152#        ] 
    160153del qx, qy  # not necessary to delete, but cleaner 
    161154# ADDED by:  RKH  ON: 18Mar2016 renamed sld's etc 
  • sasmodels/models/elliptical_cylinder.py

    rfcb33e4 ra807206  
    2020 
    2121    I(\vec q)=\frac{1}{V_\text{cyl}}\int{d\psi}\int{d\phi}\int{ 
    22         p(\theta,\phi,\psi)F^2(\vec q,\alpha,\psi)\sin(\alpha)d\alpha} 
     22        p(\theta,\phi,\psi)F^2(\vec q,\alpha,\psi)\sin(\theta)d\theta} 
    2323 
    2424with the functions 
     
    2626.. math:: 
    2727 
    28     F(q,\alpha,\psi) = 2\frac{J_1(a)\sin(b)}{ab} 
     28    F(\vec q,\alpha,\psi) = 2\frac{J_1(a)\sin(b)}{ab} 
    2929 
    3030where 
     
    3232.. math:: 
    3333 
    34     a = qr'\sin(\alpha) 
    35      
    36     b = q\frac{L}{2}\cos(\alpha) 
    37      
    38     r'=\frac{r_{minor}}{\sqrt{2}}\sqrt{(1+\nu^{2}) + (1-\nu^{2})cos(\psi)} 
     34    a &= \vec q\sin(\alpha)\left[ 
     35        r^2_\text{major}\sin^2(\psi)+r^2_\text{minor}\cos(\psi) \right]^{1/2} 
    3936 
     37    b &= \vec q\frac{L}{2}\cos(\alpha) 
    4038 
    41 and the angle $\psi$ is defined as the orientation of the major axis of the 
     39and the angle $\Psi$ is defined as the orientation of the major axis of the 
    4240ellipse with respect to the vector $\vec q$. The angle $\alpha$ is the angle 
    4341between the axis of the cylinder and $\vec q$. 
     
    9795 
    9896L A Feigin and D I Svergun, *Structure Analysis by Small-Angle X-Ray and 
    99 Neutron Scattering*, Plenum, New York, (1987) [see table 3.4] 
    100  
    101 Authorship and Verification 
    102 ---------------------------- 
    103  
    104 * **Author:** 
    105 * **Last Modified by:**  
    106 * **Last Reviewed by:**  Richard Heenan - corrected equation in docs **Date:** December 21, 2016 
    107  
     97Neutron Scattering*, Plenum, New York, (1987) 
    10898""" 
    10999 
  • sasmodels/models/lib/polevl.c

    r447e9aa r0278e3f  
    2828 *            N                   0 
    2929 * 
    30  * The function p1evl() assumes that C_N = 1.0 and is 
     30 *  The function p1evl() assumes that coef[N] = 1.0 and is 
    3131 * omitted from the array.  Its calling arguments are 
    3232 * otherwise the same as polevl(). 
  • sasmodels/models/lib/sas_J0.c

    rc8902ac r1596de3  
    5555#if FLOAT_SIZE>4 
    5656//Cephes double precission 
    57 double cephes_j0(double x); 
     57double j0(double x); 
    5858 
    5959 constant double PPJ0[8] = { 
     
    147147  }; 
    148148 
    149 double cephes_j0(double x) 
     149double j0(double x) 
    150150{ 
    151151    double w, z, p, q, xn; 
     
    186186#else 
    187187//Cephes single precission 
    188 float cephes_j0f(float x); 
     188float j0f(float x); 
    189189 
    190190 constant float MOJ0[8] = { 
     
    221221 }; 
    222222 
    223 float cephes_j0f(float x) 
     223float j0f(float x) 
    224224{ 
    225225    float xx, w, z, p, q, xn; 
     
    257257 
    258258#if FLOAT_SIZE>4 
    259 #define sas_J0 cephes_j0 
     259#define sas_J0 j0 
    260260#else 
    261 #define sas_J0 cephes_j0f 
     261#define sas_J0 j0f 
    262262#endif 
  • sasmodels/models/lib/sas_J1.c

    rc8902ac r1596de3  
    4242#if FLOAT_SIZE>4 
    4343//Cephes double pression function 
    44 double cephes_j1(double x); 
     44double j1(double x); 
    4545 
    4646constant double RPJ1[8] = { 
     
    106106    0.0 }; 
    107107 
    108 double cephes_j1(double x) 
     108double j1(double x) 
    109109{ 
    110110 
     
    144144#else 
    145145//Single precission version of cephes 
    146 float cephes_j1f(float x); 
     146float j1f(float x); 
    147147 
    148148constant float JPJ1[8] = { 
     
    179179    }; 
    180180 
    181 float cephes_j1f(float x) 
     181float j1f(float x) 
    182182{ 
    183183 
     
    211211 
    212212#if FLOAT_SIZE>4 
    213 #define sas_J1 cephes_j1 
     213#define sas_J1 j1 
    214214#else 
    215 #define sas_J1 cephes_j1f 
     215#define sas_J1 j1f 
    216216#endif 
    217217 
  • sasmodels/models/lib/sas_JN.c

    rc8902ac r1596de3  
    5050#if FLOAT_SIZE > 4 
    5151 
    52 double cephes_jn( int n, double x ); 
    53 double cephes_jn( int n, double x ) { 
     52double jn( int n, double x ); 
     53double jn( int n, double x ) { 
    5454 
    5555    // PAK: seems to be machine epsilon/2 
     
    7575 
    7676    if( n == 0 ) 
    77         return( sign * cephes_j0(x) ); 
     77        return( sign * j0(x) ); 
    7878    if( n == 1 ) 
    79         return( sign * cephes_j1(x) ); 
     79        return( sign * j1(x) ); 
    8080    if( n == 2 ) 
    81         return( sign * (2.0 * cephes_j1(x) / x  -  cephes_j0(x)) ); 
     81        return( sign * (2.0 * j1(x) / x  -  j0(x)) ); 
    8282 
    8383    if( x < MACHEP ) 
     
    112112 
    113113    if( fabs(pk) > fabs(pkm1) ) 
    114         ans = cephes_j1(x)/pk; 
     114        ans = j1(x)/pk; 
    115115    else 
    116         ans = cephes_j0(x)/pkm1; 
     116        ans = j0(x)/pkm1; 
    117117 
    118118    return( sign * ans ); 
     
    121121#else 
    122122 
    123 float cephes_jnf(int n, float x); 
    124 float cephes_jnf(int n, float x) 
     123float jnf(int n, float x); 
     124float jnf(int n, float x) 
    125125{ 
    126126    // PAK: seems to be machine epsilon/2 
     
    146146 
    147147    if( n == 0 ) 
    148         return( sign * cephes_j0f(x) ); 
     148        return( sign * j0f(x) ); 
    149149    if( n == 1 ) 
    150         return( sign * cephes_j1f(x) ); 
     150        return( sign * j1f(x) ); 
    151151    if( n == 2 ) 
    152         return( sign * (2.0 * cephes_j1f(x) / x  -  cephes_j0f(x)) ); 
     152        return( sign * (2.0 * j1f(x) / x  -  j0f(x)) ); 
    153153 
    154154    if( x < MACHEP ) 
     
    189189 
    190190    if( r > ans )  /* if( fabs(pk) > fabs(pkm1) ) */ 
    191         ans = sign * cephes_j1f(x)/pk; 
     191        ans = sign * j1f(x)/pk; 
    192192    else 
    193         ans = sign * cephes_j0f(x)/pkm1; 
     193        ans = sign * j0f(x)/pkm1; 
    194194    return( ans ); 
    195195} 
     
    197197 
    198198#if FLOAT_SIZE>4 
    199 #define sas_JN cephes_jn 
     199#define sas_JN jn 
    200200#else 
    201 #define sas_JN cephes_jnf 
     201#define sas_JN jnf 
    202202#endif 
  • sasmodels/models/stacked_disks.py

    rb7e8b94 r07300ea  
    148148            sld_layer=0.0, 
    149149            sld_solvent=5.0, 
    150             theta=90, 
     150            theta=0, 
    151151            phi=0) 
    152 # After redefinition of spherical coordinates - 
    153 # tests had in old coords theta=0, phi=0; new coords theta=90, phi=0 
    154 # but should not matter here as so far all the tests are 1D not 2D 
    155 tests = [ 
    156 # Accuracy tests based on content in test/utest_extra_models.py. 
    157 # Added 2 tests with n_stacked = 5 using SasView 3.1.2 - PDB; for which alas q=0.001 values seem closer to n_stacked=1 not 5, changed assuming my 4.1 code OK, RKH 
    158     [{'thick_core': 10.0, 
    159       'thick_layer': 15.0, 
    160       'radius': 3000.0, 
    161       'n_stacking': 1.0, 
    162       'sigma_d': 0.0, 
    163       'sld_core': 4.0, 
    164       'sld_layer': -0.4, 
    165       'solvent_sd': 5.0, 
    166       'theta': 90.0, 
    167       'phi': 0.0, 
    168       'scale': 0.01, 
    169       'background': 0.001, 
    170      }, 0.001, 5075.12], 
    171     [{'thick_core': 10.0, 
    172       'thick_layer': 15.0, 
    173       'radius': 3000.0, 
    174       'n_stacking': 5, 
    175       'sigma_d': 0.0, 
    176       'sld_core': 4.0, 
    177       'sld_layer': -0.4, 
    178       'solvent_sd': 5.0, 
    179       'theta': 90.0, 
    180       'phi': 0.0, 
    181       'scale': 0.01, 
    182       'background': 0.001, 
    183 #     }, 0.001, 5065.12793824],    n_stacking=1 not 5 ? slight change in value here 11jan2017, check other cpu types 
    184 #     }, 0.001, 5075.11570493], 
    185      }, 0.001, 25325.635693], 
    186     [{'thick_core': 10.0, 
    187       'thick_layer': 15.0, 
    188       'radius': 3000.0, 
    189       'n_stacking': 5, 
    190       'sigma_d': 0.0, 
    191       'sld_core': 4.0, 
    192       'sld_layer': -0.4, 
    193       'solvent_sd': 5.0, 
    194       'theta': 90.0, 
    195       'phi': 0.0, 
    196       'scale': 0.01, 
    197       'background': 0.001, 
    198 #     }, 0.164, 0.0127673597265],    n_stacking=1 not 5 ?  slight change in value here 11jan2017, check other cpu types 
    199 #     }, 0.164, 0.01480812968], 
    200      }, 0.164, 0.0598367986509], 
    201  
    202     [{'thick_core': 10.0, 
    203       'thick_layer': 15.0, 
    204       'radius': 3000.0, 
    205       'n_stacking': 1.0, 
    206       'sigma_d': 0.0, 
    207       'sld_core': 4.0, 
    208       'sld_layer': -0.4, 
    209       'solvent_sd': 5.0, 
    210       'theta': 90.0, 
    211       'phi': 0.0, 
    212       'scale': 0.01, 
    213       'background': 0.001, 
    214 # second test here was at q=90, changed it to q=5, note I(q) is then just value of flat background 
    215      }, [0.001, 5.0], [5075.12, 0.001]], 
    216  
    217     [{'thick_core': 10.0, 
    218       'thick_layer': 15.0, 
    219       'radius': 3000.0, 
    220       'n_stacking': 1.0, 
    221       'sigma_d': 0.0, 
    222       'sld_core': 4.0, 
    223       'sld_layer': -0.4, 
    224       'solvent_sd': 5.0, 
    225       'theta': 90.0, 
    226       'phi': 0.0, 
    227       'scale': 0.01, 
    228       'background': 0.001, 
    229      }, ([0.4, 0.5]), [0.00105074, 0.00121761]], 
    230  
    231     [{'thick_core': 10.0, 
    232       'thick_layer': 15.0, 
    233       'radius': 3000.0, 
    234       'n_stacking': 1.0, 
    235       'sigma_d': 0.0, 
    236       'sld_core': 4.0, 
    237       'sld_layer': -0.4, 
    238      'solvent_sd': 5.0, 
    239       'theta': 90.0, 
    240       'phi': 0.0, 
    241       'scale': 0.01, 
    242       'background': 0.001, 
    243      }, ([1.3, 1.57]), [0.0010039, 0.0010038]], 
    244     ] 
    245 # 11Jan2017   RKH checking unit test agai, note they are all 1D, no 2D 
    246  
     152#After redefinition to spherical coordinates find new reasonable test values 
     153#tests = [ 
     154#    # Accuracy tests based on content in test/utest_extra_models.py. 
     155#    # Added 2 tests with n_stacked = 5 using SasView 3.1.2 - PDB 
     156#    [{'thick_core': 10.0, 
     157#      'thick_layer': 15.0, 
     158#      'radius': 3000.0, 
     159#      'n_stacking': 1.0, 
     160#      'sigma_d': 0.0, 
     161#      'sld_core': 4.0, 
     162#      'sld_layer': -0.4, 
     163#      'solvent_sd': 5.0, 
     164#      'theta': 0.0, 
     165#      'phi': 0.0, 
     166#      'scale': 0.01, 
     167#      'background': 0.001, 
     168#     }, 0.001, 5075.12], 
     169 
     170#    [{'thick_core': 10.0, 
     171#      'thick_layer': 15.0, 
     172#      'radius': 3000.0, 
     173#      'n_stacking': 5.0, 
     174#      'sigma_d': 0.0, 
     175#      'sld_core': 4.0, 
     176#      'sld_layer': -0.4, 
     177#      'solvent_sd': 5.0, 
     178#      'theta': 0.0, 
     179#      'phi': 0.0, 
     180#      'scale': 0.01, 
     181#      'background': 0.001, 
     182#     }, 0.001, 5065.12793824], 
     183 
     184#    [{'thick_core': 10.0, 
     185#      'thick_layer': 15.0, 
     186#      'radius': 3000.0, 
     187#      'n_stacking': 5.0, 
     188#      'sigma_d': 0.0, 
     189#      'sld_core': 4.0, 
     190#      'sld_layer': -0.4, 
     191#      'solvent_sd': 5.0, 
     192#      'theta': 0.0, 
     193#      'phi': 0.0, 
     194#      'scale': 0.01, 
     195#      'background': 0.001, 
     196#     }, 0.164, 0.0127673597265], 
     197 
     198#    [{'thick_core': 10.0, 
     199#      'thick_layer': 15.0, 
     200#      'radius': 3000.0, 
     201#      'n_stacking': 1.0, 
     202#      'sigma_d': 0.0, 
     203#      'sld_core': 4.0, 
     204#      'sld_layer': -0.4, 
     205#      'solvent_sd': 5.0, 
     206#      'theta': 0.0, 
     207#      'phi': 0.0, 
     208#      'scale': 0.01, 
     209#      'background': 0.001, 
     210#     }, [0.001, 90.0], [5075.12, 0.001]], 
     211 
     212#    [{'thick_core': 10.0, 
     213#      'thick_layer': 15.0, 
     214#      'radius': 3000.0, 
     215#      'n_stacking': 1.0, 
     216#      'sigma_d': 0.0, 
     217#      'sld_core': 4.0, 
     218#      'sld_layer': -0.4, 
     219#      'solvent_sd': 5.0, 
     220#      'theta': 0.0, 
     221#      'phi': 0.0, 
     222#      'scale': 0.01, 
     223#      'background': 0.001, 
     224#     }, ([0.4, 0.5]), [0.00105074, 0.00121761]], 
     225 
     226#    [{'thick_core': 10.0, 
     227#      'thick_layer': 15.0, 
     228#      'radius': 3000.0, 
     229#      'n_stacking': 1.0, 
     230#      'sigma_d': 0.0, 
     231#      'sld_core': 4.0, 
     232#      'sld_layer': -0.4, 
     233#     'solvent_sd': 5.0, 
     234#      'theta': 0.0, 
     235#      'phi': 0.0, 
     236#      'scale': 0.01, 
     237#      'background': 0.001, 
     238#     }, ([1.3, 1.57]), [0.0010039, 0.0010038]], 
     239#    ] 
     240# 21Mar2016   RKH notes that unit tests all have n_stacking=1, ought to test other values 
     241 
  • sasmodels/resolution2d.py

    r7e94989 r40a87fa  
    6464        # just need q_calc and weights 
    6565        self.data = data 
    66         self.index = index if index is not None else slice(None) 
    67  
    68         self.qx_data = data.qx_data[self.index] 
    69         self.qy_data = data.qy_data[self.index] 
    70         self.q_data = data.q_data[self.index] 
     66        self.index = index 
     67 
     68        self.qx_data = data.qx_data[index] 
     69        self.qy_data = data.qy_data[index] 
     70        self.q_data = data.q_data[index] 
    7171 
    7272        dqx = getattr(data, 'dqx_data', None) 
     
    7474        if dqx is not None and dqy is not None: 
    7575            # Here dqx and dqy mean dq_parr and dq_perp 
    76             self.dqx_data = dqx[self.index] 
    77             self.dqy_data = dqy[self.index] 
     76            self.dqx_data = dqx[index] 
     77            self.dqy_data = dqy[index] 
    7878            ## Remove singular points if exists 
    7979            self.dqx_data[self.dqx_data < SIGMA_ZERO] = SIGMA_ZERO 
     
    126126        # The angle (phi) of the original q point 
    127127        q_phi = np.arctan(q_phi).repeat(nbins)\ 
    128             .reshape([nq, nbins]).transpose().flatten() 
     128            .reshape(nq, nbins).transpose().flatten() 
    129129        ## Find Gaussian weight for each dq bins: The weight depends only 
    130130        #  on r-direction (The integration may not need) 
  • sasmodels/sasview_model.py

    r64614ad r8977226  
    583583                            % type(qdist)) 
    584584 
    585     def get_composition_models(self): 
    586         """ 
    587             Returns usable models that compose this model 
    588         """ 
    589         s_model = None 
    590         p_model = None 
    591         if hasattr(self._model_info, "composition") \ 
    592            and self._model_info.composition is not None: 
    593             p_model = _make_model_from_info(self._model_info.composition[1][0])() 
    594             s_model = _make_model_from_info(self._model_info.composition[1][1])() 
    595         return p_model, s_model 
    596  
    597585    def calculate_Iq(self, qx, qy=None): 
    598586        # type: (Sequence[float], Optional[Sequence[float]]) -> np.ndarray 
Note: See TracChangeset for help on using the changeset viewer.