nxs-analysis-tools 0.0.42__py3-none-any.whl → 0.0.43__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of nxs-analysis-tools might be problematic. Click here for more details.

_meta/__init__.py CHANGED
@@ -6,5 +6,5 @@ __author__ = 'Steven J. Gomez Alvarado'
6
6
  __email__ = 'stevenjgomez@ucsb.edu'
7
7
  __copyright__ = f"2023, {__author__}"
8
8
  __license__ = 'MIT'
9
- __version__ = '0.0.42'
9
+ __version__ = '0.0.43'
10
10
  __repo_url__ = 'https://github.com/stevenjgomez/nxs_analysis_tools'
@@ -202,7 +202,13 @@ class TempDependence:
202
202
  path = os.path.join(self.sample_directory, item)
203
203
 
204
204
  # Save dataset
205
- self.datasets[self.temperatures[i]] = load_transform(path)
205
+ try:
206
+ self.datasets[self.temperatures[i]] = load_transform(path)
207
+ except Exception as e:
208
+ # Report temperature that was unable to load, then raise exception.
209
+ temp_failed = self.temperatures[i]
210
+ print(f"Failed to load data for temperature {temp_failed} K from file {item}. Error: {e}")
211
+ raise # Re-raise the exception
206
212
 
207
213
  # Initialize scissors object
208
214
  self.scissors[self.temperatures[i]] = Scissors()
@@ -185,14 +185,14 @@ def plot_slice(data, X=None, Y=None, transpose=False, vmin=None, vmax=None,
185
185
  """
186
186
  if isinstance(data, np.ndarray):
187
187
  if X is None:
188
- X = NXfield(np.linspace(0, data.shape[1], data.shape[1]), name='x')
188
+ X = NXfield(np.linspace(0, data.shape[0], data.shape[0]), name='x')
189
189
  if Y is None:
190
- Y = NXfield(np.linspace(0, data.shape[0], data.shape[0]), name='y')
190
+ Y = NXfield(np.linspace(0, data.shape[1], data.shape[1]), name='y')
191
191
  if transpose:
192
192
  X, Y = Y, X
193
193
  data = data.transpose()
194
194
  data = NXdata(NXfield(data, name='value'), (X, Y))
195
- data_arr = data
195
+ data_arr = data[data.signal].nxdata.transpose()
196
196
  elif isinstance(data, (NXdata, NXfield)):
197
197
  if X is None:
198
198
  X = data[data.axes[0]]
@@ -185,23 +185,58 @@ class Symmetrizer2D:
185
185
  q1 = data_padded[data.axes[0]]
186
186
  q2 = data_padded[data.axes[1]]
187
187
 
188
- # Define signal to be symmetrized
189
- counts = data_padded[data.signal].nxdata
190
-
191
188
  # Calculate the angle for each data point
192
189
  theta = np.arctan2(q1.reshape((-1, 1)), q2.reshape((1, -1)))
193
190
  # Create a boolean array for the range of angles
194
191
  symmetrization_mask = np.logical_and(theta >= theta_min * np.pi / 180,
195
192
  theta <= theta_max * np.pi / 180)
196
- self.symmetrization_mask = NXdata(NXfield(p.unpad(symmetrization_mask),
197
- name='mask'),
198
- (data[data.axes[0]], data[data.axes[1]])
199
- )
200
193
 
201
- self.wedge = NXdata(NXfield(p.unpad(counts * symmetrization_mask),
202
- name=data.signal),
203
- (data[data.axes[0]], data[data.axes[1]])
204
- )
194
+ # Define signal to be transformed
195
+ counts = symmetrization_mask
196
+
197
+ # Scale and skew counts
198
+ skew_angle_adj = 90 - self.skew_angle
199
+
200
+ scale2 = counts.shape[0] / counts.shape[1]
201
+ counts_unscaled2 = ndimage.affine_transform(counts,
202
+ Affine2D().scale(scale2, 1).inverted().get_matrix()[:2, :2],
203
+ offset=[-(1 - scale2) * counts.shape[
204
+ 0] / 2 / scale2, 0],
205
+ order=0,
206
+ )
207
+
208
+ scale1 = np.cos(skew_angle_adj * np.pi / 180)
209
+ counts_unscaled1 = ndimage.affine_transform(counts_unscaled2,
210
+ Affine2D().scale(scale1, 1).inverted().get_matrix()[:2, :2],
211
+ offset=[-(1 - scale1) * counts.shape[
212
+ 0] / 2 / scale1, 0],
213
+ order=0,
214
+ )
215
+
216
+ mask = ndimage.affine_transform(counts_unscaled1,
217
+ t.get_matrix()[:2, :2],
218
+ offset=[-counts.shape[0] / 2
219
+ * np.sin(skew_angle_adj * np.pi / 180), 0],
220
+ order=0,
221
+ )
222
+
223
+ # Convert mask to nxdata
224
+ mask = array_to_nxdata(mask, data_padded)
225
+
226
+ # Save mask for user interaction
227
+ self.symmetrization_mask = p.unpad(mask)
228
+
229
+ # Perform masking
230
+ wedge = mask * data_padded
231
+
232
+ # Save wedge for user interaction
233
+ self.wedge = p.unpad(wedge)
234
+
235
+ # Convert wedge back to array for further transformations
236
+ wedge = wedge[data.signal].nxdata
237
+
238
+ # Define signal to be transformed
239
+ counts = wedge
205
240
 
206
241
  # Scale and skew counts
207
242
  skew_angle_adj = 90 - self.skew_angle
@@ -216,7 +251,7 @@ class Symmetrizer2D:
216
251
  Affine2D().scale(scale1, 1).get_matrix()[:2, :2],
217
252
  offset=[(1 - scale1) * counts.shape[0] / 2, 0],
218
253
  order=0,
219
- ) * symmetrization_mask
254
+ )
220
255
 
221
256
  scale2 = counts.shape[0] / counts.shape[1]
222
257
  wedge = ndimage.affine_transform(wedge,
@@ -325,15 +360,24 @@ class Symmetrizer2D:
325
360
  symm_test = s.symmetrize_2d(data)
326
361
  fig, axesarr = plt.subplots(2, 2, figsize=(10, 8))
327
362
  axes = axesarr.reshape(-1)
363
+
364
+ # Plot the data
328
365
  plot_slice(data, skew_angle=s.skew_angle, ax=axes[0], title='data', **kwargs)
329
- plot_slice(s.symmetrization_mask, skew_angle=s.skew_angle, ax=axes[1], title='mask')
366
+
367
+ # Filter kwargs to exclude 'vmin' and 'vmax'
368
+ filtered_kwargs = {key: value for key, value in kwargs.items() if key not in ('vmin', 'vmax')}
369
+ # Plot the mask
370
+ plot_slice(s.symmetrization_mask, skew_angle=s.skew_angle, ax=axes[1], title='mask', **filtered_kwargs)
371
+
372
+ # Plot the wedge
330
373
  plot_slice(s.wedge, skew_angle=s.skew_angle, ax=axes[2], title='wedge', **kwargs)
374
+
375
+ # Plot the symmetrized data
331
376
  plot_slice(symm_test, skew_angle=s.skew_angle, ax=axes[3], title='symmetrized', **kwargs)
332
377
  plt.subplots_adjust(wspace=0.4)
333
378
  plt.show()
334
379
  return fig, axesarr
335
380
 
336
-
337
381
  class Symmetrizer3D:
338
382
  """
339
383
  A class to symmetrize 3D datasets by performing sequential 2D symmetrization on
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: nxs-analysis-tools
3
- Version: 0.0.42
3
+ Version: 0.0.43
4
4
  Summary: Reduce and transform nexus format (.nxs) scattering data.
5
5
  Author-email: "Steven J. Gomez Alvarado" <stevenjgomez@ucsb.edu>
6
6
  License: MIT License
@@ -0,0 +1,11 @@
1
+ _meta/__init__.py,sha256=kxRgW9usOeluI-Bk-1GiZ0pt5jesv-HKRThTZKAvTtI,352
2
+ nxs_analysis_tools/__init__.py,sha256=bxbTLpIcKasH3fuRZOvJ9zeu7IBBju82mOTgUV4ZqHE,530
3
+ nxs_analysis_tools/chess.py,sha256=e3ZnyepnLATXZRk2cgh6iCZ7Pk3NKJ4IvRf4xNLuu94,24984
4
+ nxs_analysis_tools/datareduction.py,sha256=arEWF8VI8qJfT--G77OJL37C_3usjfd3-wT2gTCtwZM,41964
5
+ nxs_analysis_tools/fitting.py,sha256=vPx75lKvm5pWOGBtRtff8k6J5dA6kRk3EJyzxCH5Tyk,8809
6
+ nxs_analysis_tools/pairdistribution.py,sha256=8E1grptUMb4UXVT9mBSk45xk2JwjCvTG0Rl6BlbJAdo,60013
7
+ nxs_analysis_tools-0.0.43.dist-info/LICENSE,sha256=tdnoYVH1-ogW_5-gGs9bK-IkCamH1ATJqrdL37kWTHk,1102
8
+ nxs_analysis_tools-0.0.43.dist-info/METADATA,sha256=aBNS2AJAECd6RLqqQCFBjJgrW0piIhFaDxQCekvMqFc,3895
9
+ nxs_analysis_tools-0.0.43.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
10
+ nxs_analysis_tools-0.0.43.dist-info/top_level.txt,sha256=8U000GNPzo6T6pOMjRdgOSO5heMzLMGjkxa1CDtyMHM,25
11
+ nxs_analysis_tools-0.0.43.dist-info/RECORD,,
@@ -1,11 +0,0 @@
1
- _meta/__init__.py,sha256=RgVI9i9hMP8JG47ZopZMSrPEHTeCD680Z5-BWeTUZzY,352
2
- nxs_analysis_tools/__init__.py,sha256=bxbTLpIcKasH3fuRZOvJ9zeu7IBBju82mOTgUV4ZqHE,530
3
- nxs_analysis_tools/chess.py,sha256=LA2z-qk7IgNGPm8ov7JLgIupv__vmHfAc9NFCblI5fQ,24632
4
- nxs_analysis_tools/datareduction.py,sha256=RcfAqokK04CKuj867MdiF5EhzhhodJx99G40v8wh8W8,41932
5
- nxs_analysis_tools/fitting.py,sha256=vPx75lKvm5pWOGBtRtff8k6J5dA6kRk3EJyzxCH5Tyk,8809
6
- nxs_analysis_tools/pairdistribution.py,sha256=bO-Ljst8eD5wmeq6oH8ylhHqaUyu2CvARznDupCygWQ,58245
7
- nxs_analysis_tools-0.0.42.dist-info/LICENSE,sha256=tdnoYVH1-ogW_5-gGs9bK-IkCamH1ATJqrdL37kWTHk,1102
8
- nxs_analysis_tools-0.0.42.dist-info/METADATA,sha256=8lqJPJaka29fMmA2GTTtUzCnJnkhjVjKYcLv_gLqmu4,3895
9
- nxs_analysis_tools-0.0.42.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
10
- nxs_analysis_tools-0.0.42.dist-info/top_level.txt,sha256=8U000GNPzo6T6pOMjRdgOSO5heMzLMGjkxa1CDtyMHM,25
11
- nxs_analysis_tools-0.0.42.dist-info/RECORD,,