Changeset aa4946b in sasmodels for sasmodels/direct_model.py
- Timestamp:
- Mar 11, 2015 9:15:40 PM (9 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:
- af1d68c
- Parents:
- 49d1d42f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/direct_model.py
rf734e7d raa4946b 3 3 import numpy as np 4 4 5 from .core import load_model_definition, make_kernel, call_kernel 6 from .core import load_model_cl as load_model 7 if load_model is None: 8 warnings.warn("unable to load opencl; using ctypes instead") 9 from .core import load_model_dll as load_model 5 from .core import load_model_definition, load_model, make_kernel 6 from .core import call_kernel, call_ER, call_VR 10 7 11 8 class DirectModel: 12 def __init__(self, name, q_vectors , dtype='single'):9 def __init__(self, name, q_vectors=None, dtype='single'): 13 10 self.model_definition = load_model_definition(name) 14 11 self.model = load_model(self.model_definition, dtype=dtype) 15 q_vectors = [np.ascontiguousarray(q,dtype=dtype) for q in q_vectors] 16 self.kernel = make_kernel(self.model, q_vectors) 12 if q_vectors is not None: 13 q_vectors = [np.ascontiguousarray(q,dtype=dtype) for q in q_vectors] 14 self.kernel = make_kernel(self.model, q_vectors) 17 15 def __call__(self, **pars): 18 16 return call_kernel(self.kernel, pars) 17 def ER(self, **pars): 18 return call_ER(self.model.info, pars) 19 def VR(self, **pars): 20 return call_VR(self.model.info, pars) 19 21 20 22 def demo(): … … 24 26 sys.exit(1) 25 27 model_name = sys.argv[1] 26 values = [float(v) for v in sys.argv[2].split(',')] 27 if len(values) == 1: 28 q = values[0] 29 q_vectors = [[q]] 30 elif len(values) == 2: 31 qx,qy = values 32 q_vectors = [[qx],[qy]] 28 call = sys.argv[2].upper() 29 if call in ("ER","VR"): 30 q_vectors = None 33 31 else: 34 print "use q or qx,qy" 35 sys.exit(1) 32 values = [float(v) for v in sys.argv[2].split(',')] 33 if len(values) == 1: 34 q = values[0] 35 q_vectors = [[q]] 36 elif len(values) == 2: 37 qx,qy = values 38 q_vectors = [[qx],[qy]] 39 else: 40 print "use q or qx,qy or ER or VR" 41 sys.exit(1) 36 42 model = DirectModel(model_name, q_vectors) 37 43 pars = dict((k,float(v)) 38 44 for pair in sys.argv[3:] 39 45 for k,v in [pair.split('=')]) 40 Iq = model(**pars) 41 print Iq[0] 46 if call == "ER": 47 print model.ER(**pars) 48 elif call == "VR": 49 print model.VR(**pars) 50 else: 51 Iq = model(**pars) 52 print Iq[0] 42 53 43 54 if __name__ == "__main__":
Note: See TracChangeset
for help on using the changeset viewer.