SimulatedLIBS provides Python class to simulate LIBS spectra with NIST LIBS Database interface.
SimulatedLIBS also allows the creation of simulated data sets that can be used to train ML models.
SimulatedLIBS was mentioned is FOSS For Spectroscopy by Prof. Bryan A. Hanson, DePauw University.
Project created for B.Eng. thesis:
Computer methods of the identification of the elements in optical spectra obtained by Laser Induced Breakdown Spectroscopy.
Thesis supervisor: Paweł Gąsior PhD
e-mail: [email protected]
Institute of Plasma Physics and Laser Microfusion - IPPLM
pip install simLIBS
from simLIBS import SimulatedLIBS
Parameters:
- Te - electron temperature [eV]
- Ne - electron density [cm^-3]
- elements - list of elements
- percentages - list of elements concentrations
- resoulution
- wavelength range: low_w, upper_w
- maximal ion charge: max_ion_charge
- websraping: 'static' or 'dynamic'
libs = SimulatedLIBS(Te=1.0,
Ne=10**17,
elements=['W','Fe','Mo'],
percentages=[50,25,25],
resolution=1000,
low_w=200,
upper_w=1000,
max_ion_charge=3,
webscraping='static')
libs.plot(color='blue', title='W Fe Mo composition')
libs.save_to_csv('filename.csv')
SimulatedLIBS interpolates retrieved data from NIST with cubic splines.
libs.get_interpolated_spectrum()
Raw retrieved data from NIST
libs.get_raw_spectrum()
libs = SimulatedLIBS(Te=1.0,
Ne=10**17,
elements=['W','Fe','Mo'],
percentages=[50,25,25],
resolution=1000,
low_w=200,
upper_w=1000,
max_ion_charge=3,
webscraping='dynamic')
libs.plot(color='blue', title='W Fe Mo composition')
After simulation with parameter websraping = dynamic, ion spectra are stored in ion_spectra (pd.DataFrame) and can be plotted.
libs.plot_ion_spectra()
Based on .csv file with chemical composition of samples, one can generate dataset of simulated LIBS measurements with different Te and Ne values.
Example of input_composition_df pd.DataFrame:
W | H | He | name |
---|---|---|---|
50 | 25 | 25 | A |
30 | 60 | 10 | B |
40 | 40 | 20 | C |
SimulatedLIBS.create_dataset(input_composition_df,
size=100,
Te_min=1.0,
Te_max=2.0,
Ne_min=10**17,
Ne_max=10**18)
Example of output .csv file:
200.0 | 200.1 | 200.2 | 200.3 | 200.4 | ... | H | W | Te | Ne | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | ... | 2 | 50 | 1.43 | 1.08e+17 |
1 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 1.06 | 1.08e+17 |
2 | 0 | 0.1 | 0.1 | 0.1 | 0.1 | ... | 0 | 68 | 1.82 | 1.18e+17 |
3 | 0 | 54.5 | 56.7 | 54.4 | 48.4 | ... | 0 | 3 | 1.25 | 1.06e+17 |
4 | 0 | 121.7 | 143.1 | 140.5 | 115.3 | ... | 0 | 84 | 1.08 | 9.23e+17 |
SimulatedLIBS can be helpful in creating LIBS animations mostly for educational purpose.
Changes in resolution in range: 500-10000.
Changes in electron temperature Te in range: 0.5-5 eV.
Changes in electron density Ne in range: 0.7-1.3 e+17 [cm^-3].
- M. Kastek, et al., Analysis of hydrogen isotopes retention in thermonuclear reactors with LIBS supported by machine learning. Spectrochimica Acta Part B Atomic Spectroscopy 199: 106576. DOI: 10.1016/j.sab.2022.106576.
- Chen Z, Chen Z, Jiang W, Guo L, Zhang Y. Line intensity calculation of laser-induced breakdown spectroscopy during plasma expansion in nonlocal thermodynamic equilibrium. Opt Lett. 2023 Jun 15;48(12):3227-3230. DOI: 10.1364/OL.488250.