pyTEMlib 0.2023.4.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/crystal_tools.py +47 -5
- pyTEMlib/eels_dialog.py +656 -41
- pyTEMlib/eels_dialog_utilities.py +8 -4
- pyTEMlib/eels_dlg.py +4 -3
- pyTEMlib/eels_tools.py +93 -39
- pyTEMlib/file_tools.py +95 -13
- pyTEMlib/graph_tools.py +716 -10
- pyTEMlib/image_dialog.py +1 -1
- pyTEMlib/image_dlg.py +1 -1
- pyTEMlib/image_tools.py +82 -39
- pyTEMlib/info_dialog.py +356 -15
- pyTEMlib/info_dlg.py +1 -1
- pyTEMlib/info_widget.py +655 -0
- pyTEMlib/interactive_eels.py +12 -4
- pyTEMlib/peak_dialog.py +621 -22
- pyTEMlib/peak_dlg.py +1 -1
- pyTEMlib/version.py +2 -2
- pyTEMlib/viz.py +217 -0
- {pyTEMlib-0.2023.4.0.dist-info → pyTEMlib-0.2023.8.0.dist-info}/METADATA +5 -5
- pyTEMlib-0.2023.8.0.dist-info/RECORD +40 -0
- {pyTEMlib-0.2023.4.0.dist-info → pyTEMlib-0.2023.8.0.dist-info}/WHEEL +1 -1
- pyTEMlib-0.2023.4.0.dist-info/RECORD +0 -39
- {pyTEMlib-0.2023.4.0.dist-info → pyTEMlib-0.2023.8.0.dist-info}/LICENSE +0 -0
- {pyTEMlib-0.2023.4.0.dist-info → pyTEMlib-0.2023.8.0.dist-info}/entry_points.txt +0 -0
- {pyTEMlib-0.2023.4.0.dist-info → pyTEMlib-0.2023.8.0.dist-info}/top_level.txt +0 -0
pyTEMlib/peak_dlg.py
CHANGED
pyTEMlib/version.py
CHANGED
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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pyTEMlib
|
|
3
|
-
Version: 0.2023.
|
|
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
|
|
41
|
-
Requires-Dist: sidpy
|
|
42
|
-
Requires-Dist: SciFiReaders
|
|
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,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=o680vo8tPHzLmr3pVW7nVNHioC3ENkEr6I5lMyoXtlw,32917
|
|
10
|
-
pyTEMlib/eels_dialog_utilities.py,sha256=p52DIzLRN3f8-jW_hzoC5vvqb3OKB3qxYlc3DuHetMA,54546
|
|
11
|
-
pyTEMlib/eels_dlg.py,sha256=3iH7CJGMrzcogKnl-Wd0I_X36tzGhw9al9oJG2Mq6xo,9762
|
|
12
|
-
pyTEMlib/eels_tools.py,sha256=LOLevrp8DOlDdXzj4JOXZX_cGPS2Yyt0lfK3L44YDws,72938
|
|
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=z6SdlEfcTI473u4q2I4gUN5VVnJTfu27wQWTbOdeyRg,27881
|
|
27
|
-
pyTEMlib/peak_dlg.py,sha256=2DeNDn6NVU1mK-HmdnQssAUNNWk35J31oRsYeBepi8o,11548
|
|
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=0j0pc3D1ED65TKRTO4GNA3z6nNv_mGvLI9ZOUX_uJss,93
|
|
32
|
-
pyTEMlib/viz.py,sha256=0s4QCIWPq_z3WaXlAdQnH8QgeU1u3aoO3gCHWA0wSbE,9356
|
|
33
|
-
pyTEMlib/xrpa_x_sections.py,sha256=WeR7dc6SjYukk1S_8kR6IQFDqPagETTMJkFmbP78OPU,1805870
|
|
34
|
-
pyTEMlib-0.2023.4.0.dist-info/LICENSE,sha256=ASQTnQgYv39esmSFeb-IDhPwOMZSqGJ4s19vy4YtIaA,1069
|
|
35
|
-
pyTEMlib-0.2023.4.0.dist-info/METADATA,sha256=_5-6MiujmmSKL6arzGGzaafYLQeA6ekiDBMjajTFLBE,3314
|
|
36
|
-
pyTEMlib-0.2023.4.0.dist-info/WHEEL,sha256=a-zpFRIJzOq5QfuhBzbhiA1eHTzNCJn8OdRvhdNX0Rk,110
|
|
37
|
-
pyTEMlib-0.2023.4.0.dist-info/entry_points.txt,sha256=qiIFPP3ffSz-gxj-TowzbA0Setq5Lo0RJTVtSrqD1IY,44
|
|
38
|
-
pyTEMlib-0.2023.4.0.dist-info/top_level.txt,sha256=rPLVH0UJxrPSPgSoKScTjL1K_X69JFzsYYnDnYTYIlU,9
|
|
39
|
-
pyTEMlib-0.2023.4.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|