Skip to content

Commit eb3dc81

Browse files
authored
Merge pull request #259 from pycroscopy/plotly-support
Plotly support
2 parents a77bcef + c8e6c98 commit eb3dc81

10 files changed

Lines changed: 10212 additions & 453 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,3 +298,5 @@ pyTEMlib/eds_tools/get_bote_salvat.py
298298
.virtual_documents/notebooks/2_Image_Tools.ipynb
299299
.virtual_documents/notebooks/3_Spectroscopy_Tools.ipynb
300300
pyTEMlib/diffraction_tools/kinematic copy.py
301+
example_data/01-EELS Acquire_STO.hf5
302+
example_data/01-EELS Acquire_STO-1.hf5

notebooks/Diffraction/D3_Diffraction_Kikuchi_HOLZ-Copy1.ipynb

Lines changed: 8479 additions & 0 deletions
Large diffs are not rendered by default.

notebooks/Imaging/I4_Structure_Analysis.ipynb

Lines changed: 1202 additions & 203 deletions
Large diffs are not rendered by default.

notebooks/Spectroscopy/EDS-SI.ipynb

Lines changed: 463 additions & 199 deletions
Large diffs are not rendered by default.

notebooks/Spectroscopy/EDS.ipynb

Lines changed: 34 additions & 32 deletions
Large diffs are not rendered by default.

pyTEMlib/diffraction_tools/kinematic.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ def calculate_holz(dif):
244244

245245
g_allowed = dif['allowed']['g']
246246
# g_allowed[:,0] is 2 Bragg angles theta
247-
d_theta = (g_allowed[:,0]/2-np.arcsin(g_allowed[:,2]/g_allowed[:,3]))
247+
d_theta = g_allowed[:,0]/2-np.arcsin(g_allowed[:,2]/g_allowed[:,3])
248248

249249
# Calculate nearest point of HOLZ and Kikuchi lines
250250
g_closest = dif['allowed']['g'].copy()

pyTEMlib/eds_tools/eds_tools.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,14 @@ def detect_peaks(dataset, minimum_number_of_peaks=30, prominence=10):
173173

174174
minor_peaks, _ = scipy.signal.find_peaks(new_spectrum, prominence=prominence)
175175

176-
while len(minor_peaks) > minimum_number_of_peaks:
177-
prominence+=10
178-
minor_peaks, _ = scipy.signal.find_peaks(new_spectrum, prominence=prominence)
176+
if len(minor_peaks) < minimum_number_of_peaks:
177+
while len(minor_peaks) < minimum_number_of_peaks:
178+
prominence/=10
179+
minor_peaks, _ = scipy.signal.find_peaks(new_spectrum, prominence=prominence)
180+
else:
181+
while len(minor_peaks) > minimum_number_of_peaks:
182+
prominence+=10
183+
minor_peaks, _ = scipy.signal.find_peaks(new_spectrum, prominence=prominence)
179184
return np.array(minor_peaks)+start
180185

181186
def peaks_element_correlation(spectrum, minor_peaks):
@@ -468,6 +473,7 @@ def fit_model(spectrum, use_detector_efficiency=False):
468473
def residuals(pp, yy):
469474
""" residuals for fit"""
470475
model = np.zeros(len(yy))
476+
pp = np.abs(pp)
471477
for i in range(len(pp)-4):
472478
model += peaks[i]*pp[i]
473479
if use_detector_efficiency:
@@ -481,8 +487,8 @@ def residuals(pp, yy):
481487
y = np.array(spectrum) # .compute()
482488
[p, _] = scipy.optimize.leastsq(residuals, pin, args=(y,), maxfev=10000)
483489

484-
update_fit_values(spectrum.metadata['EDS'], peaks, p)
485-
return np.array(peaks), np.array(p)
490+
update_fit_values(spectrum.metadata['EDS'], peaks, np,abs(p))
491+
return np.array(peaks), np.abs(p)
486492

487493

488494
def update_fit_values(out_tags, peaks, p):

pyTEMlib/eels_tools/core_loss_tools.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,16 @@ def find_associated_edges(dataset: sidpy.Dataset) -> None:
115115
if key.isdigit():
116116
onsets.append(edge['onset'])
117117
core_loss[key]['associated_peaks'] = {}
118-
peaks = dataset.metadata['peak_fit'].get('peaks', [])
119-
for key, peak in enumerate(peaks):
120-
distances = (onsets-peak[0]) * -1
121-
distances[distances < -0.3] = 1e6
122-
if np.min(distances) < 50:
123-
index = np.argmin(distances)
124-
core_loss[str(index)]['associated_peaks'][key] = peak
118+
119+
peaks = dataset.metadata['peak_fit'].get('peak_out_list', [])
120+
onsets = np.array(onsets)
121+
print(peaks)
122+
for key, peak in enumerate(peaks):
123+
distances = (onsets-float(peak[0])) * -1
124+
distances[distances < -0.3] = 1e6
125+
if np.min(distances) < 50:
126+
index = np.argmin(distances)
127+
core_loss[str(index)]['associated_peaks'][key] = peak
125128

126129

127130
def find_white_lines(dataset: sidpy.Dataset) -> Union[None, dict]:

pyTEMlib/eels_tools/peak_fit_tools.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ def model_smooth(x: np.ndarray,
5858
# ################################################################
5959

6060
@jit
61-
def gauss(x, p):
61+
def gauss(x: np.ndarray,
62+
p: list[float]) -> np.ndarray:
6263
"""Gaussian Function
6364
6465
p[0]==mean, p[1]= amplitude p[2]==fwhm
@@ -79,19 +80,21 @@ def gmm(x, p):
7980
for i in range(number_of_peaks):
8081
index = i*3
8182
p[index + 1] = p[index + 1]
82-
# print(p[index + 1])
8383
p[index + 2] = abs(p[index + 2])
8484
y = y + gauss(x, p[index:index+3])
8585
return y
8686

8787
@jit
88-
def residuals3(pp, xx, yy):
88+
def residuals3(pp: list[float],
89+
xx: np.ndarray,
90+
yy: np.ndarray) -> np.ndarray:
8991
"""Residuals for Gaussian Mixture Model"""
9092
err = yy - gmm(xx, pp)
9193
return err
9294

9395

94-
def find_maxima(y, number_of_peaks):
96+
def find_maxima(y: np.ndarray,
97+
number_of_peaks: int) -> np.ndarray:
9598
""" find the first most prominent peaks
9699
97100
peaks are then sorted by energy
@@ -117,7 +120,8 @@ def find_maxima(y, number_of_peaks):
117120
return peaks[peak_indices]
118121

119122

120-
def find_peaks(dataset, energy_scale): #, fit_start, fit_end, sensitivity=2):
123+
def find_peaks(dataset: sidpy.Dataset| np.ndarray,
124+
energy_scale: np.ndarray) -> list[list[float]]:
121125
"""find peaks in spectrum"""
122126

123127
peaks, _ = scipy.signal.find_peaks(np.abs(dataset)+1, width=5)

pyTEMlib/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
"""
22
version
33
"""
4-
__version__ = '0.2026.1.3'
4+
__version__ = '0.2026.3.0'
55
__time__ = '2026-01-28 20:58:26'

0 commit comments

Comments
 (0)