Changeset 0c3e5d2 in sasmodels
- Timestamp:
- Feb 18, 2015 12:14:10 PM (10 years ago)
- Branches:
- master, core_shell_microgels, costrafo411, magnetic_model, release_v0.94, release_v0.95, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
- Children:
- 9474dda
- Parents:
- c5b7d07 (diff), 0a82216 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - Files:
-
- 7 added
- 1 deleted
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
compare.py
r87fce00 rf173599 301 301 ] 302 302 303 def get_demo_pars(name): 304 import sasmodels.models 305 __import__('sasmodels.models.'+name) 306 model = getattr(sasmodels.models, name) 307 pars = getattr(model, 'demo', None) 308 if pars is None: pars = dict((p[0],p[2]) for p in model.parameters) 309 return pars 310 303 311 def main(): 304 312 opts = [arg for arg in sys.argv[1:] if arg.startswith('-')] … … 322 330 # if model does not define demo parameters 323 331 name = args[0] 324 import sasmodels.models 325 __import__('sasmodels.models.'+name) 326 model = getattr(sasmodels.models, name) 327 pars = getattr(model, 'demo', None) 328 if pars is None: pars = dict((p[0],p[2]) for p in model.parameters) 332 pars = get_demo_pars(name) 329 333 330 334 Nopencl = int(args[1]) if len(args) > 1 else 5 -
sasmodels/bumps_model.py
rf786ff3 rc97724e 4 4 import sys, os 5 5 import datetime 6 7 from sasmodels import sesans 6 8 7 9 # CRUFT python 2.6 … … 213 215 #plt.axhline(-1, color='black', ls='--',lw=1, hold=True) 214 216 217 def _plot_sesans(data, theory, view): 218 import matplotlib.pyplot as plt 219 resid = (theory - data.data)/data.err_data 220 plt.subplot(121) 221 plt.errorbar(data.SElength, data.data, yerr=data.err_data) 222 plt.plot(data.SElength, theory, '-', hold=True) 223 plt.xlabel('spin echo length (A)') 224 plt.ylabel('polarization') 225 plt.subplot(122) 226 plt.plot(data.SElength, resid, 'x') 227 plt.xlabel('spin echo length (A)') 228 plt.ylabel('residuals') 215 229 216 230 def _plot_result2D(data, theory, view): … … 230 244 plt.colorbar() 231 245 232 def plot_result(data, theory, view='log'):233 """234 Plot the data and residuals.235 """236 if hasattr(data, 'qx_data'):237 _plot_result2D(data, theory, view)238 else:239 _plot_result1D(data, theory, view)240 241 242 246 class BumpsModel(object): 243 247 """ … … 263 267 self.model = model 264 268 self.cutoff = cutoff 269 if hasattr(data, 'SElength'): 270 self.data_type = 'sesans' 271 elif hasattr(data, 'qx_data'): 272 self.data_type = 'Iqxy' 273 else: 274 self.data_type = 'Iq' 265 275 266 276 partype = model.info['partype'] 267 277 268 278 # interpret data 269 if hasattr(data, 'qx_data'): 279 if self.data_type == 'sesans': 280 q = sesans.make_q(data.q_zmax, data.Rmax) 281 self.index = slice(None,None) 282 self.iq = data.data 283 self.diq = data.err_data 284 self._theory = np.zeros_like(q) 285 q_vectors = [q] 286 elif self.data_type == 'Iqxy': 270 287 self.index = (data.mask==0) & (~np.isnan(data.data)) 271 288 self.iq = data.data[self.index] … … 276 293 else: 277 294 q_vectors = [data.qx_data, data.qy_data] 278 el se:295 elif self.data_type == 'Iq': 279 296 self.index = (data.x>=data.qmin) & (data.x<=data.qmax) & ~np.isnan(data.y) 280 297 self.iq = data.y[self.index] … … 282 299 self._theory = np.zeros_like(data.y) 283 300 q_vectors = [data.x] 301 else: 302 raise ValueError("Unknown data type") # never gets here 284 303 285 304 # Remember function inputs so we can delay loading the function and … … 333 352 self._theory[self.index] = self._fn(pars, pd_pars, self.cutoff) 334 353 #self._theory[:] = self._fn.eval(pars, pd_pars) 335 self._cache['theory'] = self._theory 354 if self.data_type == 'sesans': 355 P = sesans.hankel(self.data.SElength, self.data.wavelength, 356 self.data.thickness, self._fn_inputs[0], 357 self._theory) 358 self._cache['theory'] = P 359 else: 360 self._cache['theory'] = self._theory 336 361 return self._cache['theory'] 337 362 … … 349 374 350 375 def plot(self, view='log'): 351 plot_result(self.data, self.theory(), view=view) 376 """ 377 Plot the data and residuals. 378 """ 379 data, theory = self.data, self.theory() 380 if self.data_type == 'Iq': 381 _plot_result1D(data, theory, view) 382 elif self.data_type == 'Iqxy': 383 _plot_result2D(data, theory, view) 384 elif self.data_type == 'sesans': 385 _plot_sesans(data, theory, view) 386 else: 387 raise ValueError("Unknown data type") 388 389 def simulate_data(self, noise=None): 390 print "noise", noise 391 if noise is None: 392 noise = self.diq[self.index] 393 else: 394 noise = 0.01*noise 395 self.diq[self.index] = noise 396 y = self.theory() 397 y += y*np.random.randn(*y.shape)*noise 398 if self.data_type == 'Iq': 399 self.data.y[self.index] = y 400 elif self.data_type == 'Iqxy': 401 self.data.data[self.index] = y 402 elif self.data_type == 'sesans': 403 self.data.data[self.index] = y 404 else: 405 raise ValueError("Unknown model") 352 406 353 407 def save(self, basename): -
sasmodels/generate.py
ra503bfd r3271e20 722 722 parameters = COMMON_PARAMETERS + kernel_module.parameters, 723 723 source = getattr(kernel_module, 'source', []), 724 oldname = kernel_module.oldname, 725 oldpars = kernel_module.oldpars, 724 726 ) 725 727 # Fill in attributes which default to None -
sasmodels/sasview_model.py
r250fa25 r0a82216 32 32 33 33 34 def make_class(kernel_module, dtype='single' ):34 def make_class(kernel_module, dtype='single', namestyle='name'): 35 35 """ 36 36 Load the sasview model defined in *kernel_module*. 37 37 38 38 Returns a class that can be used directly as a sasview model. 39 40 Defaults to using the new name for a model. Setting namestyle='name' 41 will produce a class with a name compatible with SasView 39 42 """ 40 43 model = load_model(kernel_module, dtype=dtype) … … 42 45 SasviewModel.__init__(self, model) 43 46 attrs = dict(__init__=__init__) 44 ConstructedModel = type(model.info[ 'name'], (SasviewModel,), attrs)47 ConstructedModel = type(model.info[namestyle], (SasviewModel,), attrs) 45 48 return ConstructedModel 46 49 … … 54 57 55 58 self.name = model.info['name'] 59 self.oldname = model.info['oldname'] 56 60 self.description = model.info['description'] 57 61 self.category = None -
sesansdemo.py
r10576d1 rc97724e 10 10 11 11 # q-range parameters 12 12 13 q = arange(0.0003, 1.0, 0.0003); # [nm^-1] range wide enough for Hankel transform 13 14 dq=(q[1]-q[0])*1e9; # [m^-1] step size in q, needed for integration … … 34 35 35 36 clf() 36 subplot( 1,2,1) # plot the SANS calculation37 subplot(211) # plot the SANS calculation 37 38 plot(q,I,'k') 38 39 loglog(q,I) … … 55 56 PP=exp(th*Lambda**2/4/pi/pi*(G-G[0])); 56 57 57 subplot( 1,2,2)58 subplot(212) 58 59 plot(zz,PP,'k',label="Hankel transform") # Hankel transform 1D 59 60 xlabel('spin-echo length [nm]') … … 62 63 63 64 # Cosine transformation of 2D scattering patern 64 if True:65 if False: 65 66 qy,qz = meshgrid(q,q) 66 67 qr=R*sqrt(qy**2 + qz**2); # reuse variable names Hankel transform, but now 2D
Note: See TracChangeset
for help on using the changeset viewer.