Changeset 4cdc4b1 in sasmodels
- Timestamp:
- Jul 9, 2018 4:01:08 PM (6 years ago)
- Branches:
- master, core_shell_microgels, magnetic_model, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
- Children:
- 9a99993
- Parents:
- dc76240 (diff), c9fc873 (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. - git-author:
- Paul Butler <butlerpd@…> (07/09/18 16:01:08)
- git-committer:
- GitHub <noreply@…> (07/09/18 16:01:08)
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/models/guinier.py
r2d81cfe rc9fc873 7 7 .. math:: 8 8 9 I(q) = \text{scale} \cdot \exp{\left[ \frac{-Q^2 R_g^2}{3} \right]}9 I(q) = \text{scale} \cdot \exp{\left[ \frac{-Q^2 R_g^2 }{3} \right]} 10 10 + \text{background} 11 11 … … 19 19 20 20 .. math:: q = \sqrt{q_x^2 + q_y^2} 21 22 In scattering, the radius of gyration $R_g$ quantifies the objects's 23 distribution of SLD (not mass density, as in mechanics) from the objects's 24 SLD centre of mass. It is defined by 25 26 .. math:: R_g^2 = \frac{\sum_i\rho_i\left(r_i-r_0\right)^2}{\sum_i\rho_i} 27 28 where $r_0$ denotes the object's SLD centre of mass and $\rho_i$ is the SLD at 29 a point $i$. 30 31 Notice that $R_g^2$ may be negative (since SLD can be negative), which happens 32 when a form factor $P(Q)$ is increasing with $Q$ rather than decreasing. This 33 can occur for core/shell particles, hollow particles, or for composite 34 particles with domains of different SLDs in a solvent with an SLD close to the 35 average match point. (Alternatively, this might be regarded as there being an 36 internal inter-domain "structure factor" within a single particle which gives 37 rise to a peak in the scattering). 38 39 To specify a negative value of $R_g^2$ in SasView, simply give $R_g$ a negative 40 value ($R_g^2$ will be evaluated as $R_g |R_g|$). Note that the physical radius 41 of gyration, of the exterior of the particle, will still be large and positive. 42 It is only the apparent size from the small $Q$ data that will give a small or 43 negative value of $R_g^2$. 21 44 22 45 References … … 42 65 43 66 # ["name", "units", default, [lower, upper], "type","description"], 44 parameters = [["rg", "Ang", 60.0, [ 0, inf], "", "Radius of Gyration"]]67 parameters = [["rg", "Ang", 60.0, [-inf, inf], "", "Radius of Gyration"]] 45 68 46 69 Iq = """ 47 double exponent = rg*rg*q*q/3.0;70 double exponent = fabs(rg)*rg*q*q/3.0; 48 71 double value = exp(-exponent); 49 72 return value; … … 66 89 67 90 # parameters for demo 68 demo = dict(scale=1.0, rg=60.0)91 demo = dict(scale=1.0, background=0.001, rg=60.0 ) 69 92 70 93 # parameters for unit tests -
doc/guide/pd/polydispersity.rst
r29afc50 rd712a0f 20 20 P(q) = \text{scale} \langle F^* F \rangle / V + \text{background} 21 21 22 where $F$ is the scattering amplitude and $\langle\cdot\rangle$ denotes an 23 average over the size distribution. 22 where $F$ is the scattering amplitude and $\langle\cdot\rangle$ denotes an 23 average 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} 24 29 25 30 Each distribution is characterized by a center value $\bar x$ or … … 41 46 with larger values of $N_\sigma$ required for heavier tailed distributions. 42 47 The 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)$48 that $f(r - 3\sigma_r)$ is tiny and therefore $f(r - 3\sigma_r)f(r - 3\sigma_r)$ 44 49 will not contribute much to the average may not hold when particles are large. 45 50 This, too, will require increasing $N_\sigma$. … … 63 68 64 69 Additional 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). 65 79 66 80 Suggested Applications -
sasmodels/compare.py
r65fbf7c r1e7b202a 107 107 -title="note" adds note to the plot title, after the model name 108 108 -weights shows weights plots for the polydisperse parameters 109 -profile shows the sld profile if the model has a plottable sld profile 109 110 110 111 === output options === … … 775 776 dim = base._kernel.dim 776 777 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() 777 795 if opts['plot']: 778 796 import matplotlib.pyplot as plt 779 797 plt.show() 780 798 return limits 799 800 def 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 781 828 782 829 def run_models(opts, verbose=False): … … 949 996 OPTIONS = [ 950 997 # Plotting 951 'plot', 'noplot', 'weights', 998 'plot', 'noplot', 999 'weights', 'profile', 952 1000 'linear', 'log', 'q4', 953 1001 'rel', 'abs', … … 1103 1151 'count' : '1', 1104 1152 'show_weights' : False, 1153 'show_profile' : False, 1105 1154 'sphere' : 0, 1106 1155 'ngauss' : '0', … … 1163 1212 elif arg == '-default': opts['use_demo'] = False 1164 1213 elif arg == '-weights': opts['show_weights'] = True 1214 elif arg == '-profile': opts['show_profile'] = True 1165 1215 elif arg == '-html': opts['html'] = True 1166 1216 elif arg == '-help': opts['html'] = True -
sasmodels/models/core_shell_sphere.py
r2d81cfe rdc76240 21 21 .. math:: 22 22 23 F ^2(q) = \frac{3}{V_s}\left[23 F(q) = \frac{3}{V_s}\left[ 24 24 V_c(\rho_c-\rho_s)\frac{\sin(qr_c)-qr_c\cos(qr_c)}{(qr_c)^3} + 25 25 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.