Changeset 5859862 in sasview for DataLoader/qsmearing.py
- Timestamp:
- Sep 20, 2009 5:41:40 PM (15 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- a65ffcb
- Parents:
- a1100c07
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
DataLoader/qsmearing.py
ra3f8d58 r5859862 12 12 import numpy 13 13 import math 14 import logging, sys 14 15 import scipy.special 15 16 … … 99 100 100 101 def _compute_matrix(self): return NotImplemented 102 103 def get_bin_range(self, q_min=None, q_max=None): 104 """ 105 @param q_min: minimum q-value to smear 106 @param q_max: maximum q-value to smear 107 """ 108 if q_min == None: 109 q_min = self.min 110 111 if q_max == None: 112 q_max = self.max 113 114 _qmin_unsmeared, _qmax_unsmeared = self.get_unsmeared_range(q_min, q_max) 115 116 _first_bin = None 117 _last_bin = None 118 119 step = (self.max-self.min)/(self.nbins-1.0) 120 for i in range(self.nbins): 121 q_i = smearer.get_q(self._smearer, i) 122 if (q_i >= _qmin_unsmeared) and (q_i <= _qmax_unsmeared): 123 # Identify first and last bin 124 if _first_bin is None: 125 _first_bin = i 126 else: 127 _last_bin = i 128 129 return _first_bin, _last_bin 101 130 102 131 def __call__(self, iq_in, first_bin=0, last_bin=None): … … 161 190 This method HAS to be called before smearing 162 191 """ 163 self._smearer = smearer.new_slit_smearer(self.width, self.height, self.min, self.max, self.nbins) 192 #self._smearer = smearer.new_slit_smearer(self.width, self.height, self.min, self.max, self.nbins) 193 self._smearer = smearer.new_slit_smearer_with_q(self.width, self.height, self.qvalues) 164 194 self._init_complete = True 165 195 196 def get_unsmeared_range(self, q_min, q_max): 197 """ 198 Determine the range needed in unsmeared-Q to cover 199 the smeared Q range 200 """ 201 # Range used for input to smearing 202 _qmin_unsmeared = q_min 203 _qmax_unsmeared = q_max 204 try: 205 _qmin_unsmeared = self.min 206 _qmax_unsmeared = self.max 207 except: 208 logging.error("_SlitSmearer.get_bin_range: %s" % sys.exc_value) 209 return _qmin_unsmeared, _qmax_unsmeared 166 210 167 211 class SlitSmearer(_SlitSmearer): … … 199 243 self.nbins = len(data1D.x) 200 244 ## Minimum Q 201 self.min = data1D.x[0]245 self.min = min(data1D.x) 202 246 ## Maximum 203 self.max = data1D.x[len(data1D.x)-1] 204 205 #print "nbin,npts",self.nbins,self.npts 247 self.max = max(data1D.x) 248 ## Q-values 249 self.qvalues = data1D.x 250 206 251 207 252 class _QSmearer(_BaseSmearer): … … 236 281 This method HAS to be called before smearing 237 282 """ 238 self._smearer = smearer.new_q_smearer(numpy.asarray(self.width), self.min, self.max, self.nbins) 283 #self._smearer = smearer.new_q_smearer(numpy.asarray(self.width), self.min, self.max, self.nbins) 284 self._smearer = smearer.new_q_smearer_with_q(numpy.asarray(self.width), self.qvalues) 239 285 self._init_complete = True 286 287 def get_unsmeared_range(self, q_min, q_max): 288 """ 289 Determine the range needed in unsmeared-Q to cover 290 the smeared Q range 291 Take 3 sigmas as the offset between smeared and unsmeared space 292 """ 293 # Range used for input to smearing 294 _qmin_unsmeared = q_min 295 _qmax_unsmeared = q_max 296 try: 297 offset = 3.0*max(self.width) 298 _qmin_unsmeared = max([self.min, q_min-offset]) 299 _qmax_unsmeared = min([self.max, q_max+offset]) 300 except: 301 logging.error("_QSmearer.get_bin_range: %s" % sys.exc_value) 302 return _qmin_unsmeared, _qmax_unsmeared 303 304 240 305 241 306 class QSmearer(_QSmearer): … … 260 325 self.nbins = len(data1D.x) 261 326 ## Minimum Q 262 self.min = data1D.x[0]327 self.min = min(data1D.x) 263 328 ## Maximum 264 self.max = data1D.x[len(data1D.x)-1] 329 self.max = max(data1D.x) 330 ## Q-values 331 self.qvalues = data1D.x 265 332 266 333
Note: See TracChangeset
for help on using the changeset viewer.