Changes in / [6dccecc:f942f4d] in sasmodels
- Location:
- sasmodels
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/model_test.py
ra7db39fa r6652522 332 332 else: 333 333 y1 = y 334 y2 = test[3] if notisinstance(test[3], list) else [test[3]]335 F 1, F2, R_eff, volume, volume_ratio = call_Fq(kernel, pars)336 if F 1 is not None: # F1is none for models with Iq instead of Fq337 self._check_vectors(x, y1, F 1, 'F')338 self._check_vectors(x, y2, F 2, 'F^2')334 y2 = test[3] if isinstance(test[3], list) else [test[3]] 335 F, Fsq, R_eff, volume, volume_ratio = call_Fq(kernel, pars) 336 if F is not None: # F is none for models with Iq instead of Fq 337 self._check_vectors(x, y1, F, 'F') 338 self._check_vectors(x, y2, Fsq, 'F^2') 339 339 self._check_scalar(test[4], R_eff, 'R_eff') 340 340 self._check_scalar(test[5], volume, 'volume') 341 341 self._check_scalar(test[6], volume_ratio, 'form:shell ratio') 342 return F 2342 return Fsq 343 343 344 344 def _check_scalar(self, target, actual, name): … … 415 415 """ 416 416 import math 417 if target == 0.: 418 return actual == 0. 417 419 shift = 10**math.ceil(math.log10(np.abs(target))) 418 420 return np.abs(target-actual)/shift < 1.5*10**-digits -
sasmodels/models/cylinder.py
r0b8a1fc r6652522 110 110 ---------------------------- 111 111 112 * **Author:** 113 * **Last Modified by:** 114 * **Last Reviewed by:** 112 * **Author:** 113 * **Last Modified by:** 114 * **Last Reviewed by:** 115 115 * **Source added by :** Steve King **Date:** March 25, 2019 116 116 """ … … 184 184 phi_pd=10, phi_pd_n=5) 185 185 186 # pylint: disable=bad-whitespace, line-too-long186 # Test 1-D and 2-D models 187 187 qx, qy = 0.2 * np.cos(2.5), 0.2 * np.sin(2.5) 188 # After redefinition of angles, find new tests values. Was 10 10 in old coords 188 theta, phi = 80.1534480601659, 10.1510817110481 # (10, 10) in sasview 3.x 189 189 tests = [ 190 190 [{}, 0.2, 0.042761386790780453], 191 191 [{}, [0.2], [0.042761386790780453]], 192 # new coords 193 [{'theta':80.1534480601659, 'phi':10.1510817110481}, (qx, qy), 0.03514647218513852], 194 [{'theta':80.1534480601659, 'phi':10.1510817110481}, [(qx, qy)], [0.03514647218513852]], 195 # old coords 196 #[{'theta':10.0, 'phi':10.0}, (qx, qy), 0.03514647218513852], 197 #[{'theta':10.0, 'phi':10.0}, [(qx, qy)], [0.03514647218513852]], 192 [{'theta': theta, 'phi': phi}, (qx, qy), 0.03514647218513852], 193 [{'theta': theta, 'phi': phi}, [(qx, qy)], [0.03514647218513852]], 198 194 ] 199 del qx, qy # not necessary to delete, but cleaner 200 201 # Default radius and length 202 def calc_volume(radius, length): 203 """Return form volume for cylinder.""" 204 return pi*radius**2*length 205 def calc_r_effs(radius, length): 206 """Return effective radii for modes 0-7 of cylinder.""" 207 return [ 195 del qx, qy, theta, phi # not necessary to delete, but cleaner 196 197 def _extend_with_reff_tests(radius, length): 198 """Test R_eff and form volume calculations""" 199 # V and Vr are the same for each R_eff mode 200 V = pi*radius**2*length # shell volume = form volume for solid objects 201 Vr = 1.0 # form:shell volume ratio 202 # Use test value for I(0.2) from above to check Fsq value. Need to 203 # remove scale and background before testing. 204 q = 0.2 205 scale, background = V, 0.001 206 Fsq = (0.042761386790780453 - background)*scale 207 F = None # Need target value for <F> 208 # Various values for R_eff, depending on mode 209 r_effs = [ 208 210 0., 209 211 0.5*(0.75*radius*(2.0*radius*length … … 216 218 np.sqrt(4*radius**2 + length**2)/2., 217 219 ] 218 r_effs = calc_r_effs(parameters[2][2], parameters[3][2]) 219 cyl_vol = calc_volume(parameters[2][2], parameters[3][2]) 220 #tests.extend([ 221 # ({'effective_radius_type': 0}, 0.1, 667.7347318577124, 1.0000, r_effs[0], cyl_vol, 1.0), 222 # first & second None do not work here, replacind 2nd Non by real number gives error also 223 # ({'effective_radius_type': 1}, 0.1, None, None, r_effs[1], None, None), 224 # ({'effective_radius_type': 2}, 0.1, None, None, r_effs[2], None, None), 225 # ({'effective_radius_type': 3}, 0.1, None, None, r_effs[3], None, None), 226 # ({'effective_radius_type': 4}, 0.1, None, None, r_effs[4], None, None), 227 # ({'effective_radius_type': 5}, 0.1, None, None, r_effs[5], None, None), 228 # ({'effective_radius_type': 6}, 0.1, None, None, r_effs[6], None, None), 229 # ({'effective_radius_type': 7}, 0.1, None, None, r_effs[7], None, None), 230 #]) 231 del r_effs, cyl_vol 232 # pylint: enable=bad-whitespace, line-too-long 220 tests.extend([ 221 ({'radius_effective_mode': 0}, q, F, Fsq, r_effs[0], V, Vr), 222 ({'radius_effective_mode': 1}, q, F, Fsq, r_effs[1], V, Vr), 223 ({'radius_effective_mode': 2}, q, F, Fsq, r_effs[2], V, Vr), 224 ({'radius_effective_mode': 3}, q, F, Fsq, r_effs[3], V, Vr), 225 ({'radius_effective_mode': 4}, q, F, Fsq, r_effs[4], V, Vr), 226 ({'radius_effective_mode': 5}, q, F, Fsq, r_effs[5], V, Vr), 227 ({'radius_effective_mode': 6}, q, F, Fsq, r_effs[6], V, Vr), 228 ({'radius_effective_mode': 7}, q, F, Fsq, r_effs[7], V, Vr), 229 ]) 230 231 # Test Reff and volume with default model parameters 232 _extend_with_reff_tests(parameters[2][2], parameters[3][2]) 233 del _extend_with_reff_tests 233 234 234 235 # ADDED by: RKH ON: 18Mar2016 renamed sld's etc
Note: See TracChangeset
for help on using the changeset viewer.