Changeset d19962c in sasmodels for sasmodels/core.py
- Timestamp:
- Mar 27, 2016 4:57:03 PM (8 years ago)
- 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:
- 5c028e3
- Parents:
- c499331
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/core.py
rc499331 rd19962c 24 24 HAVE_OPENCL = False 25 25 26 __all__ = [27 "list_models", "load_model_info", "precompile_dll",28 "build_model", "call_kernel", "call_ER_VR",29 ]30 31 26 try: 32 27 # Python 3.5 and up … … 44 39 return module 45 40 41 42 43 __all__ = [ 44 "list_models", "load_model_info", "precompile_dll", 45 "build_model", "call_kernel", "call_ER_VR", 46 ] 47 46 48 def list_models(): 47 49 """ … … 65 67 Load model info and build model. 66 68 """ 67 if model_name.endswith('.py'): 68 model_info = load_model_info_from_path(model_name) 69 else: 70 model_info = load_model_info(model_name) 71 return build_model(model_info, **kw) 72 73 def load_model_info_from_path(path): 74 # Pull off the last .ext if it exists; there may be others 75 name = basename(splitext(path)[0]) 76 77 # Not cleaning name since don't need to be able to reload this 78 # model later 79 # Should probably turf the model from sys.modules after we are done... 80 81 # Placing the model in the 'sasmodels.custom' name space, even 82 # though it doesn't actually exist. imp.load_source doesn't seem 83 # to care. 84 import sasmodels.custom 85 kernel_module = load_module('sasmodels.custom.'+name, path) 86 87 # Now that we have the module, we can load it as usual 88 model_info = generate.make_model_info(kernel_module) 89 return model_info 69 return build_model(load_model_info(model_name), **kw) 90 70 91 71 def load_model_info(model_name): … … 110 90 return product.make_product_info(P_info, Q_info) 111 91 92 return make_model_by_name(model_name) 93 94 95 def make_model_by_name(model_name): 96 if model_name.endswith('.py'): 97 path = model_name 98 # Pull off the last .ext if it exists; there may be others 99 name = basename(splitext(path)[0]) 100 # Placing the model in the 'sasmodels.custom' name space. 101 from sasmodels import custom 102 kernel_module = load_module('sasmodels.custom.'+name, path) 103 else: 104 from sasmodels import models 105 __import__('sasmodels.models.'+model_name) 106 kernel_module = getattr(models, model_name, None) 112 107 #import sys; print "\n".join(sys.path) 113 __import__('sasmodels.models.'+model_name)114 kernel_module = getattr(models, model_name, None)115 108 return generate.make_model_info(kernel_module) 116 109 … … 196 189 """ 197 190 value = values.get(parameter.name, parameter.default) 198 if parameter.type not in ('volume', 'orientation'): 199 return [value], [] 200 relative = parameter.type == 'volume' 191 relative = parameter.relative_pd 201 192 limits = parameter.limits 202 193 disperser = values.get(parameter.name+'_pd_type', 'gaussian') … … 204 195 width = values.get(parameter.name+'_pd', 0.0) 205 196 nsigma = values.get(parameter.name+'_pd_nsigma', 3.0) 197 if npts == 0 or width == 0: 198 return [value], [] 206 199 value, weight = weights.get_weights( 207 200 disperser, npts, width, nsigma, value, limits, relative) … … 235 228 *mono* is True if polydispersity should be set to none on all parameters. 236 229 """ 230 parameters = kernel.info['parameters'] 237 231 if mono: 238 232 active = lambda name: False 239 233 elif kernel.dim == '1d': 240 pars_1d = set(p.name for p in kernel.info['parameters'].type['1d']) 241 active = lambda name: name in pars_1d 234 active = lambda name: name in parameters.pd_1d 242 235 elif kernel.dim == '2d': 243 pars_2d = set(p.name for p in kernel.info['parameters'].type['2d']) 244 active = lambda name: name in pars_2d 236 active = lambda name: name in parameters.pd_2d 245 237 else: 246 238 active = lambda name: True 247 239 248 vw_pairs = [(get_weights(p, pars) if active(p.name) else ([p.default], [])) 249 for p in kernel.info['parameters']] 240 vw_pairs = [(get_weights(p, pars) if active(p.name) 241 else ([pars.get(p.name, p.default)], [])) 242 for p in parameters.call_parameters] 250 243 values, weights = zip(*vw_pairs) 251 244
Note: See TracChangeset
for help on using the changeset viewer.