Changes in / [c9fc873:4cdc4b1] in sasmodels


Ignore:
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • doc/guide/pd/polydispersity.rst

    r29afc50 rd712a0f  
    2020  P(q) = \text{scale} \langle F^* F \rangle / V + \text{background} 
    2121 
    22 where $F$ is the scattering amplitude and $\langle\cdot\rangle$ denotes an 
    23 average over the size distribution. 
     22where $F$ is the scattering amplitude and $\langle\cdot\rangle$ denotes an  
     23average over the size distribution $f(x; \bar x, \sigma)$, giving 
     24 
     25.. math:: 
     26 
     27  P(q) = \frac{\text{scale}}{V} \int_\mathbb{R}  
     28  f(x; \bar x, \sigma) F^2(q, x)\, dx + \text{background} 
    2429 
    2530Each distribution is characterized by a center value $\bar x$ or 
     
    4146with larger values of $N_\sigma$ required for heavier tailed distributions. 
    4247The scattering in general falls rapidly with $qr$ so the usual assumption 
    43 that $G(r - 3\sigma_r)$ is tiny and therefore $f(r - 3\sigma_r)G(r - 3\sigma_r)$ 
     48that $f(r - 3\sigma_r)$ is tiny and therefore $f(r - 3\sigma_r)f(r - 3\sigma_r)$ 
    4449will not contribute much to the average may not hold when particles are large. 
    4550This, too, will require increasing $N_\sigma$. 
     
    6368 
    6469Additional distributions are under consideration. 
     70 
     71.. note:: In 2009 IUPAC decided to introduce the new term 'dispersity' to replace  
     72           the term 'polydispersity' (see `Pure Appl. Chem., (2009), 81(2),  
     73           351-353 <http://media.iupac.org/publications/pac/2009/pdf/8102x0351.pdf>`_  
     74           in order to make the terminology describing distributions of properties  
     75           unambiguous. Throughout the SasView documentation we continue to use the  
     76           term polydispersity because one of the consequences of the IUPAC change is  
     77           that orientational polydispersity would not meet their new criteria (which  
     78           requires dispersity to be dimensionless). 
    6579 
    6680Suggested Applications 
  • sasmodels/compare.py

    r65fbf7c r1e7b202a  
    107107    -title="note" adds note to the plot title, after the model name 
    108108    -weights shows weights plots for the polydisperse parameters 
     109    -profile shows the sld profile if the model has a plottable sld profile 
    109110 
    110111    === output options === 
     
    775776            dim = base._kernel.dim 
    776777            plot_weights(model_info, get_mesh(model_info, base_pars, dim=dim)) 
     778        if opts['show_profile']: 
     779            import pylab 
     780            base, comp = opts['engines'] 
     781            base_pars, comp_pars = opts['pars'] 
     782            have_base = base._kernel.info.profile is not None 
     783            have_comp = ( 
     784                comp is not None 
     785                and comp._kernel.info.profile is not None 
     786                and base_pars != comp_pars 
     787            ) 
     788            if have_base or have_comp: 
     789                pylab.figure() 
     790            if have_base: 
     791                plot_profile(base._kernel.info, **base_pars) 
     792            if have_comp: 
     793                plot_profile(comp._kernel.info, label='comp', **comp_pars) 
     794                pylab.legend() 
    777795    if opts['plot']: 
    778796        import matplotlib.pyplot as plt 
    779797        plt.show() 
    780798    return limits 
     799 
     800def plot_profile(model_info, label='base', **args): 
     801    # type: (ModelInfo, List[Tuple[float, np.ndarray, np.ndarray]]) -> None 
     802    """ 
     803    Plot the profile returned by the model profile method. 
     804 
     805    *model_info* defines model parameters, etc. 
     806 
     807    *mesh* is a list of tuples containing (*value*, *dispersity*, *weights*) 
     808    for each parameter, where (*dispersity*, *weights*) pairs are the 
     809    distributions to be plotted. 
     810    """ 
     811    import pylab 
     812 
     813    args = dict((k, v) for k, v in args.items() 
     814                if "_pd" not in k 
     815                   and ":" not in k 
     816                   and k not in ("background", "scale", "theta", "phi", "psi")) 
     817    args = args.copy() 
     818 
     819    args.pop('scale', 1.) 
     820    args.pop('background', 0.) 
     821    z, rho = model_info.profile(**args) 
     822    #pylab.interactive(True) 
     823    pylab.plot(z, rho, '-', label=label) 
     824    pylab.grid(True) 
     825    #pylab.show() 
     826 
     827 
    781828 
    782829def run_models(opts, verbose=False): 
     
    949996OPTIONS = [ 
    950997    # Plotting 
    951     'plot', 'noplot', 'weights', 
     998    'plot', 'noplot', 
     999    'weights', 'profile', 
    9521000    'linear', 'log', 'q4', 
    9531001    'rel', 'abs', 
     
    11031151        'count'     : '1', 
    11041152        'show_weights' : False, 
     1153        'show_profile' : False, 
    11051154        'sphere'    : 0, 
    11061155        'ngauss'    : '0', 
     
    11631212        elif arg == '-default': opts['use_demo'] = False 
    11641213        elif arg == '-weights': opts['show_weights'] = True 
     1214        elif arg == '-profile': opts['show_profile'] = True 
    11651215        elif arg == '-html':    opts['html'] = True 
    11661216        elif arg == '-help':    opts['html'] = True 
  • sasmodels/models/core_shell_sphere.py

    r2d81cfe rdc76240  
    2121.. math:: 
    2222 
    23     F^2(q) = \frac{3}{V_s}\left[ 
     23    F(q) = \frac{3}{V_s}\left[ 
    2424       V_c(\rho_c-\rho_s)\frac{\sin(qr_c)-qr_c\cos(qr_c)}{(qr_c)^3} + 
    2525       V_s(\rho_s-\rho_\text{solv})\frac{\sin(qr_s)-qr_s\cos(qr_s)}{(qr_s)^3} 
Note: See TracChangeset for help on using the changeset viewer.