Changeset bb4b509 in sasmodels
- Timestamp:
- May 16, 2017 12:14:04 PM (8 years ago)
- Branches:
- master, core_shell_microgels, costrafo411, magnetic_model, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
- Children:
- 452b168
- Parents:
- ba62072
- Location:
- sasmodels
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/generate.py
rc4e3215 rbb4b509 492 492 493 493 def test_tag_float(): 494 495 cases=""" 494 """check that floating point constants are properly identified and tagged with 'f'""" 495 496 cases = """ 496 497 ZP : 0. 497 498 ZPF : 0.0,0.01,0.1 … … 519 520 """ 520 521 521 output ="""522 output = """ 522 523 ZP : 0.f 523 524 ZPF : 0.0f,0.01f,0.1f … … 611 612 # type: (str, List[Parameter]) -> List[str] 612 613 """ 613 Return a list of *prefix.parameter* from parameter items. 614 Return a list of *prefix+parameter* from parameter items. 615 616 *prefix* should be "v." if v is a struct. 614 617 """ 615 618 return [p.as_call_reference(prefix) for p in pars] … … 733 736 call_iqxy = "#define CALL_IQ(_q,_i,_v) Iq(%s)" % (",".join(pars_sqrt)) 734 737 735 magpars = [k-2 for k, p in enumerate(partable.call_parameters)738 magpars = [k-2 for k, p in enumerate(partable.call_parameters) 736 739 if p.type == 'sld'] 737 740 … … 742 745 source.append("#define NUM_MAGNETIC %d" % partable.nmagnetic) 743 746 source.append("#define MAGNETIC_PARS %s"%",".join(str(k) for k in magpars)) 744 for k, v in enumerate(magpars[:3]):747 for k, v in enumerate(magpars[:3]): 745 748 source.append("#define MAGNETIC_PAR%d %d"%(k+1, v)) 746 749 … … 779 782 "#undef CALL_IQ", 780 783 "#undef KERNEL_NAME", 781 784 ] 782 785 783 786 imagnetic = [ … … 872 875 873 876 # TODO: need a single source for rst_prolog; it is also in doc/rst_prolog 874 RST_PROLOG = """\877 RST_PROLOG = r"""\ 875 878 .. |Ang| unicode:: U+212B 876 879 .. |Ang^-1| replace:: |Ang|\ :sup:`-1` -
sasmodels/kernel_header.c
rb00a646 rbb4b509 14 14 # define SINCOS(angle,svar,cvar) do {const double _t_=angle; svar=sin(_t_);cvar=cos(_t_);} while (0) 15 15 # endif 16 // Intel CPU on Mac gives strange values for erf(); also on the tested16 // Intel CPU on Mac gives strange values for erf(); on the verified 17 17 // platforms (intel, nvidia, amd), the cephes erf() is significantly 18 18 // faster than that available in the native OpenCL. … … 57 57 typedef int int32_t; 58 58 #include <math.h> 59 // TODO: test isnan59 // TODO: check isnan is correct 60 60 inline double _isnan(double x) { return x != x; } // hope this doesn't optimize away! 61 61 #undef isnan -
sasmodels/model_test.py
r3330bb4 rbb4b509 85 85 skip = [] 86 86 for model_name in models: 87 if model_name in skip: continue 87 if model_name in skip: 88 continue 88 89 model_info = load_model_info(model_name) 89 90 … … 239 240 multiple = [test for test in self.info.tests 240 241 if isinstance(test[2], list) 241 242 and not all(result is None for result in test[2])] 242 243 tests_has_1D_multiple = any(isinstance(test[1][0], float) 243 244 for test in multiple) … … 262 263 user_pars, x, y = test 263 264 pars = expand_pars(self.info.parameters, user_pars) 265 invalid = invalid_pars(self.info.parameters, pars) 266 if invalid: 267 raise ValueError("Unknown parameters in test: " + ", ".join(invalid)) 264 268 265 269 if not isinstance(y, list): … … 305 309 306 310 return ModelTestCase 311 312 def invalid_pars(partable, pars): 313 # type: (ParameterTable, Dict[str, float]) 314 """ 315 Return a list of parameter names that are not part of the model. 316 """ 317 names = set(p.id for p in partable.call_parameters) 318 invalid = [] 319 for par in sorted(pars.keys()): 320 parts = par.split('_pd') 321 if len(parts) > 1 and parts[1] not in ("", "_n", "nsigma", "type"): 322 invalid.append(par) 323 continue 324 if parts[0] not in names: 325 invalid.append(par) 326 return invalid 327 307 328 308 329 def is_near(target, actual, digits=5): -
sasmodels/modelinfo.py
r9c44b7b rbb4b509 101 101 limits = (float(low), float(high)) 102 102 except Exception: 103 raise ValueError("invalid limits for %s: %r"%(name, user_limits))103 raise ValueError("invalid limits for %s: %r"%(name, user_limits)) 104 104 if low >= high: 105 105 raise ValueError("require lower limit < upper limit") … … 342 342 def as_call_reference(self, prefix=""): 343 343 # type: (str) -> str 344 """ 345 Return *prefix* + parameter name. For struct references, use "v." 346 as the prefix. 347 """ 344 348 # Note: if the parameter is a struct type, then we will need to use 345 349 # &prefix+id. For scalars and vectors we can just use prefix+id. … … 420 424 self.npars = sum(p.length for p in self.kernel_parameters) 421 425 self.nmagnetic = sum(p.length for p in self.kernel_parameters 422 if p.type =='sld')426 if p.type == 'sld') 423 427 self.nvalues = 2 + self.npars 424 428 if self.nmagnetic: … … 457 461 self.has_2d = any(p.type in ('orientation', 'magnetic') 458 462 for p in self.kernel_parameters) 459 self.magnetism_index = [k for k, p in enumerate(self.call_parameters)463 self.magnetism_index = [k for k, p in enumerate(self.call_parameters) 460 464 if p.id.startswith('M0:')] 461 465 … … 544 548 'magnetic', 'magnetic amplitude for '+p.description), 545 549 Parameter('mtheta:'+p.id, 'degrees', 0., [-90., 90.], 546 550 'magnetic', 'magnetic latitude for '+p.description), 547 551 Parameter('mphi:'+p.id, 'degrees', 0., [-180., 180.], 548 552 'magnetic', 'magnetic longitude for '+p.description), 549 553 ]) 550 554 #print("call parameters", full_list) … … 683 687 684 688 if (model_info.Iq is None 685 and model_info.Iqxy is None686 and model_info.Imagnetic is None687 and model_info.form_volume is None):689 and model_info.Iqxy is None 690 and model_info.Imagnetic is None 691 and model_info.form_volume is None): 688 692 return 689 693 … … 843 847 #: it to False because they require double precision calculations. 844 848 single = None # type: bool 849 #: True if the model can be run as an opencl model. If for some reason 850 #: the model cannot be run in opencl (e.g., because the model passes 851 #: functions by reference), then set this to false. 852 opencl = None # type: bool 845 853 #: True if the model is a structure factor used to model the interaction 846 854 #: between form factor models. This will default to False if it is not -
sasmodels/models/stacked_disks.py
r9802ab3 rbb4b509 156 156 qx = q*cos(pi/6.0) 157 157 qy = q*sin(pi/6.0) 158 tests = [159 158 # Accuracy tests based on content in test/utest_extra_models.py. 160 159 # Added 2 tests with n_stacked = 5 using SasView 3.1.2 - PDB; 161 160 # for which alas q=0.001 values seem closer to n_stacked=1 not 5, 162 161 # changed assuming my 4.1 code OK, RKH 163 [{'thick_core': 10.0, 164 'thick_layer': 15.0, 165 'radius': 3000.0, 166 'n_stacking': 1.0, 167 'sigma_d': 0.0, 168 'sld_core': 4.0, 169 'sld_layer': -0.4, 170 'solvent_sd': 5.0, 162 tests = [ 163 [{'thick_core': 10.0, 164 'thick_layer': 15.0, 165 'radius': 3000.0, 166 'n_stacking': 1.0, 167 'sigma_d': 0.0, 168 'sld_core': 4.0, 169 'sld_layer': -0.4, 170 'sld_solvent': 5.0, 171 171 'theta': 90.0, 172 172 'phi': 0.0, … … 181 181 'sld_core': 4.0, 182 182 'sld_layer': -0.4, 183 's olvent_sd': 5.0,183 'sld_solvent': 5.0, 184 184 'theta': 90.0, 185 185 'phi': 0.0, … … 196 196 'sld_core': 4.0, 197 197 'sld_layer': -0.4, 198 's olvent_sd': 5.0,198 'sld_solvent': 5.0, 199 199 'theta': 90.0, 200 200 'phi': 20.0, 201 201 'scale': 0.01, 202 'background': 0.001 },203 (qx, qy), 0.0491167089952],202 'background': 0.001, 203 }, (qx, qy), 0.0491167089952], 204 204 [{'thick_core': 10.0, 205 205 'thick_layer': 15.0, … … 209 209 'sld_core': 4.0, 210 210 'sld_layer': -0.4, 211 's olvent_sd': 5.0,211 'sld_solvent': 5.0, 212 212 'theta': 90.0, 213 213 'phi': 0.0, … … 225 225 'sld_core': 4.0, 226 226 'sld_layer': -0.4, 227 's olvent_sd': 5.0,227 'sld_solvent': 5.0, 228 228 'theta': 90.0, 229 229 'phi': 0.0, … … 240 240 'sld_core': 4.0, 241 241 'sld_layer': -0.4, 242 's olvent_sd': 5.0,242 'sld_solvent': 5.0, 243 243 'theta': 90.0, 244 244 'phi': 0.0, … … 253 253 'sld_core': 4.0, 254 254 'sld_layer': -0.4, 255 's olvent_sd': 5.0,255 'sld_solvent': 5.0, 256 256 'theta': 90.0, 257 257 'phi': 20.0, 258 258 'scale': 0.01, 259 259 'background': 0.001, 260 }, (qx, qy), 0.0341738733124 261 262 [{'thick_core': 10.0, 263 'thick_layer': 15.0, 264 'radius': 3000.0, 265 'n_stacking': 1.0, 266 'sigma_d': 0.0, 267 'sld_core': 4.0, 268 'sld_layer': -0.4, 269 'solvent_sd': 5.0,260 }, (qx, qy), 0.0341738733124], 261 262 [{'thick_core': 10.0, 263 'thick_layer': 15.0, 264 'radius': 3000.0, 265 'n_stacking': 1.0, 266 'sigma_d': 0.0, 267 'sld_core': 4.0, 268 'sld_layer': -0.4, 269 'sld_solvent': 5.0, 270 270 'theta': 90.0, 271 271 'phi': 0.0, … … 275 275 ] 276 276 # 11Jan2017 RKH checking unit test agai, note they are all 1D, no 2D 277 -
sasmodels/models/two_power_law.py
r40a87fa rbb4b509 120 120 }, 0.150141, 0.125945], 121 121 122 [{'coeff cent_1': 1.0,122 [{'coefficent_1': 1.0, 123 123 'crossover': 0.04, 124 124 'power_1': 1.0, … … 127 127 }, 0.442528, 0.00166884], 128 128 129 [{'coeff cent_1': 1.0,129 [{'coefficent_1': 1.0, 130 130 'crossover': 0.04, 131 131 'power_1': 1.0,
Note: See TracChangeset
for help on using the changeset viewer.