- Timestamp:
- Jul 9, 2018 6: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 18:01:08)
- git-committer:
- GitHub <noreply@…> (07/09/18 18:01:08)
- Location:
- sasmodels
- Files:
-
- 3 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 -
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.