Changes in / [6824af5:54954e1] in sasmodels
- Files:
-
- 2 added
- 1 deleted
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
example/sesans_parameters_css-hs.py
r84db7a5 ra98958b 8 8 # Enter the model name to use 9 9 model_name = "core_shell_sphere*hardsphere" 10 11 # DO NOT MODIFY THIS LINE12 model = sesansfit.get_bumps_model(model_name)13 10 14 11 # Enter any custom parameters … … 22 19 # Initial parameter values (if other than defaults) 23 20 initial_vals = { 21 "scale" : 0.09, 24 22 "core_sld" : 1.0592, 25 23 "solvent_sld" : 2.88, 24 "shell_sld" : 2.88, 26 25 "radius" : 890, 27 "thickness" : 130 26 "thickness" : 130, 27 "volfraction" : 0.45 28 28 } 29 29 … … 36 36 } 37 37 38 # Constraints39 # model.param_name = f(other params)40 # EXAMPLE: model.scale = model.radius*model.radius*(1 - phi) - where radius and scale are model functions and phi is41 # a custom parameter42 model.scale = phi*(1-phi)43 model.volfraction = phi44 model.shell_sld = pen*2.8845 46 38 # Send to the fitting engine 47 39 problem = sesansfit.sesans_fit(sesans_file, model_name, initial_vals, custom_params, param_range) -
example/sesans_parameters_sphere.py
r84db7a5 ra98958b 9 9 model_name = "sphere" 10 10 11 # DO NOT MODIFY THIS LINE12 model = sesansfit.get_bumps_model(model_name)13 14 11 # Enter any custom parameters 15 # name = Parameter(initial_value, name='name')16 12 phi = Parameter(0.10, name='phi') 17 # Add the parameters to this list that should be displayed in the fitting window18 13 custom_params = {"phi" : phi} 19 14 20 # SESANS data file name15 # SESANS data file 21 16 sesans_file = "sphere.ses" 22 17 23 18 # Initial parameter values (if other than defaults) 24 # "model_parameter_name" : value25 19 initial_vals = { 20 "scale" : phi*(1 - phi), 26 21 "sld" : 7.0, 22 "solvent_sld" : 1.0, 27 23 "radius" : 1000, 28 "solvent_sld" : 1.0,29 24 } 30 25 31 26 # Ranges for parameters if other than default 32 # "model_parameter_name" : [min, max]33 27 param_range = { 34 28 "phi" : [0.001, 0.5], … … 36 30 } 37 31 38 # Constraints39 # model.param_name = f(other params)40 # EXAMPLE: model.scale = model.radius*model.radius*(1 - phi) - where radius and scale are model functions and phi is41 # a custom parameter42 model.scale = phi*(1-phi)43 44 32 # Send to the fitting engine 45 # DO NOT MODIFY THIS LINE 46 problem = sesansfit.sesans_fit(sesans_file, model, initial_vals, custom_params, param_range) 47 33 problem = sesansfit.sesans_fit(sesans_file, model_name, initial_vals, custom_params, param_range) -
example/sesansfit.py
r84db7a5 ra98958b 1 #TODO: Convert units properly (nm -> A) 2 #TODO: Implement constraints 3 1 4 from bumps.names import * 2 from sasmodels import core, bumps_model , sesans5 from sasmodels import core, bumps_model 3 6 4 7 HAS_CONVERTER = True … … 8 11 HAS_CONVERTER = False 9 12 10 def get_bumps_model(model_name): 11 kernel = core.load_model(model_name) 12 model = bumps_model.Model(kernel) 13 return model 13 def sesans_fit(file, model_name, initial_vals={}, custom_params={}, param_range=[]): 14 """ 14 15 15 def sesans_fit(file, model, initial_vals={}, custom_params={}, param_range=[]):16 """17 16 @param file: SESANS file location 18 @param model : Bumps model object or model name- can be model, model_1 * model_2, and/or model_1 + model_217 @param model_name: model name string - can be model, model_1 * model_2, and/or model_1 + model_2 19 18 @param initial_vals: dictionary of {param_name : initial_value} 20 19 @param custom_params: dictionary of {custom_parameter_name : Parameter() object} 21 20 @param param_range: dictionary of {parameter_name : [minimum, maximum]} 22 @param constraints: dictionary of {parameter_name : constraint}23 21 @return: FitProblem for Bumps usage 24 22 """ … … 31 29 default_unit = "A" 32 30 data_conv_q = Converter(data._xunit) 33 for x in data.x:34 print x35 31 data.x = data_conv_q(data.x, units=default_unit) 36 for x in data.x:37 print x38 32 data._xunit = default_unit 39 33 … … 57 51 data = SESANSData1D() 58 52 59 if "radius" in initial_vals: 60 radius = initial_vals.get("radius") 61 else: 62 radius = 1000 53 radius = 1000 63 54 data.Rmax = 3*radius # [A] 64 55 65 if isinstance(model, basestring):66 model = get_bumps_model(model)56 kernel = core.load_model(model_name) 57 model = bumps_model.Model(kernel) 67 58 68 # Load custom parameters, initial values and parameter ranges59 # Load custom parameters, initial values and parameter constraints 69 60 for k, v in custom_params.items(): 70 61 setattr(model, k, v) … … 78 69 setattr(param.bounds, "limits", v) 79 70 80 if False: # for future implementation71 if False: # have sans data 81 72 M_sesans = bumps_model.Experiment(data=data, model=model) 82 73 M_sans = bumps_model.Experiment(data=sans_data, model=model) -
sasmodels/data.py
r84db7a5 r7824276 440 440 441 441 if use_data or use_theory: 442 is_tof = np.any(data.lam!=data.lam[0])443 442 if num_plots > 1: 444 443 plt.subplot(1, num_plots, 1) 445 444 if use_data: 446 if is_tof: 447 plt.errorbar(data.x, np.log(data.y)/(data.lam*data.lam), yerr=data.dy/data.y/(data.lam*data.lam)) 448 else: 449 plt.errorbar(data.x, data.y, yerr=data.dy) 445 plt.errorbar(data.x, data.y, yerr=data.dy) 450 446 if theory is not None: 451 if is_tof: 452 plt.plot(data.x, np.log(theory)/(data.lam*data.lam), '-', hold=True) 453 else: 454 plt.plot(data.x, theory, '-', hold=True) 447 plt.plot(data.x, theory, '-', hold=True) 455 448 if limits is not None: 456 449 plt.ylim(*limits) 457 458 plt.xlabel('spin echo length ({})'.format(data._xunit)) 459 if is_tof: 460 plt.ylabel('(Log (P/P$_0$))/$\lambda^2$') 461 else: 462 plt.ylabel('polarization (P/P0)') 463 450 plt.xlabel('spin echo length (nm)') 451 plt.ylabel('polarization (P/P0)') 464 452 465 453 if resid is not None: … … 467 455 plt.subplot(1, num_plots, (use_data or use_theory) + 1) 468 456 plt.plot(data.x, resid, 'x') 469 plt.xlabel('spin echo length ( {})'.format(data._xunit))457 plt.xlabel('spin echo length (nm)') 470 458 plt.ylabel('residuals (P/P0)') 471 459 -
sasmodels/models/hardsphere.py
r84db7a5 raa2edb2 7 7 the maths needs to be modified (no \Beta(Q) correction yet in sasview). 8 8 9 effect_radiusis the effective hard sphere radius.9 radius_effective is the effective hard sphere radius. 10 10 volfraction is the volume fraction occupied by the spheres. 11 11 … … 53 53 systems. Though strictly the maths needs to be modified - 54 54 which sasview does not do yet. 55 effect_radiusis the hard sphere radius55 radius_effective is the hard sphere radius 56 56 volfraction is the volume fraction occupied by the spheres. 57 57 """ … … 60 60 61 61 # ["name", "units", default, [lower, upper], "type","description"], 62 parameters = [[" effect_radius", "Ang", 50.0, [0, inf], "volume",62 parameters = [["radius_effective", "Ang", 50.0, [0, inf], "volume", 63 63 "effective radius of hard sphere"], 64 64 ["volfraction", "", 0.2, [0, 0.74], "", … … 75 75 double D,A,B,G,X,X2,X4,S,C,FF,HARDSPH; 76 76 77 if(fabs( effect_radius) < 1.E-12) {77 if(fabs(radius_effective) < 1.E-12) { 78 78 HARDSPH=1.0; 79 79 return(HARDSPH); … … 84 84 A= (1.+2.*volfraction)*D; 85 85 A *=A; 86 X=fabs(q* effect_radius*2.0);86 X=fabs(q*radius_effective*2.0); 87 87 88 88 if(X < 5.E-06) { … … 147 147 # VR defaults to 1.0 148 148 149 demo = dict( effect_radius=200, volfraction=0.2, effect_radius_pd=0.1, effect_radius_pd_n=40)149 demo = dict(radius_effective=200, volfraction=0.2, radius_effective_pd=0.1, radius_effective_pd_n=40) 150 150 oldname = 'HardsphereStructure' 151 oldpars = dict( effect_radius="effect_radius",effect_radius_pd="effect_radius_pd",effect_radius_pd_n="effect_radius_pd_n")151 oldpars = dict(radius_effective="effect_radius",radius_effective_pd="effect_radius_pd",radius_effective_pd_n="effect_radius_pd_n") 152 152 # Q=0.001 is in the Taylor series, low Q part, so add Q=0.1, assuming double precision sasview is correct 153 153 tests = [ 154 [ {'scale': 1.0, 'background' : 0.0, ' effect_radius' : 50.0, 'volfraction' : 0.2,155 ' effect_radius_pd' : 0}, [0.001,0.1], [0.209128,0.930587]]154 [ {'scale': 1.0, 'background' : 0.0, 'radius_effective' : 50.0, 'volfraction' : 0.2, 155 'radius_effective_pd' : 0}, [0.001,0.1], [0.209128,0.930587]] 156 156 ] 157 157 # ADDED by: RKH ON: 16Mar2016 using equations from FISH as better than orig sasview, see notes above. Added Taylor expansions at small Q,
Note: See TracChangeset
for help on using the changeset viewer.