Changes in / [9f37726:689b7c4] in sasmodels
- Location:
- sasmodels
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/custom/__init__.py
r2a0c7a6 r3c852d4 8 8 to occur without error. 9 9 """ 10 from __future__ import division, print_function 10 11 12 import sys 11 13 import os 12 14 from os.path import basename, splitext … … 26 28 def load_module_from_path(fullname, path): 27 29 """load module from *path* as *fullname*""" 30 # Clear out old definitions, if any 31 if fullname in sys.modules: 32 del sys.modules[fullname] 28 33 module = imp.load_source(fullname, os.path.expanduser(path)) 29 34 #os.unlink(path+"c") # remove the automatic pyc file -
sasmodels/model_test.py
r897ca7f r479d0f3 121 121 122 122 # test using dll if desired 123 if 'dll' in loaders :123 if 'dll' in loaders or not core.HAVE_OPENCL: 124 124 test_name = "Model: %s, Kernel: dll"%model_name 125 125 test_method_name = "test_%s_dll" % model_info.id … … 270 270 271 271 # Build a test suite containing just the model 272 loaders = ['opencl'] 272 loaders = ['opencl'] if core.HAVE_OPENCL else ['dll'] 273 273 models = [model] 274 274 try: … … 288 288 stream.writeln(tb) 289 289 290 # Check if there are user defined tests. 291 # Yes, it is naughty to peek into the structure of the test suite, and 292 # to assume that it contains only one test. 293 if not suite._tests[0].info.tests: 294 stream.writeln("Note: %s has no user defined tests."%model) 290 # Warn if there are no user defined tests. 291 # Note: the test suite constructed above only has one test in it, which 292 # runs through some smoke tests to make sure the model runs, then runs 293 # through the input-output pairs given in the model definition file. To 294 # check if any such pairs are defined, therefore, we just need to check if 295 # they are in the first test of the test suite. We do this with an 296 # iterator since we don't have direct access to the list of tests in the 297 # test suite. 298 for test in suite: 299 if not test.info.tests: 300 stream.writeln("Note: %s has no user defined tests."%model) 301 break 302 else: 303 stream.writeln("Note: no test suite created --- this should never happen") 295 304 296 305 … … 325 334 models = models[1:] 326 335 elif models and models[0] == 'opencl_and_dll': 327 loaders = ['opencl', 'dll'] 336 loaders = ['opencl', 'dll'] if core.HAVE_OPENCL else ['dll'] 328 337 models = models[1:] 329 338 else: 330 loaders = ['opencl', 'dll'] 339 loaders = ['opencl', 'dll'] if core.HAVE_OPENCL else ['dll'] 331 340 if not models: 332 341 print("""\ … … 357 366 Run "nosetests sasmodels" on the command line to invoke it. 358 367 """ 359 tests = make_suite(['opencl', 'dll'], ['all']) 368 loaders = ['opencl', 'dll'] if core.HAVE_OPENCL else ['dll'] 369 tests = make_suite(loaders, ['all']) 360 370 for test_i in tests: 361 yield test_i.run_all 371 # In order for nosetest to see the correct test name, need to set 372 # the description attribute of the returned function. Since we 373 # can't do this for the returned instance, wrap it in a lambda and 374 # set the description on the lambda. Otherwise we could just do: 375 # yield test_i.run_all 376 L = lambda: test_i.run_all() 377 L.description = test_i.test_name 378 yield L 362 379 363 380 -
sasmodels/models/multilayer_vesicle.py
r9a4811a re77872e 5 5 This model is a trivial extension of the core_shell_sphere function to include 6 6 *N* shells where the core is filled with solvent and the shells are interleaved 7 with layers of solvent. For *N = 1*, this returns the same as the vesicle model. 8 The shell thicknessess and SLD are constant across all shells as expected for 7 with layers of solvent. For *N = 1*, this returns the same as the vesicle model, 8 except for the normalisation, which here is to outermost volume. 9 The shell thicknessess and SLD are constant for all shells as expected for 9 10 a multilayer vesicle. 10 11 … … 24 25 .. note: 25 26 The outer most radius 26 $radius + n_pairs * thicn_shell + (n_pairs - 1) * thick_solvent$ 27 is used as the effective radius for *S(Q)* when $P(Q) * S(Q)$ is applied. 27 $radius + n_pairs * thick_shell + (n_pairs - 1) * thick_solvent$ 28 is used for both the volume fraction normalization and for the 29 effective radius for *S(Q)* when $P(Q) * S(Q)$ is applied. 28 30 29 31 For information about polarised and magnetic scattering, see … … 62 64 sld_solvent: solvent scattering length density 63 65 sld: shell scattering length density 64 n_pairs:number of pairs of water/shell66 n_pairs:number of "shell plus solvent" layer pairs 65 67 background: incoherent background 66 68 """ … … 71 73 parameters = [ 72 74 ["volfraction", "", 0.05, [0.0, 1], "", "volume fraction of vesicles"], 73 ["radius", "Ang", 60.0, [0.0, inf], "", " Core radius of the multishell"],74 ["thick_shell", "Ang", 10.0, [0.0, inf], "", " Shell thickness"],75 ["thick_solvent", "Ang", 10.0, [0.0, inf], "", " Water thickness"],76 ["sld_solvent", "1e-6/Ang^2", 6.4, [-inf, inf], "sld", " Corescattering length density"],75 ["radius", "Ang", 60.0, [0.0, inf], "", "radius of solvent filled core"], 76 ["thick_shell", "Ang", 10.0, [0.0, inf], "", "thickness of one shell"], 77 ["thick_solvent", "Ang", 10.0, [0.0, inf], "", "solvent thickness between shells"], 78 ["sld_solvent", "1e-6/Ang^2", 6.4, [-inf, inf], "sld", "solvent scattering length density"], 77 79 ["sld", "1e-6/Ang^2", 0.4, [-inf, inf], "sld", "Shell scattering length density"], 78 ["n_pairs", "", 2.0, [1.0, inf], "", "Number of pairs of water and shell"],80 ["n_pairs", "", 2.0, [1.0, inf], "", "Number of shell plus solvent layer pairs"], 79 81 ] 80 82 # pylint: enable=bad-whitespace, line-too-long -
sasmodels/models/vesicle.py
r42356c8 re77872e 75 75 thickness: the shell thickness 76 76 sld: the shell SLD 77 sld_s lovent: the solvent (and core) SLD77 sld_solvent: the solvent (and core) SLD 78 78 background: incoherent background 79 79 volfraction: shell volume fraction -
sasmodels/sasview_model.py
r9f37726 r9f37726 123 123 if model.name == "": 124 124 model.name = splitext(basename(path))[0] 125 if not hasattr(model, 'filename'): 126 model.filename = kernel_module.__file__ 125 127 except AttributeError: 126 128 model_info = modelinfo.make_model_info(kernel_module) 127 129 model = _make_model_from_info(model_info) 128 130 129 # If we are trying to load a model that already exists, 130 # append a version number to its name. 131 # Note that models appear to be periodically reloaded 132 # by SasView and keeping track of whether we are reloading 133 # a model or loading it for the first time is tricky. 134 # For now, just allow one custom model of a given name. 135 if model.name in MODELS: 136 model.name = "%s_v2" % model.name 131 # If a model name already exists and we are loading a different model, 132 # use the model file name as the model name. 133 if model.name in MODELS and not model.filename == MODELS[model.name].filename: 134 _previous_name = model.name 135 model.name = model.id 136 137 # If the new model name is still in the model list (for instance, 138 # if we put a cylinder.py in our plug-in directory), then append 139 # an identifier. 140 if model.name in MODELS and not model.filename == MODELS[model.name].filename: 141 model.name = model.id + '_user' 142 logging.info("Model %s already exists: using %s [%s]", _previous_name, model.name, model.filename) 137 143 138 144 MODELS[model.name] = model … … 163 169 attrs = _generate_model_attributes(model_info) 164 170 attrs['__init__'] = __init__ 171 attrs['filename'] = model_info.filename 165 172 ConstructedModel = type(model_info.name, (SasviewModel,), attrs) # type: SasviewModelType 166 173 return ConstructedModel … … 320 327 else: 321 328 hidden = set() 329 if self._model_info.structure_factor: 330 hidden.add('scale') 331 hidden.add('background') 332 self._model_info.parameters.defaults['background'] = 0. 322 333 323 334 self._persistency_dict = {} … … 665 676 return [self.multiplicity], [1.0] 666 677 else: 667 return [np.NaN], [1.0] 678 # For hidden parameters use the default value. 679 value = self._model_info.parameters.defaults.get(par.name, np.NaN) 680 return [value], [1.0] 668 681 elif par.polydisperse: 669 682 dis = self.dispersion[par.name] … … 686 699 cylinder = Cylinder() 687 700 return cylinder.evalDistribution([0.1, 0.1]) 701 702 def test_structure_factor(): 703 # type: () -> float 704 """ 705 Test that a sasview model (cylinder) can be run. 706 """ 707 Model = _make_standard_model('hardsphere') 708 model = Model() 709 value = model.evalDistribution([0.1, 0.1]) 710 if np.isnan(value): 711 raise ValueError("hardsphere returns null") 688 712 689 713 def test_rpa():
Note: See TracChangeset
for help on using the changeset viewer.