Changeset aaf75b6 in sasmodels for sasmodels/direct_model.py
- Timestamp:
- Mar 30, 2016 2:39:42 PM (8 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:
- 885ee37
- Parents:
- d0876c9d (diff), 364d8f7 (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. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/direct_model.py
r60eab2a raaf75b6 25 25 import numpy as np 26 26 27 from .core import make_kernel 27 28 from .core import call_kernel, call_ER_VR 28 29 from . import sesans … … 62 63 elif hasattr(data, 'qx_data'): 63 64 self.data_type = 'Iqxy' 65 elif getattr(data, 'oriented', False): 66 self.data_type = 'Iq-oriented' 64 67 else: 65 68 self.data_type = 'Iq' … … 113 116 and getattr(data, 'dxw', None) is not None): 114 117 res = resolution.Slit1D(data.x[index], 115 width=data.dxh[index],116 height=data.dxw[index])118 qx_width=data.dxw[index], 119 qy_width=data.dxl[index]) 117 120 else: 118 121 res = resolution.Perfect1D(data.x[index]) … … 120 123 #self._theory = np.zeros_like(self.Iq) 121 124 q_vectors = [res.q_calc] 125 q_mono = [] 126 elif self.data_type == 'Iq-oriented': 127 index = (data.x >= data.qmin) & (data.x <= data.qmax) 128 if data.y is not None: 129 index &= ~np.isnan(data.y) 130 Iq = data.y[index] 131 dIq = data.dy[index] 132 else: 133 Iq, dIq = None, None 134 if (getattr(data, 'dxl', None) is None 135 or getattr(data, 'dxw', None) is None): 136 raise ValueError("oriented sample with 1D data needs slit resolution") 137 138 res = resolution2d.Slit2D(data.x[index], 139 qx_width=data.dxw[index], 140 qy_width=data.dxl[index]) 141 q_vectors = res.q_calc 122 142 q_mono = [] 123 143 else: … … 139 159 y = Iq + np.random.randn(*dy.shape) * dy 140 160 self.Iq = y 141 if self.data_type == 'Iq':161 if self.data_type in ('Iq', 'Iq-oriented'): 142 162 self._data.dy[self.index] = dy 143 163 self._data.y[self.index] = y … … 151 171 def _calc_theory(self, pars, cutoff=0.0): 152 172 if self._kernel is None: 153 self._kernel = self._model.make_kernel(self._kernel_inputs) 154 self._kernel_mono = ( 155 self._model.make_kernel(self._kernel_mono_inputs) 156 if self._kernel_mono_inputs else None 157 ) 173 self._kernel = make_kernel(self._model, self._kernel_inputs) # pylint: disable=attribute-dedata_type 174 self._kernel_mono = (make_kernel(self._model, self._kernel_mono_inputs) 175 if self._kernel_mono_inputs else None) 158 176 159 177 Iq_calc = call_kernel(self._kernel, pars, cutoff=cutoff) 160 Iq_mono = (call_kernel(self._kernel_mono, pars, mono=True)161 if self._kernel_mono_inputs else None)178 # TODO: may want to plot the raw Iq for other than oriented usans 179 self.Iq_calc = None 162 180 if self.data_type == 'sesans': 181 Iq_mono = (call_kernel(self._kernel_mono, pars, mono=True) 182 if self._kernel_mono_inputs else None) 163 183 result = sesans.transform(self._data, 164 184 self._kernel_inputs[0], Iq_calc, … … 166 186 else: 167 187 result = self.resolution.apply(Iq_calc) 188 if hasattr(self.resolution, 'nx'): 189 self.Iq_calc = ( 190 self.resolution.qx_calc, self.resolution.qy_calc, 191 np.reshape(Iq_calc, (self.resolution.ny, self.resolution.nx)) 192 ) 168 193 return result 169 194
Note: See TracChangeset
for help on using the changeset viewer.