Changeset 4c8f9cd in sasmodels


Ignore:
Timestamp:
Feb 20, 2015 9:06:18 AM (10 years ago)
Author:
ajj
Branches:
master, core_shell_microgels, costrafo411, magnetic_model, release_v0.94, release_v0.95, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
Children:
5ca9762, f1ecfa92
Parents:
2a74b99
Message:

gaussian peak fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/models/gaussian_peak.py

    r2eaae42 r4c8f9cd  
    11r""" 
    2 For information about polarised and magnetic scattering, click here_. 
     2This model describes a Gaussian shaped peak on a flat background 
    33 
    4 .. _here: polar_mag_help.html 
     4.. image:: img/image198.PNG 
    55 
    6 Definition 
    7 ---------- 
     6with the peak having height of *I0* centered at *q0* and having a standard deviation of *B*. The FWHM (full-width 
     7half-maximum) is 2.354 B. 
    88 
    9 The 1D scattering intensity is calculated in the following way (Guinier, 1955) 
     9For 2D data: The 2D scattering intensity is calculated in the same way as 1D, where the *q* vector is defined as 
    1010 
    11 .. math:: 
     11.. image:: img/image040.gif 
    1212 
    13     I(Q) = \frac{\text{scale}}{V} \cdot \left[ \ 
    14         3V(\Delta\rho) \cdot \frac{\sin(QR) - QR\cos(QR))}{(QR)^3} \ 
    15         \right]^2 + \text{background} 
     13.. image:: img/image199.jpg 
    1614 
    17 where *scale* is a volume fraction, $V$ is the volume of the scatterer, 
    18 $R$ is the radius of the sphere, *background* is the background level and 
    19 *sld* and *solvent_sld* are the scattering length densities (SLDs) of the 
    20 scatterer and the solvent respectively. 
     15*Figure. 1D plot using the default values (w/500 data points).* 
    2116 
    22 Note that if your data is in absolute scale, the *scale* should represent 
    23 the volume fraction (which is unitless) if you have a good fit. If not, 
    24 it should represent the volume fraction times a factor (by which your data 
    25 might need to be rescaled). 
     17REFERENCE 
    2618 
    27 The 2D scattering intensity is the same as above, regardless of the 
    28 orientation of $\vec q$. 
    29  
    30 Our model uses the form factor calculations as defined in the IGOR 
    31 package provided by the NIST Center for Neutron Research (Kline, 2006). 
    32  
    33 Validation 
    34 ---------- 
    35  
    36 Validation of our code was done by comparing the output of the 1D model 
    37 to the output of the software provided by the NIST (Kline, 2006). 
    38 Figure :num:`figure #sphere-comparison` shows a comparison of the output 
    39 of our model and the output of the NIST software. 
    40  
    41 .. _sphere-comparison: 
    42  
    43 .. figure:: img/sphere_comparison.jpg 
    44  
    45     Comparison of the DANSE scattering intensity for a sphere with the 
    46     output of the NIST SANS analysis software. The parameters were set to: 
    47     *scale* = 1.0, *radius* = 60 |Ang|, *contrast* = 1e-6 |Ang^-2|, and 
    48     *background* = 0.01 |cm^-1|. 
    49  
    50  
    51 Reference 
    52 --------- 
    53  
    54 A Guinier and G. Fournet, *Small-Angle Scattering of X-Rays*, 
    55 John Wiley and Sons, New York, (1955) 
    56  
    57 *2013/09/09 and 2014/01/06 - Description reviewed by S King and P Parker.* 
     19None. 
    5820""" 
    5921 
    6022from numpy import pi, inf 
    6123 
    62 name = "sphere" 
    63 title = "Spheres with uniform scattering length density" 
    64 description = """\ 
    65 P(q)=(scale/V)*[3V(sld-solvent_sld)*(sin(qR)-qRcos(qR)) 
    66                 /(qR)^3]^2 + background 
    67     R: radius of sphere 
    68     V: The volume of the scatter 
    69     sld: the SLD of the sphere 
    70     solvent_sld: the SLD of the solvent 
     24name = "gaussian_peak" 
     25title = "Gaussian shaped peak" 
     26description = """ 
     27    Model describes a Gaussian shaped peak including a flat background 
     28    Provide F(q) = scale*exp( -1/2 *[(q-q0)/B]^2 )+ background 
    7129""" 
    7230 
     
    7432#   [ "name", "units", default, [lower, upper], "type", 
    7533#     "description" ], 
    76     [ "sld", "1e-6/Ang^2", 1, [-inf,inf], "", 
    77       "Layer scattering length density" ], 
    78     [ "solvent_sld", "1e-6/Ang^2", 6, [-inf,inf], "", 
    79       "Solvent scattering length density" ], 
    80     [ "radius", "Ang",  50, [0, inf], "volume", 
    81       "Sphere radius" ], 
     34    [ "q0", "Ang^-1", 0.05, [-inf,inf], "", 
     35      "Peak position" ], 
     36    [ "sigma", "Ang^-1", 0.005, [-inf,inf], "", 
     37      "Peak width (standard deviation)" ], 
    8238    ] 
    8339 
     
    8642# This should perhaps be volume normalized? 
    8743form_volume = """ 
    88     return 1.333333333333333*M_PI*radius*radius*radius; 
     44    return 1; 
    8945    """ 
    9046 
    9147Iq = """ 
    92     const double qr = q*radius; 
    93     double sn, cn; 
    94     SINCOS(qr, sn, cn); 
    95     const double bes = qr==0.0 ? 1.0 : 3.0*(sn-qr*cn)/(qr*qr*qr); 
    96     const double fq = bes * (sld - solvent_sld) * form_volume(radius); 
    97     return 1.0e-4*fq*fq; 
     48    return exp(-0.5*pow((q - q0])/sigma,2.0)); 
    9849    """ 
    9950 
     
    10253    // never called since no orientation or magnetic parameters. 
    10354    //return -1.0; 
    104     return Iq(sqrt(qx*qx + qy*qy), sld, solvent_sld, radius); 
     55    return Iq(sqrt(qx*qx + qy*qy), q0, sigma); 
    10556    """ 
    10657 
    107 def ER(radius): 
    108     return radius 
    10958 
    11059# VR defaults to 1.0 
     
    11261demo = dict( 
    11362        scale=1, background=0, 
    114         sld=6, solvent_sld=1, 
    115         radius=120, 
    116         radius_pd=.2, radius_pd_n=45, 
     63        q0 = 0.05, sigma = 0.005, 
    11764        ) 
    118 oldname = "SphereModel" 
    119 oldpars = dict(sld='sldSph', solvent_sld='sldSolv', radius='radius') 
     65oldname = "PeakGaussModel" 
     66oldpars = dict(sigma='B') 
Note: See TracChangeset for help on using the changeset viewer.