Note
Go to the end to download the full example code.
EFA example
In this example, we perform the Evolving Factor Analysis
sphinx_gallery_thumbnail_number = 2
import os
import spectrochempy as scp
Load and preprocess the dataset
datadir = scp.preferences.datadir
dataset = scp.read_omnic(os.path.join(datadir, "irdata", "nh4y-activation.spg"))
Change the time origin
Mask saturated regions and preview

Fit the EFA model
Forward and backward evolution
Forward evolution of the first 5 components
f = efa1.f_ev[:, :5]
_ = f.T.plot(yscale="log", legend=f.k.labels)

Note the use of coordinate k (component axis) in the expression above.
To find the actual names of the coordinates, use the dims attribute:
['y', 'k']
Backward evolution
b = efa1.b_ev[:, :5]
_ = b.T[:5].plot(yscale="log", legend=b.k.labels)

Select the number of components and extract concentrations
Use 3 components (the 4th component magnitude serves as the noise cutoff):
efa1.n_components = 3
efa1.cutoff = efa1.f_ev[:, 3].max()
C1 = efa1.transform()
_ = C1.T.plot(title="EFA determined concentrations", legend=C1.k.labels)

The same can be done in one step with fit_transform:
Extract the resolved components
St = efa2.get_components()
_ = St.plot(title="components", legend=St.k.labels)

Compare with PCA
pca = scp.PCA(n_components=3)
C3 = pca.fit_transform(dataset)

LT = pca.loadings
_ = LT.plot(title="PCA components", legend=LT.k.labels)

This ends the example ! The following line can be uncommented if no plot shows when running the .py script with python
# scp.show()
Total running time of the script: (0 minutes 3.373 seconds)