

# https://www.globalsino.com/ICs/
# hyperspy application in STEM, EDS, and EELS analysis 

import datetime
import time
import hyperspy.api as hs
import numpy as np

dmFile = r"C:\GlobalSino20230219\EM\DM3_4 Matlab\EELS map\EELS test spectrum image.dm3"
STEMfile = r"C:\GlobalSino20230219\EM\DM3_4 Matlab\Test STEM.dm3"

datestring = datetime.datetime.now().strftime('%B %d, %Y')
for c in 'Today is {}!'.format(datestring):
    print(c, end='')
time.sleep(.1)

myTest = hs.signals.Signal1D(np.random.random((10, 20, 30))).axes_manager
print(myTest)
print("\n")
print("signal slicing:")
signal_Slicing = hs.datasets.example_signals.EDS_SEM_Spectrum()
print(signal_Slicing)
print("\n")
print("Slice by axis units with floats:")
print(signal_Slicing.isig[1.0:5.0])
print("\n")
print("Slice by index with integers:")
print(signal_Slicing.isig[20:100])

img = hs.load(STEMfile)
print("img is ", img)

print("\n")
STEMimageA = img.plot(cmap="viridis", vmin = 2.6, vmax=3.8)

print("STEMimageA is ", STEMimageA)

# img.change_dtype('float64')

# Specify the signal range using the isig syntax
# Slice by axis units and index
img.metadata
img_crop = img.isig[100.0:200.5, 20:10000]
print(img_crop)
img_crop.plot()

filename = dmFile  # some STEM EELS SI
dataSI = hs.load(filename)
print('Source data:', dataSI )
SiCO = dataSI.add_elements(("Si", "C", "O"))
print("\n")
fitModel = dataSI.create_model()    # no LowLoss
print('Fit model:')
print(fitModel.components)
fitModel.smart_fit()
fitModel.quantify()
# fitModel.fit()
fitModel.plot(plot_components=True)
print("\n")
print("fitModel.plot() is ", fitModel.plot())
print('Fit model parameters:')
fitModel.print_current_values()
fitModel["PowerLaw"].r.as_signal


