Changes in / [1aa7990:4050e6a] in sasmodels
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/resolution.py
rb32caab rb397165 17 17 18 18 MINIMUM_RESOLUTION = 1e-8 19 MINIMUM_ABSOLUTE_Q = 0.02 # relative to the minimum q in the data 19 20 21 # When extrapolating to -q, what is the minimum positive q relative to q_min 22 # that we wish to calculate? 23 MIN_Q_SCALE_FOR_NEGATIVE_Q_EXTRAPOLATION = 0.01 20 24 21 25 class Resolution(object): … … 78 82 self.q_calc = (pinhole_extend_q(q, q_width, nsigma=nsigma) 79 83 if q_calc is None else np.sort(q_calc)) 80 81 # Protect against models which are not defined for very low q. Limit82 # the smallest q value evaluated (in absolute) to 0.02*min83 cutoff = MINIMUM_ABSOLUTE_Q*np.min(self.q)84 self.q_calc = self.q_calc[abs(self.q_calc) >= cutoff]85 86 # Build weight matrix from calculated q values87 84 self.weight_matrix = pinhole_resolution(self.q_calc, self.q, 88 85 np.maximum(q_width, MINIMUM_RESOLUTION)) 89 self.q_calc = abs(self.q_calc)90 86 91 87 def apply(self, theory): … … 127 123 self.q_calc = slit_extend_q(q, qx_width, qy_width) \ 128 124 if q_calc is None else np.sort(q_calc) 129 130 # Protect against models which are not defined for very low q. Limit131 # the smallest q value evaluated (in absolute) to 0.02*min132 cutoff = MINIMUM_ABSOLUTE_Q*np.min(self.q)133 self.q_calc = self.q_calc[abs(self.q_calc) >= cutoff]134 135 # Build weight matrix from calculated q values136 125 self.weight_matrix = \ 137 126 slit_resolution(self.q_calc, self.q, qx_width, qy_width) 138 self.q_calc = abs(self.q_calc)139 127 140 128 def apply(self, theory): … … 165 153 # neither trapezoid nor Simpson's rule improved the accuracy. 166 154 edges = bin_edges(q_calc) 167 #edges[edges < 0.0] = 0.0 # clip edges below zero155 edges[edges < 0.0] = 0.0 # clip edges below zero 168 156 cdf = erf((edges[:, None] - q[None, :]) / (sqrt(2.0)*q_width)[None, :]) 169 157 weights = cdf[1:] - cdf[:-1] … … 298 286 # The current algorithm is a midpoint rectangle rule. 299 287 q_edges = bin_edges(q_calc) # Note: requires q > 0 300 #q_edges[q_edges < 0.0] = 0.0 # clip edges below zero288 q_edges[q_edges < 0.0] = 0.0 # clip edges below zero 301 289 weights = np.zeros((len(q), len(q_calc)), 'd') 302 290 … … 404 392 interval. 405 393 406 Note that extrapolated values may be negative.394 if *q_min* is zero or less then *q[0]/10* is used instead. 407 395 """ 408 396 q = np.sort(q) 409 397 if q_min + 2*MINIMUM_RESOLUTION < q[0]: 398 if q_min <= 0: q_min = q_min*MIN_Q_SCALE_FOR_NEGATIVE_Q_EXTRAPOLATION 410 399 n_low = np.ceil((q[0]-q_min) / (q[1]-q[0])) if q[1] > q[0] else 15 411 400 q_low = np.linspace(q_min, q[0], n_low+1)[:-1] … … 459 448 log_delta_q = log(10.) / points_per_decade 460 449 if q_min < q[0]: 461 if q_min < 0: q_min = q[0]*MIN IMUM_ABSOLUTE_Q450 if q_min < 0: q_min = q[0]*MIN_Q_SCALE_FOR_NEGATIVE_Q_EXTRAPOLATION 462 451 n_low = log_delta_q * (log(q[0])-log(q_min)) 463 452 q_low = np.logspace(log10(q_min), log10(q[0]), np.ceil(n_low)+1)[:-1]
Note: See TracChangeset
for help on using the changeset viewer.