pyTEMlib 0.2023.3.0__py2.py3-none-any.whl → 0.2023.8.0__py2.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 pyTEMlib might be problematic. Click here for more details.

pyTEMlib/peak_dlg.py CHANGED
@@ -14,14 +14,14 @@ try:
14
14
 
15
15
  except:
16
16
  Qt_available = False
17
- print('Qt dialogs are not available')
17
+ # print('Qt dialogs are not available')
18
18
 
19
19
 
20
20
  if Qt_available:
21
21
  class UiDialog(object):
22
22
  """GUI definitions for peak_fit_dialog"""
23
23
 
24
- def __init__(self, dialog):
24
+ def __init__(self, dialog, mode=None):
25
25
  dialog.setObjectName('Fit Peaks')
26
26
  dialog.resize(371, 184)
27
27
 
@@ -224,30 +224,59 @@ if Qt_available:
224
224
  self.separator3.setText("Analysis")
225
225
  self.layout.addWidget(self.separator3, row, 0, 1, 4)
226
226
  ######################################################################
227
+ if mode == 'low_loss':
228
+ row += 1
229
+ self.zl_button = QtWidgets.QPushButton('Zero_Loss', dialog)
230
+ self.zl_button.setCheckable(False)
231
+ self.drude_button = QtWidgets.QPushButton('Plasmon', dialog)
232
+ self.drude_button.setCheckable(False)
233
+
234
+
235
+ self.layout.addWidget(self.zl_button, row, 0)
236
+ self.layout.addWidget(self.drude_button, row, 1)
237
+
238
+ self.model_list = ['None', 'Zero Loss', 'Plasmon', 'Both']
239
+ self.list_model = QtWidgets.QComboBox()
240
+ self.list_model.setEditable(False)
241
+ self.list_model.addItems(self.model_list)
242
+
243
+
244
+ self.layout.addWidget(self.list_model, row, 2)
245
+
246
+ else:
247
+ row += 1
248
+ self.labelwl = QtWidgets.QLabel('White-Line Ratio:')
249
+ self.wl_list = ['Ratio']
250
+ self.listwl = QtWidgets.QComboBox()
251
+ self.listwl.setEditable(False)
252
+ self.listwl.addItems(self.wl_list)
253
+ self.unitswl = QtWidgets.QLabel('')
254
+
255
+ self.layout.addWidget(self.labelwl, row, 0)
256
+ self.layout.addWidget(self.listwl, row, 1)
257
+ self.layout.addWidget(self.unitswl, row, 2)
258
+
259
+ row += 1
260
+ self.labelwls = QtWidgets.QLabel('White-Line Sum:')
261
+ self.wls_list = ['Sum']
262
+ self.listwls = QtWidgets.QComboBox()
263
+ self.listwls.setEditable(False)
264
+ self.listwls.addItems(self.wls_list)
265
+ self.unitswls = QtWidgets.QLabel('')
266
+
267
+ self.layout.addWidget(self.labelwls, row, 0)
268
+ self.layout.addWidget(self.listwls, row, 1)
269
+ self.layout.addWidget(self.unitswls, row, 2)
227
270
 
228
271
  row += 1
229
- self.labelwl = QtWidgets.QLabel('White-Line Ratio:')
230
- self.wl_list = ['Ratio']
231
- self.listwl = QtWidgets.QComboBox()
232
- self.listwl.setEditable(False)
233
- self.listwl.addItems(self.wl_list)
234
- self.unitswl = QtWidgets.QLabel('')
235
-
236
- self.layout.addWidget(self.labelwl, row, 0)
237
- self.layout.addWidget(self.listwl, row, 1)
238
- self.layout.addWidget(self.unitswl, row, 2)
239
-
240
- row += 1
241
- self.labelwls = QtWidgets.QLabel('White-Line Sum:')
242
- self.wls_list = ['Sum']
243
- self.listwls = QtWidgets.QComboBox()
244
- self.listwls.setEditable(False)
245
- self.listwls.addItems(self.wls_list)
246
- self.unitswls = QtWidgets.QLabel('')
247
-
248
- self.layout.addWidget(self.labelwls, row, 0)
249
- self.layout.addWidget(self.listwls, row, 1)
250
- self.layout.addWidget(self.unitswls, row, 2)
272
+ self.progress = QtWidgets.QProgressBar()
273
+ self.progress.setGeometry(0, 0, 300, 25)
274
+ self.progress.setMaximum(100)
275
+ self.do_all_button = QtWidgets.QPushButton('Do All', dialog)
276
+
277
+ self.layout.addWidget(self.do_all_button, row, 0)
278
+ self.layout.addWidget(self.progress, row, 1)
279
+
251
280
 
252
281
  dialog.setLayout(self.layout)
253
282
  dialog.setWindowTitle('Peak Fit Input')
pyTEMlib/version.py CHANGED
@@ -1,6 +1,6 @@
1
1
  """
2
2
  version
3
3
  """
4
- _version = '0.2023.3.0'
4
+ _version = '0.2023.8.0'
5
5
  __version__ = _version
6
- _time = '2023-02-04 19:58:26'
6
+ _time = '2023-08-09 19:58:26'
pyTEMlib/viz.py CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  import numpy as np
4
4
  import sidpy
5
+ from sidpy.hdf.dtype_utils import is_complex_dtype
6
+
7
+ import plotly.graph_objects as go
8
+ from plotly.subplots import make_subplots
9
+ from ipywidgets import widgets
10
+
11
+
12
+ import pyTEMlib.eels_tools as eels
13
+ import pyTEMlib.file_tools as ft
14
+
5
15
 
6
16
  from bokeh.layouts import column
7
17
  from bokeh.plotting import figure # , show, output_notebook
@@ -262,3 +272,210 @@ class CurveVisualizer(object):
262
272
  else:
263
273
  legline.set_alpha(0.2)
264
274
  self.fig.canvas.draw()
275
+
276
+
277
+ def verify_spectrum_dataset(datasets):
278
+ if isinstance(datasets, sidpy.Dataset):
279
+ datasets = {'Channel_000': datasets}
280
+
281
+ first_dataset = datasets[list(datasets)[0]]
282
+ has_complex_dataset = False
283
+ for dat in datasets.values():
284
+ if is_complex_dtype(dat.dtype):
285
+ has_complex_dataset = True
286
+
287
+
288
+ if first_dataset.data_type.name != 'SPECTRUM':
289
+ raise TypeError('We need a spectrum dataset here')
290
+ if first_dataset.ndim >1:
291
+ if first_dataset.shape[1] >1:
292
+ raise TypeError('Wrong dimensions for spectrum datasset')
293
+
294
+ energy_dim = first_dataset.get_spectrum_dims()
295
+ energy_dim = first_dataset.get_dimension_by_number(energy_dim[0])[0]
296
+ energy_dim.label = f'{energy_dim.quantity} ({energy_dim.units})'
297
+
298
+ default_plot_dictionary = {'title': '',
299
+ 'theme': "plotly_white",
300
+ 'y_scale': 1.0,
301
+ 'y_axis_label': first_dataset.data_descriptor,
302
+ 'x_axis_label': energy_dim.label,
303
+ 'show_legend': True,
304
+ 'height': 500,
305
+ 'figure_size': None,
306
+ 'scale_bar': False,
307
+ 'colorbar': True,
308
+ 'set_title': True,
309
+ 'has_complex_dataset': has_complex_dataset}
310
+
311
+
312
+ default_plot_dictionary.update(first_dataset.metadata['plot_parameter'])
313
+ first_dataset.metadata['plot_parameter'] = default_plot_dictionary
314
+
315
+ return datasets
316
+
317
+ def spectrum_view_plotly(datasets, figure=None, show=False):
318
+
319
+ datasets = verify_spectrum_dataset(datasets)
320
+ first_dataset = datasets[list(datasets)[0]]
321
+ plot_dic = first_dataset.metadata['plot_parameter']
322
+
323
+ if figure is None:
324
+ if plot_dic['has_complex_dataset']:
325
+ fig = make_subplots(rows=1, cols=2, subplot_titles=("Magnitude", "Phase"))
326
+ else:
327
+ fig = go.Figure()
328
+
329
+ else:
330
+ fig = figure
331
+
332
+ for key, dat in datasets.items():
333
+ if dat.data_type == first_dataset.data_type:
334
+ energy_dim = dat.get_spectrum_dims()
335
+ energy_dim = dat.get_dimension_by_number(energy_dim[0])[0]
336
+ if is_complex_dtype(dat.dtype):
337
+ fig.add_trace(go.Scatter(x=energy_dim.values, y=np.abs(dat).squeeze()*plot_dic['y_scale'], name=f'{dat.title}-Magnitude', mode="lines+markers", marker=dict(size=2)), row=1, col=1)
338
+ fig.add_trace(go.Scatter(x=energy_dim.values, y=np.angle(dat).squeeze()*plot_dic['y_scale'], name=f'{dat.title}-Phase', mode="lines+markers", marker=dict(size=2)), row=1, col=2)
339
+ else:
340
+ fig.add_trace(go.Scatter(x=energy_dim.values, y=np.array(dat).squeeze()*plot_dic['y_scale'], name=dat.title, mode="lines+markers", marker=dict(size=2)))
341
+
342
+
343
+ fig.update_layout(
344
+ selectdirection='h',
345
+ showlegend = plot_dic['show_legend'],
346
+ dragmode='select',
347
+ title_text=plot_dic['title'],
348
+ yaxis_title_text=plot_dic['y_axis_label'],
349
+ xaxis_title_text=plot_dic['x_axis_label'],
350
+ height=plot_dic['height'],
351
+ template=plot_dic['theme']
352
+ )
353
+ fig.update_layout(hovermode='x unified')
354
+
355
+ if plot_dic['has_complex_dataset']:
356
+ fig.update_yaxes(title_text='angle (rad)', row = 1, col = 2)
357
+ fig.update_xaxes(title_text=plot_dic['x_axis_label'], row = 1, col = 2)
358
+
359
+ config = {'displayModeBar': True}
360
+ if show:
361
+ fig.show(config=config)
362
+ return fig
363
+
364
+
365
+ class SpectrumView(object):
366
+ def __init__(self, datasets, figure=None, **kwargs):
367
+ first_dataset = datasets[list(datasets)[0]]
368
+ if first_dataset.data_type.name != 'SPECTRUM':
369
+ raise TypeError('We need a spectrum dataset here')
370
+ if first_dataset.ndim >1:
371
+ if first_dataset.shape[1] >1:
372
+ raise TypeError('Wrong dimensions for spectrum datasset')
373
+
374
+ energy_dim = first_dataset.get_spectrum_dims()
375
+ energy_dim = first_dataset.get_dimension_by_number(energy_dim[0])[0]
376
+
377
+ if 'plot_parameter' not in first_dataset.metadata:
378
+ first_dataset.metadata['plot_parameter'] = {}
379
+ plot_dic = first_dataset.metadata['plot_parameter']
380
+ energy_dim.label = f'{energy_dim.quantity} ({energy_dim.units})'
381
+
382
+ plot_dic['title'] = kwargs.pop('title', '')
383
+ plot_dic['theme'] = kwargs.pop('theme', "plotly_white")
384
+ plot_dic['y_scale'] = kwargs.pop('y_scale', 1.0)
385
+ plot_dic['y_axis_label'] = kwargs.pop('y_axis_label', first_dataset.data_descriptor)
386
+ plot_dic['x_axis_label'] = kwargs.pop('x_axis_label', energy_dim.label)
387
+ plot_dic['height'] = kwargs.pop('height', 500)
388
+
389
+
390
+ if 'incident_beam_current_counts' in first_dataset.metadata['experiment']:
391
+ plot_dic['y_scale'] = 1e6/first_dataset.metadata['experiment']['incident_beam_current_counts']
392
+ plot_dic['y_axis_label'] = ' probability (ppm)'
393
+ # plot_dic['y_scale'] = 1e6/first_dataset.sum()
394
+
395
+ def selection_fn(trace,points,selector):
396
+ self.energy_selection = [points.point_inds[0], points.point_inds[-1]]
397
+
398
+ self.fig = spectrum_view_plotly(datasets)
399
+
400
+ self.spectrum_widget = go.FigureWidget(self.fig)
401
+
402
+ self.spectrum_widget.data[0].on_selection(selection_fn)
403
+ self.spectrum_widget.data[0].on_click(self.identify_edges)
404
+
405
+ self.edge_annotation = 0
406
+ self.edge_line = 0
407
+ self.regions = {}
408
+ self.initialize_edge()
409
+
410
+ self.plot = display(self.spectrum_widget)
411
+
412
+ def initialize_edge(self):
413
+ """ Intitalizes edge cursor
414
+ Should be run first so that edge cursor is first
415
+ """
416
+ self.edge_annotation = len(self.spectrum_widget.layout.annotations)
417
+ self.edge_line = len(self.spectrum_widget.layout.shapes)
418
+ self.spectrum_widget.add_vline(x=200, line_dash="dot", line_color='blue',
419
+ annotation_text= " ",
420
+ annotation_position="top right",
421
+ visible = False)
422
+
423
+ def identify_edges(self, trace, points, selector):
424
+ energy = points.xs[0]
425
+ edge_names = find_edge_names(points.xs[0])
426
+ self.spectrum_widget.layout['annotations'][self.edge_annotation].x=energy
427
+
428
+ self.spectrum_widget.layout['annotations'][self.edge_annotation].text = f"{edge_names}"
429
+ self.spectrum_widget.layout['annotations'][self.edge_annotation].visible = True
430
+ self.spectrum_widget.layout['shapes'][self.edge_line].x0 = energy
431
+ self.spectrum_widget.layout['shapes'][self.edge_line].x1 = energy
432
+ self.spectrum_widget.layout['shapes'][self.edge_line].visible = True
433
+ self.spectrum_widget.layout.update()
434
+
435
+ def add_region(self, text, start, end, color='blue'):
436
+ if text not in self.regions:
437
+ self.regions[text] = {'annotation': len(self.spectrum_widget.layout.annotations),
438
+ 'shape': len(self.spectrum_widget.layout.shapes),
439
+ 'start': start,
440
+ 'end': end,
441
+ 'color': color}
442
+ self.spectrum_widget.add_vrect(x0=start, x1=end,
443
+ annotation_text=text, annotation_position="top left",
444
+ fillcolor=color, opacity=0.15, line_width=0)
445
+ self.spectrum_widget.layout.update()
446
+ else:
447
+ self.update_region(text, start, end)
448
+
449
+
450
+ def update_region(self, text, start, end):
451
+ if text in self.regions:
452
+ region = self.regions[text]
453
+ self.spectrum_widget.layout.annotations[region['annotation']].x =start
454
+ self.spectrum_widget.layout['shapes'][region['shape']].x0 = start
455
+ self.spectrum_widget.layout['shapes'][region['shape']].x1 = end
456
+ self.spectrum_widget.layout.update()
457
+
458
+ def regions_visibility(self, visibility=True):
459
+
460
+ for region in self.regions.values():
461
+ self.spectrum_widget.layout.annotations[region['annotation']].visible = visibility
462
+ self.spectrum_widget.layout.shapes[region['shape']].visible = visibility
463
+
464
+
465
+ def find_edge_names(energy_value):
466
+
467
+ selected_edges = []
468
+ for shift in [1,2,5,10,20]:
469
+ selected_edge = ''
470
+ edges = eels.find_major_edges(energy_value, shift)
471
+ edges = edges.split('\n')
472
+ for edge in edges[1:]:
473
+ edge = edge[:-3].split(':')
474
+ name = edge[0].strip()
475
+ energy = float(edge[1].strip())
476
+ selected_edge = name
477
+
478
+ if selected_edge != '':
479
+ selected_edges.append(selected_edge)
480
+ if len(selected_edges)>0:
481
+ return selected_edges
@@ -387,31 +387,45 @@ x_sections = {'1': {'name': 'H',
387
387
  5.849270e+04, 6.252870e+04, 6.684318e+04, 7.145536e+04,
388
388
  7.638578e+04, 8.165640e+04, 8.729069e+04, 9.331374e+04,
389
389
  9.975239e+04]),
390
- 'dat': np.array([1.73384709e+17, 1.68319106e+17, 4.17741709e+16, 3.70675760e+16,
391
- 3.27899957e+16, 2.89145043e+16, 2.83239362e+16, 2.75089880e+16,
392
- 2.72971733e+16, 3.39872874e+16, 3.34739059e+16, 3.29533443e+16,
393
- 3.11062482e+16, 2.96127749e+16, 2.82646998e+16, 2.69920165e+16,
394
- 2.57318984e+16, 2.44484448e+16, 2.31237053e+16, 2.17576798e+16,
395
- 2.03593437e+16, 1.89430571e+16, 1.75265911e+16, 1.61291524e+16,
396
- 1.47677941e+16, 1.34574149e+16, 1.22096826e+16, 1.10330339e+16,
397
- 9.93339235e+15, 8.91327112e+15, 7.97374718e+15, 7.11320501e+15,
398
- 6.32841352e+15, 5.61416710e+15, 4.96741419e+15, 4.38492371e+15,
399
- 3.86202856e+15, 3.39477965e+15, 2.97833037e+15, 2.60639808e+15,
400
- 2.27431568e+15, 1.98172416e+15, 1.72431542e+15, 1.49840964e+15,
401
- 1.30047058e+15, 1.12735692e+15, 9.76196603e+14, 8.44404766e+14,
402
- 7.29665810e+14, 6.29933387e+14, 5.70768869e+14, 5.51849147e+14,
403
- 5.46948688e+14, 1.46983260e+16, 1.46076765e+16, 1.41693277e+16,
404
- 1.28133545e+16, 1.11570711e+16, 9.66072578e+15, 8.32072842e+15,
405
- 7.13187342e+15, 6.08769866e+15, 5.17833139e+15, 4.39138586e+15,
406
- 3.71429677e+15, 3.13413984e+15, 2.63906781e+15, 2.21795142e+15,
407
- 1.86073846e+15, 1.55866913e+15, 1.30370165e+15, 1.08892512e+15,
408
- 9.08362042e+14, 7.56788864e+14, 6.29753883e+14, 5.23451614e+14,
409
- 4.34597134e+14, 3.60372230e+14, 2.98515152e+14, 2.47051355e+14,
410
- 2.04347354e+14, 1.67545444e+14, 1.37356461e+14, 1.12606449e+14,
411
- 9.23153171e+13, 7.56824765e+13, 6.20455576e+13, 5.08660485e+13,
412
- 4.17005742e+13, 3.41865368e+13, 2.80277546e+13, 2.29783070e+13,
413
- 1.88371498e+13, 1.54434471e+13, 1.26607761e+13, 1.03796393e+13,
414
- 8.50956662e+12])},
390
+ 'dat': np.array([0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 1.73384709E+17,
391
+ 1.68319106E+17, 4.17741709E+16, 3.70675760E+16, 3.27899957E+16,
392
+ 2.89145043E+16, 2.83239362E+16, 2.75089880E+16, 2.72971733E+16,
393
+ 3.39872874E+16, 3.34739059E+16, 3.29533443E+16, 3.11062482E+16,
394
+ 2.96127749E+16, 2.82646998E+16, 2.69920165E+16, 2.57318984E+16,
395
+ 2.44484448E+16, 2.31237053E+16, 2.17576798E+16, 2.03593437E+16,
396
+ 1.89430571E+16, 1.75265911E+16, 1.61291524E+16, 1.47677941E+16,
397
+ 1.34574149E+16, 1.22096826E+16, 1.10330339E+16, 9.93339235E+15,
398
+ 8.91327112E+15, 7.97374718E+15, 7.11320501E+15, 6.32841352E+15,
399
+ 5.61416710E+15, 4.96741419E+15, 4.38492371E+15, 3.86202856E+15,
400
+ 3.39477965E+15, 2.97833037E+15, 2.60639808E+15, 2.27431568E+15,
401
+ 1.98172416E+15, 1.72436928E+15, 1.49846349E+15, 1.30052443E+15,
402
+ 1.12741077E+15, 9.76268405E+14, 8.44476568E+14, 7.29737611E+14,
403
+ 6.30005189E+14, 5.70840670E+14, 5.51938899E+14, 5.47038440E+14,
404
+ 1.46983260E+16, 1.46076765E+16, 1.41693277E+16, 1.28133545E+16,
405
+ 1.11572506E+16, 9.66090528E+15, 8.32090792E+15, 7.13205293E+15,
406
+ 6.08787816E+15, 5.17851090E+15, 4.39156536E+15, 3.71447627E+15,
407
+ 3.13431934E+15, 2.63924731E+15, 2.21813093E+15, 1.86091797E+15,
408
+ 1.55881274E+15, 1.30384525E+15, 1.08906872E+15, 9.08505645E+14,
409
+ 7.56932467E+14, 6.29897486E+14, 5.23595218E+14, 4.34740738E+14,
410
+ 3.60515834E+14, 2.98658755E+14, 2.47194958E+14, 2.04490957E+14,
411
+ 1.67685457E+14, 1.37494679E+14, 1.12742872E+14, 9.24481501E+13,
412
+ 7.58135144E+13, 6.21730054E+13, 5.09917013E+13, 4.18226370E+13,
413
+ 3.43050094E+13, 2.81426371E+13, 2.30895995E+13, 1.89448522E+13,
414
+ 1.55477390E+13, 1.27614779E+13, 1.04767510E+13, 8.60308821E+12,
415
+ 7.03727482E+12, 5.73622982E+12, 4.67554069E+12, 3.79453506E+12,
416
+ 3.08136566E+12, 2.50408080E+12, 2.03665238E+12, 1.65802460E+12,
417
+ 1.35144972E+12, 1.10312388E+12, 9.01863997E+11, 7.38641010E+11,
418
+ 6.06292710E+11, 4.99021120E+11, 4.11979630E+11, 3.41362757E+11,
419
+ 2.83688122E+11, 2.35922107E+11, 1.97382598E+11, 1.66220704E+11,
420
+ 1.41029113E+11, 1.20641048E+11, 1.04123090E+11, 9.07249117E+10,
421
+ 7.98397891E+10, 7.09812667E+10, 6.37616158E+10, 5.78595243E+10,
422
+ 5.30236866E+10, 4.90476730E+10, 4.57681349E+10, 4.30468542E+10,
423
+ 4.07797187E+10, 3.88626160E+10, 3.72434899E+10, 3.58648992E+10,
424
+ 3.46819678E+10, 3.36534099E+10, 3.27487098E+10, 3.19445318E+10,
425
+ 3.12157456E+10, 3.05515808E+10, 2.99358821E+10, 2.93578792E+10,
426
+ 2.88103920E+10, 2.82844453E+10, 2.77764490E+10, 2.72810179E+10,
427
+ 2.67963571E+10, 2.63170814E+10, 2.58449859E+10, 2.53746854E+10,
428
+ 2.49061800E+10,])},
415
429
  '6': {'name': 'C',
416
430
  'barns': 199447000000.0,
417
431
  'NumEdges': 3,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyTEMlib
3
- Version: 0.2023.3.0
3
+ Version: 0.2023.8.0
4
4
  Summary: pyTEM: TEM Data Quantification library through a model-based approach
5
5
  Home-page: https://pycroscopy.github.io/pyTEMlib/about.html
6
6
  Author: Gerd Duscher
@@ -18,7 +18,6 @@ Classifier: Natural Language :: English
18
18
  Classifier: Operating System :: OS Independent
19
19
  Classifier: Programming Language :: Cython
20
20
  Classifier: Programming Language :: Python :: 3
21
- Classifier: Programming Language :: Python :: 3.7
22
21
  Classifier: Programming Language :: Python :: 3.8
23
22
  Classifier: Programming Language :: Python :: 3.9
24
23
  Classifier: Programming Language :: Python :: 3.10
@@ -34,12 +33,13 @@ Requires-Dist: plotly
34
33
  Requires-Dist: pandas
35
34
  Requires-Dist: requests
36
35
  Requires-Dist: lxml
36
+ Requires-Dist: ipympl
37
37
  Requires-Dist: spglib
38
38
  Requires-Dist: scikit-image
39
39
  Requires-Dist: scikit-learn
40
- Requires-Dist: pyNSID (>=0.0.7)
41
- Requires-Dist: sidpy (>=0.11.2)
42
- Requires-Dist: SciFiReaders (>=0.0.8)
40
+ Requires-Dist: pyNSID >=0.0.7
41
+ Requires-Dist: sidpy >=0.11.2
42
+ Requires-Dist: SciFiReaders >=0.0.8
43
43
 
44
44
  pyTEMlib
45
45
  ========
@@ -0,0 +1,40 @@
1
+ pyTEMlib/__init__.py,sha256=nEN93amIEoZxO7rJgN71ABeCoXrnmaywBbE97l5lPio,178
2
+ pyTEMlib/animation.py,sha256=oPxbTuy8LfdH2mOOgm9Q40ArFAJmXM_58UV97ptcNAY,25187
3
+ pyTEMlib/atom_tools.py,sha256=ViO4ZZZoCZ_Cp2KijiqKKOiQhGOWnye45T0rsiPhf4I,7314
4
+ pyTEMlib/config_dir.py,sha256=NWAseETgFNfBgHfBFv7ZTl7RsFzrLdGlhTN5Bn5FrTg,2104
5
+ pyTEMlib/crystal_tools.py,sha256=KGW_fQqr2L8iJnGh31gi6qbJOeHt-Y7mOeIHx_Psxb8,61676
6
+ pyTEMlib/diffraction_plot.py,sha256=pM5d3bdBGa8LlPZ5lw8sLT94mlYTXELxPLv-jUP2FWY,27959
7
+ pyTEMlib/dynamic_scattering.py,sha256=O9MxnxfndWJ2VhQRjksKNQ4yY7y-gN_hitRQ4Qox4ns,9472
8
+ pyTEMlib/eds_tools.py,sha256=gPrKT3U8lS7V36Njk72CWI-ovsoFv-EvwB8U9zBhpGU,3546
9
+ pyTEMlib/eels_dialog.py,sha256=IuiekHXOz7kL36TGv3dJAunifSiMF-92U-s9PrSAqTo,61225
10
+ pyTEMlib/eels_dialog_utilities.py,sha256=hCNIu5UcA1WZtsFMNw3go_kzYgm2nGjvwxDKhLFZpxg,54612
11
+ pyTEMlib/eels_dlg.py,sha256=t3DotxKBqgmqUd_ITQGfzdDWaHANj5CYsHt4hc8chSY,9834
12
+ pyTEMlib/eels_tools.py,sha256=n6ke9XEqvzMXYrri0EmIE9pJ2sZZdV55Dolton9-Gvg,75435
13
+ pyTEMlib/file_tools.py,sha256=wL50vVk7vwPKIua4-tCzjM_dAy5uWg0jUwLMv_BoTZI,46102
14
+ pyTEMlib/file_tools_qt.py,sha256=tLZACS4JyGH_AOzNR_SGAhjA01y4VJB261opPhGMlm8,7223
15
+ pyTEMlib/graph_tools.py,sha256=lXU0ty2kHv2aqJEHiTQliqkfLHWAELzBRIqEb7Ni6Nk,44148
16
+ pyTEMlib/graph_viz.py,sha256=m5PwSn6l2r0bsaLWBDSHc9IGR3_PneG2BrZgnEdi07I,13644
17
+ pyTEMlib/image_dialog.py,sha256=F-ZgKq7UnMtPPd1b9eqb7t8MXDfWN-8hVKwB2Il0x28,6235
18
+ pyTEMlib/image_dlg.py,sha256=n5gradDiYOFGEQ3k_Wlk9RUYYzl4bl_hKLzNVcYteNE,5694
19
+ pyTEMlib/image_tools.py,sha256=AqNdbiPvr0uRy_o89NiuuHjQQcdx-rhj90Ae7_aQGQs,37278
20
+ pyTEMlib/info_dialog.py,sha256=E7kumPEzyEYumTcvV0sdYPjHM7MO2SAwcl9oT_nK_AA,32694
21
+ pyTEMlib/info_dlg.py,sha256=A72cifLU12ucijP_Nxf2hsA8IUhIs5cKJ0yIbKRPjXk,9894
22
+ pyTEMlib/info_widget.py,sha256=PcHQGx-Ndzdemt7XZ1nlb2aSGQYiC0ZZHx88B-nQkeI,32003
23
+ pyTEMlib/interactive_eels.py,sha256=lzK6sgMTjoRyaUc48BgOgrG_xhuBqjXdp-kIeaTBVD0,912
24
+ pyTEMlib/interactive_image.py,sha256=5PwypcA1OjLAD-fi8bmWWFHuOjdIPVY9Dh59V24WuDA,34
25
+ pyTEMlib/kinematic_scattering.py,sha256=wuH0YvPz4PL3DksPNsRvkl6zsJP-Uy-QXGvLlwHxR6c,61071
26
+ pyTEMlib/microscope.py,sha256=iigUF1UImHEfmL2wqEBBj3aNRgEYouDbIln8VCo4_KM,1545
27
+ pyTEMlib/peak_dialog.py,sha256=dBJshnBcmtn8L2BJpTclshTukJYXYbd0dFJEJmbyCjU,56368
28
+ pyTEMlib/peak_dlg.py,sha256=qcjcnhwpGa4jBCeXzwQz9sCyX-tHsLLQ67ToqfKOiQY,11550
29
+ pyTEMlib/probe_tools.py,sha256=8tPQuANClLsGAKnZo6Vo4gNIGKfyDR6WUMO3dXcm_4k,27177
30
+ pyTEMlib/sidpy_tools.py,sha256=0oIx-qMtEmcZmLazQKW19dd-KoxyY3B15aIeMcyHA8E,4878
31
+ pyTEMlib/simulation_tools.py,sha256=RmegD5TpQMU68uASvzZWVplAqs7bM5KkF6bWDWLjyc0,2799
32
+ pyTEMlib/version.py,sha256=L6feq1ILXLEf4Sl5r76W5rml6QzybDbUuBsZS947eYE,93
33
+ pyTEMlib/viz.py,sha256=Z36r4OptraJVIQlZx57_1wwwrwnxWVZyNoCOjeNj_ac,18439
34
+ pyTEMlib/xrpa_x_sections.py,sha256=WeR7dc6SjYukk1S_8kR6IQFDqPagETTMJkFmbP78OPU,1805870
35
+ pyTEMlib-0.2023.8.0.dist-info/LICENSE,sha256=ASQTnQgYv39esmSFeb-IDhPwOMZSqGJ4s19vy4YtIaA,1069
36
+ pyTEMlib-0.2023.8.0.dist-info/METADATA,sha256=6fqx1QSoxo3E-0CvA6NB70ukueyAefT0Z1YVnGpz2u8,3280
37
+ pyTEMlib-0.2023.8.0.dist-info/WHEEL,sha256=m9WAupmBd2JGDsXWQGJgMGXIWbQY3F5c2xBJbBhq0nY,110
38
+ pyTEMlib-0.2023.8.0.dist-info/entry_points.txt,sha256=qiIFPP3ffSz-gxj-TowzbA0Setq5Lo0RJTVtSrqD1IY,44
39
+ pyTEMlib-0.2023.8.0.dist-info/top_level.txt,sha256=rPLVH0UJxrPSPgSoKScTjL1K_X69JFzsYYnDnYTYIlU,9
40
+ pyTEMlib-0.2023.8.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.40.0)
2
+ Generator: bdist_wheel (0.41.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py2-none-any
5
5
  Tag: py3-none-any
@@ -1,39 +0,0 @@
1
- pyTEMlib/__init__.py,sha256=nEN93amIEoZxO7rJgN71ABeCoXrnmaywBbE97l5lPio,178
2
- pyTEMlib/animation.py,sha256=oPxbTuy8LfdH2mOOgm9Q40ArFAJmXM_58UV97ptcNAY,25187
3
- pyTEMlib/atom_tools.py,sha256=ViO4ZZZoCZ_Cp2KijiqKKOiQhGOWnye45T0rsiPhf4I,7314
4
- pyTEMlib/config_dir.py,sha256=NWAseETgFNfBgHfBFv7ZTl7RsFzrLdGlhTN5Bn5FrTg,2104
5
- pyTEMlib/crystal_tools.py,sha256=D8Di8uq1pBTZ8el9Pz48I8HgT6_fbqZCAh5A25ON5dw,59580
6
- pyTEMlib/diffraction_plot.py,sha256=pM5d3bdBGa8LlPZ5lw8sLT94mlYTXELxPLv-jUP2FWY,27959
7
- pyTEMlib/dynamic_scattering.py,sha256=O9MxnxfndWJ2VhQRjksKNQ4yY7y-gN_hitRQ4Qox4ns,9472
8
- pyTEMlib/eds_tools.py,sha256=gPrKT3U8lS7V36Njk72CWI-ovsoFv-EvwB8U9zBhpGU,3546
9
- pyTEMlib/eels_dialog.py,sha256=ICb_7f-Mbglrl8QM2KaxOFOoevkLEwXAvP2aqFUa0zY,32400
10
- pyTEMlib/eels_dialog_utilities.py,sha256=p52DIzLRN3f8-jW_hzoC5vvqb3OKB3qxYlc3DuHetMA,54546
11
- pyTEMlib/eels_dlg.py,sha256=0m9-f_lf80okDzmc8d0jiw29ex-CF_49IKygk3Lrpx8,9757
12
- pyTEMlib/eels_tools.py,sha256=xzTDY35eRiCkxHE9vQIgqeysyPeJ7H78PQVaJ_-DqJU,72114
13
- pyTEMlib/file_tools.py,sha256=fKXgNMeVKkG-DhZC-EG32O6wNn5SbXLR5foplwmKToQ,42516
14
- pyTEMlib/file_tools_qt.py,sha256=tLZACS4JyGH_AOzNR_SGAhjA01y4VJB261opPhGMlm8,7223
15
- pyTEMlib/graph_tools.py,sha256=aHd2Hff9zFHB5W5EvVsPwplLQMnqoRGddHIW0sJgeDY,16875
16
- pyTEMlib/graph_viz.py,sha256=m5PwSn6l2r0bsaLWBDSHc9IGR3_PneG2BrZgnEdi07I,13644
17
- pyTEMlib/image_dialog.py,sha256=EHlJG2MSwN_bw61TIdp6e_blYKTSQwUJKMxQcQyouWI,6233
18
- pyTEMlib/image_dlg.py,sha256=55eO-0ZOy144SopintvtNM4cRKFGU08lC0Gk6vwoV2A,5692
19
- pyTEMlib/image_tools.py,sha256=GwDqe0tzU6gym_Mi4bTdbcFoe96vH-OBIrsuwS24Enk,35797
20
- pyTEMlib/info_dialog.py,sha256=lfcoiHe9vvgj90TtjBdSPgcbcSTl2WKLEErzKEOo1LM,14394
21
- pyTEMlib/info_dlg.py,sha256=fsQXrANJ5GAqH_Glh9MhuI38Z4cfMDtNi2XgHbEyMB8,9892
22
- pyTEMlib/interactive_eels.py,sha256=i9TMHm5Ak_M6e4HKZNp4QQ2CPScNa5YpsoqfzSck-EA,645
23
- pyTEMlib/interactive_image.py,sha256=5PwypcA1OjLAD-fi8bmWWFHuOjdIPVY9Dh59V24WuDA,34
24
- pyTEMlib/kinematic_scattering.py,sha256=wuH0YvPz4PL3DksPNsRvkl6zsJP-Uy-QXGvLlwHxR6c,61071
25
- pyTEMlib/microscope.py,sha256=iigUF1UImHEfmL2wqEBBj3aNRgEYouDbIln8VCo4_KM,1545
26
- pyTEMlib/peak_dialog.py,sha256=w0Yxz37DZOLhlPYMSf2doLVLOBoHWjMyMC__GTmGVFQ,23364
27
- pyTEMlib/peak_dlg.py,sha256=FPecchKfwbGQd40FD2yJR0SucaVfkNubYGbLcMqwvTo,10286
28
- pyTEMlib/probe_tools.py,sha256=8tPQuANClLsGAKnZo6Vo4gNIGKfyDR6WUMO3dXcm_4k,27177
29
- pyTEMlib/sidpy_tools.py,sha256=0oIx-qMtEmcZmLazQKW19dd-KoxyY3B15aIeMcyHA8E,4878
30
- pyTEMlib/simulation_tools.py,sha256=RmegD5TpQMU68uASvzZWVplAqs7bM5KkF6bWDWLjyc0,2799
31
- pyTEMlib/version.py,sha256=8Pl0rxW579E_EK1bs2uqQg9dfSAphcpC5gPq_VUP0gw,93
32
- pyTEMlib/viz.py,sha256=0s4QCIWPq_z3WaXlAdQnH8QgeU1u3aoO3gCHWA0wSbE,9356
33
- pyTEMlib/xrpa_x_sections.py,sha256=2qhWCueASAslrQFEnKX2TOv_kni6mhGgGfj4GVtjZ0E,1805586
34
- pyTEMlib-0.2023.3.0.dist-info/LICENSE,sha256=ASQTnQgYv39esmSFeb-IDhPwOMZSqGJ4s19vy4YtIaA,1069
35
- pyTEMlib-0.2023.3.0.dist-info/METADATA,sha256=FvdGf88_uEK5S72NoZwoN9gd3to0oAUQIa5Pgqcoavk,3314
36
- pyTEMlib-0.2023.3.0.dist-info/WHEEL,sha256=a-zpFRIJzOq5QfuhBzbhiA1eHTzNCJn8OdRvhdNX0Rk,110
37
- pyTEMlib-0.2023.3.0.dist-info/entry_points.txt,sha256=qiIFPP3ffSz-gxj-TowzbA0Setq5Lo0RJTVtSrqD1IY,44
38
- pyTEMlib-0.2023.3.0.dist-info/top_level.txt,sha256=rPLVH0UJxrPSPgSoKScTjL1K_X69JFzsYYnDnYTYIlU,9
39
- pyTEMlib-0.2023.3.0.dist-info/RECORD,,