This page was generated from
docs/Examples/Fitting_Fermi_Diads/Example1a_Gas_Cell_Calibration/Step3_FitAll_Together.ipynb.
Interactive online version:
.
3. Fitting diads once you have groups
Once you have divided your diads into groups based on strengths, you need to tweak the fit parameters for each group
Then you can loop through all files in a given group and automatically fit the spectra
[4]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import joblib
import DiadFit as pf
pf.__version__
[4]:
'0.0.82'
Specifying filetype, and folder as before
[5]:
# This specifies what file type your Raman exported in.
meta_path, spectra_path, spectra_filetype, prefix, str_prefix, spectra_file_ext, meta_file_ext, TruPower=pf.get_settings()
Load in data and fit parameters
This loads in the dataframes of the fit parameters you saved in the other file, by group
At this point you select what group you want to fit (batch = ‘Weak’, ‘Medium’ or ‘Strong’). After running through the entire notebook for one group, come back up here to fit a second group.
[6]:
## load dataframes and numpy arrays
np_x = joblib.load('np_x.sav')
# Select the group you want to fit ('Weak', 'Medium', 'Strong')
batch='Strong' # Options are Weak, Medium, Strong
if batch=='Weak':
GroupN_df=joblib.load('Weak_df.sav')
if batch=='Medium':
GroupN_df=joblib.load('Medium_df.sav')
if batch=='Strong':
GroupN_df=joblib.load('Strong_df.sav')
Now load one file from this group to tweak parameters for
[7]:
Diad_Files =GroupN_df['filename']
i=0
Lets plot the diad to have a look at it
[8]:
plot1=pf.plot_diad(path=spectra_path, filename=Diad_Files[i], filetype=spectra_filetype)
Now lets inspect the diads and get their approximate positions
As with generic peak, you can exclude 2 segments (e.g. around cosmic rays)
You then specify how many peaks you want to fit on each diad. 1 means just the strong peak, 2 hotbands, and 3 for Diad2 would also fit the C13 peak if present.
The identify_diad_peaks then uses scipy findpeaks to identify the positions of the 2 diads, and any other peaks the user asks for. These are saved, and fed into the later functions for peak fitting.
Choose a model for fitting all peaks
Option of Voigt or PseudoVoigt. We recomend PsuedoVoigt
[9]:
model_name='PseudoVoigtModel'
[14]:
pf.diad1_fit_config(model_name='GaussianModel')
[14]:
diad1_fit_config(model_name='GaussianModel', fit_peaks=2, N_poly_bck_diad1=1, lower_bck_diad1=(1180, 1220), upper_bck_diad1=(1300, 1350), fit_gauss=False, gauss_amp=1000, diad_sigma=0.2, diad_sigma_min_allowance=0.2, diad_sigma_max_allowance=5, diad_prom=100, HB_prom=20, x_range_baseline=75, y_range_baseline=100, dpi=200, x_range_residual=20, return_other_params=False)
[11]:
help(pf.diad1_fit_config())
Help on diad1_fit_config in module DiadFit.diads object:
class diad1_fit_config(builtins.object)
| diad1_fit_config(model_name: str = 'PseudoVoigtModel', fit_peaks: int = 2, N_poly_bck_diad1: float = 1, lower_bck_diad1: Tuple[float, float] = (1180, 1220), upper_bck_diad1: Tuple[float, float] = (1300, 1350), fit_gauss: Optional[bool] = False, gauss_amp: Optional[float] = 1000, diad_sigma: float = 0.2, diad_sigma_min_allowance: float = 0.2, diad_sigma_max_allowance: float = 5, diad_prom: float = 100, HB_prom: float = 20, x_range_baseline: float = 75, y_range_baseline: float = 100, dpi: float = 200, x_range_residual: float = 20, return_other_params: bool = False) -> None
|
| Configuration class for fitting Diad 1
|
| This class stores configuration parameters for fitting Diad 1 and associated peaks.
| The class allows for easy customization of the fitting process.
|
| Attributes:
| model_name (str): Default 'PseudoVoigtModel'.
| Model name for peak fitting. Choose from
| 'PseudoVoigtModel', 'VoigtModel', 'GaussianModel', 'LorentzianModel', etc.
|
| fit_peaks (int): Default 2
| Number of peaks to fit. 2 = Diad + HB, 1 = Diad.
|
| N_poly_bck_diad1 (float): Default = 1
| Degree of polynomial for background subtraction. Default 1.
|
| lower_bck_diad1 (Tuple[float, float]):
| Lower boundary for background fitting in cm-1. Default (1180, 1220)
|
| upper_bck_diad1 (Tuple[float, float]):
| Upper boundary for background fitting in cm-1 Default (1300, 1350).
|
| fit_gauss (Optional[bool]): Default True
| Fit a Gaussian peak if True. Helpful for very elevated spectra
|
| gauss_amp (Optional[float]): Default = 1000
| Gaussian peak amplitude if `fit_gauss` is True. Default 1000.
| We find 2X HB intensity is a good guess on many instruments
|
| diad_sigma (float): Default = 0.2
| Sigma of diad peak.
|
| diad_sigma_min_allowance (float): Default = 0.2
| Tolerance on entered sigma. Means minimum allowed sigma is 0.2*sigma
|
| diad_sigma_max_allowance (float): Default = 5
| Tolerance on entered sigma. Means minimum allowed sigma is 5*sigma
|
|
| diad_prom (float): Default = 100
| Peak amplitude for of the diad. Suggest users obtain from the estimated peak parameter dataframe
|
| HB_prom (float): Default = 20
| Peak amplitude for HB. Suggest users obtain from the estimated peak parameter dataframe
|
| HB_sigma_min_allowance (float): Default = 0.05
| Means HB sigma cant be less than 0.05* sigma of first fitting peak (diad).
|
| HB_sigma_max_allowance (float): Default = 3:
| Means HB sigma cant exceed 3* sigma of first fitting peak (diad)
|
| HB_amp_min_allowance (float): Default =0.01
| Means HB amplitude cant be less than 0.01*amplitude of first fitted peak (diad).
|
| HB_amp_max_allowance (float): Default = 1
| Means HB amplitude cant be more than 1*amplitude of first fitted peak (diad).
|
| x_range_baseline (float): Default 75.
| Means that x axis of baseline shows diad position +- 75 x units.
|
| y_range_baseline (float): Y-axis range for baseline display. Default 100.
| Shows a y axis scale that is 100 y units above the minimum baseline value, and 100 units above the maximum value
|
| dpi (float): Default 200
| Figure resolution in dots per inch. Default 200.
|
| x_range_residual (float): Default 20.
| Shows x values +-20 either side of the diad peak position in the residual plot.
|
| return_other_params (bool): Return non-fitted parameters if True. Default False.
|
| Methods:
| update_par(**kwargs):
| Updates configuration parameters. Raises AttributeError for unknown attributes.
|
| Methods defined here:
|
| __eq__(self, other)
| Return self==value.
|
| __init__(self, model_name: str = 'PseudoVoigtModel', fit_peaks: int = 2, N_poly_bck_diad1: float = 1, lower_bck_diad1: Tuple[float, float] = (1180, 1220), upper_bck_diad1: Tuple[float, float] = (1300, 1350), fit_gauss: Optional[bool] = False, gauss_amp: Optional[float] = 1000, diad_sigma: float = 0.2, diad_sigma_min_allowance: float = 0.2, diad_sigma_max_allowance: float = 5, diad_prom: float = 100, HB_prom: float = 20, x_range_baseline: float = 75, y_range_baseline: float = 100, dpi: float = 200, x_range_residual: float = 20, return_other_params: bool = False) -> None
| Initialize self. See help(type(self)) for accurate signature.
|
| __repr__(self)
| Return repr(self).
|
| update_par(self, **kwargs)
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| HB_amp_max_allowance = 1
|
| HB_amp_min_allowance = 0.01
|
| HB_prom = 20
|
| HB_sigma_max_allowance = 3
|
| HB_sigma_min_allowance = 0.05
|
| N_poly_bck_diad1 = 1
|
| __annotations__ = {'HB_prom': <class 'float'>, 'N_poly_bck_diad1': <cl...
|
| __dataclass_fields__ = {'HB_prom': Field(name='HB_prom',type=<class 'f...
|
| __dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,or...
|
| __hash__ = None
|
| __match_args__ = ('model_name', 'fit_peaks', 'N_poly_bck_diad1', 'lowe...
|
| diad_prom = 100
|
| diad_sigma = 0.2
|
| diad_sigma_max_allowance = 5
|
| diad_sigma_min_allowance = 0.2
|
| dpi = 200
|
| fit_gauss = False
|
| fit_peaks = 2
|
| gauss_amp = 1000
|
| lower_bck_diad1 = (1180, 1220)
|
| model_name = 'PseudoVoigtModel'
|
| return_other_params = False
|
| upper_bck_diad1 = (1300, 1350)
|
| x_range_baseline = 75
|
| x_range_residual = 20
|
| y_range_baseline = 100
Fit Diad 1
Tweak the parameters in the config files for each group. E.g. how many peaks (fit_peaks), the background positions, the sigma of the diad, and whether or not you want a gaussian background
[7]:
diad_id_config=pf.diad_id_config(height=50, exclude_range1=[1308, 1309])
diad_id_config
if batch=='Weak':
diad1_fit_config_init=pf.diad1_fit_config(
model_name=model_name, fit_peaks=2,
N_poly_bck_diad1=2, lower_bck_diad1=(1180, 1250),
upper_bck_diad1=(1300, 1350),
diad_sigma=0.6,
x_range_residual=10, x_range_baseline=30,
y_range_baseline=100,
HB_prom=GroupN_df['HB1_abs_prom'].iloc[i],
diad_prom=GroupN_df['Diad1_abs_prom'].iloc[i])
diad1_fit_config_init
if batch=='Medium':
diad1_fit_config_init=pf.diad1_fit_config(
model_name=model_name, fit_peaks=2,
N_poly_bck_diad1=2, lower_bck_diad1=(1180, 1240),
upper_bck_diad1=(1315, 1350),
diad_sigma=0.6,
x_range_residual=10, x_range_baseline=30,
y_range_baseline=100,
HB_prom=GroupN_df['HB1_abs_prom'].iloc[i],
diad_prom=GroupN_df['Diad1_abs_prom'].iloc[i])
diad1_fit_config_init
if batch=='Strong':
diad1_fit_config_init=pf.diad1_fit_config(
fit_gauss=True, gauss_amp= 2*GroupN_df['HB1_abs_prom'].iloc[i],
model_name=model_name, fit_peaks=2,
N_poly_bck_diad1=1, lower_bck_diad1=(1180, 1220),
upper_bck_diad1=(1330, 1350),
diad_sigma=0.6,
x_range_residual=10, x_range_baseline=30,
y_range_baseline=1000,
HB_prom=GroupN_df['HB1_abs_prom'].iloc[i],
diad_prom=GroupN_df['Diad1_abs_prom'].iloc[i])
diad1_fit_config_init
[7]:
diad1_fit_config(model_name='PseudoVoigtModel', fit_peaks=2, N_poly_bck_diad1=1, lower_bck_diad1=(1180, 1220), upper_bck_diad1=(1330, 1350), fit_gauss=True, gauss_amp=389.97931848844496, diad_sigma=0.6, diad_sigma_min_allowance=0.2, diad_sigma_max_allowance=5, diad_prom=2012.4019389914029, HB_prom=194.98965924422248, x_range_baseline=30, y_range_baseline=1000, dpi=200, x_range_residual=10, return_other_params=False)
See what these fit parameters look like for diad1
[8]:
Diad1_fit=pf.fit_diad_1_w_bck(config1=diad1_fit_config_init,
config2=diad_id_config,
path=spectra_path, filename=Diad_Files.iloc[0],
filetype=spectra_filetype, plot_figure=True, close_figure=False,
Diad_pos=GroupN_df['Diad1_pos'].iloc[i],
HB_pos=GroupN_df['HB1_pos'].iloc[i])
Diad1_fit
[8]:
| Diad1_Combofit_Cent | Diad1_Voigt_Cent | Diad1_cent_err | Diad1_Voigt_Area | Diad1_Voigt_Sigma | Diad1_Voigt_Gamma | HB1_Cent | HB1_Area | HB1_Sigma | Diad1_Combofit_Height | ... | Diad1_fwhm | Diad1_Gauss_Cent | Diad1_Gauss_Area | Diad1_Gauss_Sigma | Diad1_refit | Diad1_Asym50 | Diad1_Asym70 | Diad1_Yuan2017_sym_factor | Diad1_Remigi2021_BSF | Diad1_PDF_Model | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1284.782189 | 1284.782339 | 0.002067 | 5982.664618 | 1.184251 | 0 | 1264.770311 | 883.052844 | 1.654391 | 2016.844611 | ... | 2.368502 | 1277.806979 | 699.337252 | 23.869756 | Flagged Warnings: | 1.039244 | 1.067524 | 0.09295 | 0.001174 | PseudoVoigtModel |
1 rows × 22 columns
Update the sigma
The sigma parameter varies quite a lot based on the splitting. Best to update your first guess with what you found for the example file above
[9]:
diad1_fit_config2=diad1_fit_config_init
Fit diad2
[10]:
if batch=='Weak':
diad2_fit_config_init=pf.diad2_fit_config(model_name=model_name,
fit_peaks=2, upper_bck_diad2=(1430, 1480),
lower_bck_diad2=(1310, 1360), diad_sigma=0.4, N_poly_bck_diad2=1,
x_range_residual=30, y_range_baseline=100,
x_range_baseline=30,
HB_prom=GroupN_df['HB2_abs_prom'].iloc[i],
diad_prom=GroupN_df['Diad2_abs_prom'].iloc[i])
diad2_fit_config_init
if batch=='Medium':
diad2_fit_config_init=pf.diad2_fit_config(model_name=model_name,
fit_peaks=3, fit_gauss=True, gauss_amp= 2*GroupN_df['HB2_abs_prom'].iloc[i],
lower_bck_diad2=(1310, 1350), diad_sigma=1, N_poly_bck_diad2=2,
x_range_residual=30, y_range_baseline=100,
x_range_baseline=30,
HB_prom=GroupN_df['HB2_abs_prom'].iloc[i],
diad_prom=GroupN_df['Diad2_abs_prom'].iloc[i],
C13_prom=GroupN_df['C13_abs_prom'].iloc[i])
diad2_fit_config_init
if batch=='Strong':
diad2_fit_config_init=pf.diad2_fit_config(model_name=model_name,
fit_peaks=3, fit_gauss=True, gauss_amp= 2*GroupN_df['HB2_abs_prom'].iloc[i],
lower_bck_diad2=(1310, 1340), diad_sigma=1, N_poly_bck_diad2=2,
x_range_residual=30, y_range_baseline=1000,
x_range_baseline=30,
HB_prom=GroupN_df['HB2_abs_prom'].iloc[i],
diad_prom=GroupN_df['Diad2_abs_prom'].iloc[i],
C13_prom=GroupN_df['C13_abs_prom'].iloc[i])
diad2_fit_config_init
diad2_fit_config_init
[10]:
diad2_fit_config(model_name='PseudoVoigtModel', fit_peaks=3, N_poly_bck_diad2=2, lower_bck_diad2=(1310, 1340), upper_bck_diad2=(1440, 1470), fit_gauss=True, gauss_amp=725.2013981447026, diad_sigma=1, diad_sigma_min_allowance=0.2, diad_sigma_max_allowance=5, diad_prom=4046.9334876922258, HB_prom=362.6006990723513, x_range_baseline=30, y_range_baseline=1000, plot_figure=True, dpi=200, x_range_residual=30, return_other_params=False, C13_prom=65.32714727758116)
See what these fit parameters look like for diad2
[11]:
Diad2_fit=pf.fit_diad_2_w_bck(config1=diad2_fit_config_init,
config2=diad_id_config,
path=spectra_path, filename=Diad_Files[i], filetype=spectra_filetype,
plot_figure=True, close_figure=False,
Diad_pos=GroupN_df['Diad2_pos'].iloc[i],
HB_pos=GroupN_df['HB2_pos'].iloc[i],
C13_pos=GroupN_df['C13_pos'].iloc[i])
Diad2_fit.to_clipboard(excel=True)
Diad2_fit
[11]:
| Diad2_Combofit_Cent | Diad2_Voigt_Cent | Diad2_cent_err | Diad2_Voigt_Area | Diad2_Voigt_Sigma | Diad2_Voigt_Gamma | HB2_Cent | HB2_Area | HB2_Sigma | C13_Cent | ... | Diad2_fwhm | Diad2_Gauss_Cent | Diad2_Gauss_Area | Diad2_Gauss_Sigma | Diad2_refit | Diad2_Asym50 | Diad2_Asym70 | Diad2_Yuan2017_sym_factor | Diad2_Remigi2021_BSF | Diad2_PDF_Model | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1388.284861 | 1388.284811 | 0.001369 | 9768.420394 | 0.918253 | 0 | 1409.684413 | 1298.423776 | 1.309328 | 1370.209842 | ... | 1.836506 | 1388.869255 | 643.840872 | 22.872435 | Flagged Warnings: | 1.027829 | 1.036486 | 0.051109 | 0.000449 | PseudoVoigtModel |
1 rows × 25 columns
Loop over all the files in the group
This will loop over all the
[12]:
from tqdm import tqdm
plot_figure=True# If False, Means doesnt have to make figures, lot faster.
close_figure=False # If True, wont show figures in notebook, but will still save them in a folder
Diad_Files_i=Diad_Files
df_Merge = pd.DataFrame([])
for i in tqdm(range(0, len(Diad_Files))): #
tqdm.write(f"Processing file: {Diad_Files[i]}")
# For diad1, config file like you had in the previous.
# Only really used to exclude a range (say your spectra has a known spec)
diad_id_config=pf.diad_id_config(exclude_range1=[1308, 1309])
# Here, the prominence are taken from the fitting in the last notebook
diad1_fit_config2.HB_prom=GroupN_df['HB1_abs_prom'].iloc[i]
diad1_fit_config2.diad_prom=GroupN_df['Diad1_abs_prom'].iloc[i]
diad1_fit_config2.gauss_amp=2*GroupN_df['HB1_abs_prom'].iloc[i]
Diad1_fit=pf.fit_diad_1_w_bck(config1=diad1_fit_config2,
config2=diad_id_config, path=spectra_path, filename=GroupN_df['filename'].iloc[i],
filetype=spectra_filetype, plot_figure=plot_figure, close_figure=close_figure,
Diad_pos=GroupN_df['Diad1_pos'].iloc[i],
HB_pos=GroupN_df['HB1_pos'].iloc[i])
## Same for diad2, just also has a C13 peak
diad2_fit_config_init.HB_prom=GroupN_df['HB2_abs_prom'].iloc[i]
diad2_fit_config_init.diad_prom=GroupN_df['Diad2_abs_prom'].iloc[i]
diad2_fit_config_init.gauss_amp= 2*GroupN_df['HB2_abs_prom'].iloc[i]
diad2_fit_config_init.C13_prom=GroupN_df['C13_abs_prom'].iloc[i]
Diad2_fit=pf.fit_diad_2_w_bck(config1=diad2_fit_config_init,
config2=diad_id_config,
path=spectra_path, filename=GroupN_df['filename'].iloc[i],
filetype=spectra_filetype,
plot_figure=plot_figure, close_figure=close_figure,
Diad_pos=GroupN_df['Diad2_pos'].iloc[i],
HB_pos=GroupN_df['HB2_pos'].iloc[i],
C13_pos=GroupN_df['C13_pos'].iloc[i])
# This combines the outputs into a single dataframe
data=pf.combine_diad_outputs(filename=GroupN_df['filename'].iloc[i], prefix=prefix,
Diad1_fit=Diad1_fit, path=spectra_path,
Diad2_fit=Diad2_fit)
df_Merge = pd.concat([df_Merge, data], axis=0).reset_index(drop=True)
0%| | 0/40 [00:00<?, ?it/s]
Processing file: FG04_31_MI3 (1)_CRR_DiadFit.txt
2%|▎ | 1/40 [00:03<02:32, 3.91s/it]
Processing file: FG04_31_MI4 (1).txt
5%|▌ | 2/40 [00:07<02:18, 3.63s/it]
Processing file: POC1.txt
8%|▊ | 3/40 [00:11<02:15, 3.65s/it]
Processing file: POC10.txt
10%|█ | 4/40 [00:14<02:09, 3.60s/it]
Processing file: POC11.txt
12%|█▎ | 5/40 [00:18<02:13, 3.82s/it]
Processing file: POC12_CRR_DiadFit.txt
15%|█▌ | 6/40 [00:21<02:03, 3.62s/it]
Processing file: POC13.txt
18%|█▊ | 7/40 [00:25<01:59, 3.63s/it]
Processing file: POC14.txt
20%|██ | 8/40 [00:29<02:02, 3.82s/it]
Processing file: POC15.txt
22%|██▎ | 9/40 [00:32<01:47, 3.48s/it]
Processing file: POC16.txt
25%|██▌ | 10/40 [00:35<01:41, 3.38s/it]
Processing file: POC17.txt
c:\users\penny\box\berkeley_new\diadfit_outer\src\DiadFit\diads.py:3043: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_open_warning`). Consider using `matplotlib.pyplot.close()`.
fig,axes=plt.subplot_mosaic(mosaic=figure_mosaic, figsize=(12, 16))
28%|██▊ | 11/40 [00:38<01:31, 3.16s/it]
Processing file: POC18.txt
refit attempt 1
30%|███ | 12/40 [00:41<01:28, 3.15s/it]
Processing file: POC19.txt
32%|███▎ | 13/40 [00:44<01:22, 3.06s/it]
Processing file: POC2.txt
35%|███▌ | 14/40 [00:48<01:24, 3.24s/it]
Processing file: POC20.txt
38%|███▊ | 15/40 [00:51<01:19, 3.17s/it]
Processing file: POC21.txt
40%|████ | 16/40 [00:53<01:14, 3.09s/it]
Processing file: POC22_CRR_DiadFit.txt
42%|████▎ | 17/40 [00:56<01:10, 3.07s/it]
Processing file: POC23.txt
45%|████▌ | 18/40 [00:59<01:06, 3.01s/it]
Processing file: POC24.txt
48%|████▊ | 19/40 [01:03<01:04, 3.07s/it]
Processing file: POC25_CRR_DiadFit.txt
50%|█████ | 20/40 [01:06<01:02, 3.13s/it]
Processing file: POC26.txt
52%|█████▎ | 21/40 [01:09<00:58, 3.06s/it]
Processing file: POC27_CRR_DiadFit.txt
55%|█████▌ | 22/40 [01:12<00:57, 3.19s/it]
Processing file: POC28.txt
57%|█████▊ | 23/40 [01:15<00:52, 3.08s/it]
Processing file: POC29.txt
60%|██████ | 24/40 [01:19<00:52, 3.30s/it]
Processing file: POC3.txt
62%|██████▎ | 25/40 [01:22<00:49, 3.29s/it]
Processing file: POC30.txt
65%|██████▌ | 26/40 [01:25<00:44, 3.20s/it]
Processing file: POC31.txt
68%|██████▊ | 27/40 [01:35<01:06, 5.08s/it]
Processing file: POC32.txt
70%|███████ | 28/40 [01:38<00:55, 4.61s/it]
Processing file: POC33.txt
72%|███████▎ | 29/40 [01:42<00:48, 4.44s/it]
Processing file: POC34.txt
75%|███████▌ | 30/40 [01:49<00:51, 5.14s/it]
Processing file: POC35.txt
78%|███████▊ | 31/40 [01:53<00:43, 4.87s/it]
Processing file: POC36_CRR_DiadFit.txt
80%|████████ | 32/40 [01:57<00:36, 4.58s/it]
Processing file: POC37.txt
82%|████████▎ | 33/40 [02:00<00:27, 3.98s/it]
Processing file: POC38_CRR_DiadFit.txt
85%|████████▌ | 34/40 [02:04<00:24, 4.05s/it]
Processing file: POC4_CRR_DiadFit.txt
88%|████████▊ | 35/40 [02:06<00:18, 3.63s/it]
Processing file: POC5.txt
90%|█████████ | 36/40 [02:09<00:13, 3.29s/it]
Processing file: POC6_CRR_DiadFit.txt
92%|█████████▎| 37/40 [02:12<00:09, 3.08s/it]
Processing file: POC7_CRR_DiadFit.txt
95%|█████████▌| 38/40 [02:14<00:05, 2.95s/it]
Processing file: POC8.txt
98%|█████████▊| 39/40 [02:17<00:02, 2.96s/it]
Processing file: POC9.txt
100%|██████████| 40/40 [02:21<00:00, 3.53s/it]
[13]:
# Save parameters to excel
combo=df_Merge
if batch=='Weak':
combo.to_excel('Weak_Diads.xlsx', index=False)
if batch=='Medium':
combo.to_excel('Medium_Diads.xlsx', index=False)
if batch=='Strong':
combo.to_excel('Strong_Diads.xlsx', index=False)
[14]:
combo
[14]:
| filename | Splitting | Split_σ | Diad1_Combofit_Cent | Diad1_cent_err | Diad1_Combofit_Height | Diad1_Voigt_Cent | Diad1_Voigt_Area | Diad1_Voigt_Sigma | Diad1_Residual | ... | Diad1_Asym50 | Diad1_Asym70 | Diad1_Yuan2017_sym_factor | Diad1_Remigi2021_BSF | Diad2_Asym50 | Diad2_Asym70 | Diad2_Yuan2017_sym_factor | Diad2_Remigi2021_BSF | Diad1_PDF_Model | Diad2_PDF_Model | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | FG04_31_MI3 (1)_CRR_DiadFit | 103.502472 | 0.002479 | 1284.782189 | 0.002067 | 2016.844611 | 1284.782339 | 5982.664618 | 1.184251 | 3.979666 | ... | 1.039244 | 1.067524 | 0.092950 | 0.001174 | 1.027829 | 1.036486 | 0.051109 | 0.000449 | PseudoVoigtModel | PseudoVoigtModel |
| 1 | FG04_31_MI4 (1) | 103.709921 | 0.002716 | 1284.338717 | 0.002301 | 921.578580 | 1284.338767 | 2757.717719 | 1.149527 | 1.973458 | ... | 1.000000 | 1.057359 | 0.000000 | 0.002495 | 1.007407 | 1.006667 | 0.013552 | 0.000986 | PseudoVoigtModel | PseudoVoigtModel |
| 2 | POC1 | 104.947850 | 0.001623 | 1281.782853 | 0.001405 | 19925.591779 | 1281.782803 | 59223.825265 | 1.072208 | 22.259595 | ... | 1.065916 | 1.079096 | 0.141352 | 0.000108 | 1.038017 | 1.036952 | 0.078457 | 0.000054 | PseudoVoigtModel | PseudoVoigtModel |
| 3 | POC10 | 104.306739 | 0.001693 | 1283.013429 | 0.001510 | 3840.009480 | 1283.013379 | 11741.225881 | 1.134571 | 5.057416 | ... | 1.008929 | 1.032051 | 0.020260 | 0.000591 | 1.042179 | 1.027295 | 0.082247 | 0.000255 | PseudoVoigtModel | PseudoVoigtModel |
| 4 | POC11 | 104.250666 | 0.001991 | 1283.138753 | 0.001831 | 3180.585088 | 1283.138803 | 9823.987216 | 1.167960 | 4.487365 | ... | 1.024818 | 1.050847 | 0.057972 | 0.000734 | 1.042857 | 1.036432 | 0.082636 | 0.000298 | PseudoVoigtModel | PseudoVoigtModel |
| 5 | POC12_CRR_DiadFit | 104.163684 | 0.001728 | 1283.321213 | 0.001539 | 4283.682570 | 1283.321263 | 13368.448742 | 1.188387 | 5.068715 | ... | 1.056851 | 1.060797 | 0.135123 | 0.000555 | 1.007018 | 1.009950 | 0.013583 | 0.000222 | PseudoVoigtModel | PseudoVoigtModel |
| 6 | POC13 | 104.134046 | 0.001671 | 1283.384610 | 0.001466 | 4011.284262 | 1283.384660 | 12619.856036 | 1.197456 | 4.509645 | ... | 1.028571 | 1.040165 | 0.068426 | 0.000597 | 1.007005 | 1.001236 | 0.013592 | 0.000235 | PseudoVoigtModel | PseudoVoigtModel |
| 7 | POC14 | 104.108371 | 0.001674 | 1283.442762 | 0.001422 | 3719.983549 | 1283.442812 | 11830.425690 | 1.211482 | 4.361908 | ... | 1.025388 | 1.032454 | 0.061514 | 0.000651 | 1.017668 | 1.015000 | 0.034166 | 0.000251 | PseudoVoigtModel | PseudoVoigtModel |
| 8 | POC15 | 104.068362 | 0.001568 | 1283.528756 | 0.001306 | 3486.272395 | 1283.528806 | 11077.108501 | 1.212768 | 3.822150 | ... | 1.005563 | 1.012072 | 0.013494 | 0.000696 | 1.021164 | 1.015056 | 0.040943 | 0.000270 | PseudoVoigtModel | PseudoVoigtModel |
| 9 | POC16 | 104.026014 | 0.001623 | 1283.620048 | 0.001325 | 3195.985921 | 1283.620098 | 10144.318897 | 1.227720 | 3.585005 | ... | 1.012414 | 1.031219 | 0.030481 | 0.000768 | 1.019332 | 1.020075 | 0.037489 | 0.000294 | PseudoVoigtModel | PseudoVoigtModel |
| 10 | POC17 | 103.960947 | 0.001381 | 1283.770160 | 0.001008 | 2937.201668 | 1283.770310 | 9334.043500 | 1.237341 | 2.848954 | ... | 1.004104 | 1.017875 | 0.010156 | 0.000843 | 1.040780 | 1.015038 | 0.078930 | 0.000319 | PseudoVoigtModel | PseudoVoigtModel |
| 11 | POC18 | 103.872386 | 0.001882 | 1283.955808 | 0.001223 | 2387.793630 | 1283.955958 | 7618.822138 | 1.245498 | 2.784166 | ... | 1.006784 | 1.006897 | 0.016900 | 0.001043 | 1.021201 | 1.031888 | 0.040824 | 0.000389 | PseudoVoigtModel | PseudoVoigtModel |
| 12 | POC19 | 103.765421 | 0.002126 | 1284.202602 | 0.001699 | 2091.485624 | 1284.202752 | 6544.093516 | 1.232451 | 3.070874 | ... | 1.034819 | 1.072091 | 0.085825 | 0.001179 | 1.041818 | 1.055191 | 0.079338 | 0.000442 | PseudoVoigtModel | PseudoVoigtModel |
| 13 | POC2 | 104.886810 | 0.001714 | 1281.888984 | 0.001501 | 30344.970353 | 1281.888934 | 89788.656402 | 1.071560 | 33.728716 | ... | 1.067633 | 1.075964 | 0.144945 | 0.000071 | 1.031405 | 1.024194 | 0.064466 | 0.000035 | PseudoVoigtModel | PseudoVoigtModel |
| 14 | POC20 | 103.668664 | 0.002511 | 1284.419204 | 0.002130 | 1863.782164 | 1284.419354 | 5683.627843 | 1.207406 | 3.084998 | ... | 1.045714 | 1.079533 | 0.110391 | 0.001296 | 1.012821 | 1.029372 | 0.023783 | 0.000485 | PseudoVoigtModel | PseudoVoigtModel |
| 15 | POC21 | 103.600199 | 0.002697 | 1284.568851 | 0.002304 | 2587.344613 | 1284.568901 | 7713.756556 | 1.159981 | 4.823699 | ... | 1.110940 | 1.121924 | 0.257376 | 0.000897 | 1.015038 | 1.032653 | 0.027257 | 0.000346 | PseudoVoigtModel | PseudoVoigtModel |
| 16 | POC22_CRR_DiadFit | 103.546489 | 0.002895 | 1284.689886 | 0.002565 | 2484.130468 | 1284.689936 | 7246.245263 | 1.124015 | 4.917034 | ... | 1.132686 | 1.140209 | 0.298282 | 0.000905 | 1.034749 | 1.000000 | 0.061653 | 0.000360 | PseudoVoigtModel | PseudoVoigtModel |
| 17 | POC23 | 103.503635 | 0.002845 | 1284.813735 | 0.002449 | 2387.182877 | 1284.813785 | 6757.475099 | 1.106078 | 4.692765 | ... | 1.082935 | 1.111111 | 0.183464 | 0.000927 | 1.060362 | 1.069264 | 0.104385 | 0.000362 | PseudoVoigtModel | PseudoVoigtModel |
| 18 | POC24 | 103.454897 | 0.002833 | 1284.906053 | 0.002501 | 2317.026981 | 1284.906103 | 6407.341963 | 1.069239 | 4.411993 | ... | 1.070608 | 1.112048 | 0.150993 | 0.000923 | 1.084711 | 1.083210 | 0.143743 | 0.000372 | PseudoVoigtModel | PseudoVoigtModel |
| 19 | POC25_CRR_DiadFit | 103.426374 | 0.002773 | 1284.979648 | 0.002521 | 2301.219526 | 1284.979698 | 6257.279948 | 1.035971 | 4.747613 | ... | 1.135325 | 1.123916 | 0.280386 | 0.000900 | 1.066390 | 1.070359 | 0.111218 | 0.000378 | PseudoVoigtModel | PseudoVoigtModel |
| 20 | POC26 | 103.393479 | 0.002511 | 1285.059602 | 0.002220 | 2320.017476 | 1285.059652 | 6080.008489 | 1.000954 | 4.421418 | ... | 1.011966 | 1.049383 | 0.023954 | 0.000863 | 1.077419 | 1.072981 | 0.125847 | 0.000366 | PseudoVoigtModel | PseudoVoigtModel |
| 21 | POC27_CRR_DiadFit | 103.365434 | 0.002366 | 1285.121613 | 0.002090 | 2577.806619 | 1285.121663 | 6621.858082 | 0.988491 | 4.753405 | ... | 1.060284 | 1.104113 | 0.119180 | 0.000767 | 1.057692 | 1.044479 | 0.093601 | 0.000332 | PseudoVoigtModel | PseudoVoigtModel |
| 22 | POC28 | 103.270686 | 0.001829 | 1285.368063 | 0.001574 | 2444.681952 | 1285.368113 | 5773.580538 | 0.910061 | 4.014705 | ... | 1.011299 | 1.025780 | 0.020566 | 0.000745 | 1.045351 | 1.024430 | 0.069049 | 0.000336 | PseudoVoigtModel | PseudoVoigtModel |
| 23 | POC29 | 103.190268 | 0.001494 | 1285.554143 | 0.001283 | 2256.800502 | 1285.554193 | 4968.824706 | 0.845253 | 3.407826 | ... | 1.044898 | 1.034985 | 0.075900 | 0.000749 | 1.092857 | 1.063465 | 0.136562 | 0.000361 | PseudoVoigtModel | PseudoVoigtModel |
| 24 | POC3 | 104.801882 | 0.001827 | 1282.036832 | 0.001589 | 29839.526821 | 1282.036782 | 87994.285376 | 1.073462 | 33.336902 | ... | 1.043131 | 1.064407 | 0.092599 | 0.000072 | 1.021595 | 1.018626 | 0.044112 | 0.000036 | PseudoVoigtModel | PseudoVoigtModel |
| 25 | POC30 | 103.125164 | 0.001654 | 1285.703731 | 0.001445 | 2055.784417 | 1285.703781 | 4352.842354 | 0.821308 | 3.479910 | ... | 1.012422 | 1.010417 | 0.020405 | 0.000799 | 1.055156 | 1.049209 | 0.078436 | 0.000383 | PseudoVoigtModel | PseudoVoigtModel |
| 26 | POC31 | 103.019135 | 0.001365 | 1285.956350 | 0.001078 | 7071.224125 | 1285.956400 | 13617.097091 | 0.765541 | 9.286781 | ... | 1.042601 | 1.027915 | 0.065225 | 0.000217 | 1.068354 | 1.010949 | 0.092907 | 0.000112 | PseudoVoigtModel | PseudoVoigtModel |
| 27 | POC32 | 102.977847 | 0.001256 | 1286.056103 | 0.000924 | 6188.094846 | 1286.056153 | 11430.269425 | 0.737142 | 7.689319 | ... | 1.092417 | 1.060241 | 0.136249 | 0.000238 | 1.058974 | 1.007394 | 0.079299 | 0.000131 | PseudoVoigtModel | PseudoVoigtModel |
| 28 | POC33 | 102.951717 | 0.001440 | 1286.136954 | 0.001192 | 4879.161880 | 1286.137004 | 8734.104721 | 0.712193 | 7.546190 | ... | 1.095122 | 1.086176 | 0.135490 | 0.000292 | 1.020672 | 1.009470 | 0.027178 | 0.000167 | PseudoVoigtModel | PseudoVoigtModel |
| 29 | POC34 | 102.920106 | 0.001684 | 1286.225673 | 0.001446 | 4276.058736 | 1286.225723 | 7352.611709 | 0.690037 | 6.795773 | ... | 1.012048 | 1.056881 | 0.016627 | 0.000323 | 1.044855 | 1.046875 | 0.058376 | 0.000192 | PseudoVoigtModel | PseudoVoigtModel |
| 30 | POC35 | 102.885431 | 0.001537 | 1286.308005 | 0.001290 | 3727.492333 | 1286.308055 | 6269.736435 | 0.689871 | 5.619348 | ... | 1.054591 | 1.003610 | 0.075321 | 0.000370 | 1.102778 | 1.083333 | 0.130488 | 0.000215 | PseudoVoigtModel | PseudoVoigtModel |
| 31 | POC36_CRR_DiadFit | 102.859020 | 0.001789 | 1286.380076 | 0.001528 | 3191.836340 | 1286.380126 | 5161.459686 | 0.668969 | 5.578143 | ... | 1.046272 | 1.013109 | 0.061910 | 0.000419 | 1.146132 | 1.117895 | 0.181745 | 0.000252 | PseudoVoigtModel | PseudoVoigtModel |
| 32 | POC37 | 102.833816 | 0.001848 | 1286.448206 | 0.001572 | 2445.847989 | 1286.448256 | 3865.896545 | 0.659176 | 4.559198 | ... | 1.015464 | 1.048263 | 0.020387 | 0.000539 | 1.147399 | 1.118280 | 0.180012 | 0.000317 | PseudoVoigtModel | PseudoVoigtModel |
| 33 | POC38_CRR_DiadFit | 102.811086 | 0.001826 | 1286.490978 | 0.001487 | 2228.415225 | 1286.491028 | 3461.089986 | 0.652244 | 4.211697 | ... | 1.066667 | 1.073123 | 0.086966 | 0.000585 | 1.156522 | 1.130152 | 0.191143 | 0.000354 | PseudoVoigtModel | PseudoVoigtModel |
| 34 | POC4_CRR_DiadFit | 104.700380 | 0.001778 | 1282.221577 | 0.001522 | 28888.886632 | 1282.221527 | 85184.460616 | 1.076145 | 31.224568 | ... | 1.084416 | 1.090805 | 0.181687 | 0.000075 | 1.006689 | 1.005875 | 0.013525 | 0.000036 | PseudoVoigtModel | PseudoVoigtModel |
| 35 | POC5 | 104.649296 | 0.001811 | 1282.314885 | 0.001570 | 28671.259913 | 1282.314835 | 84679.189248 | 1.082499 | 32.419070 | ... | 1.088710 | 1.098737 | 0.192056 | 0.000076 | 1.005051 | 1.011891 | 0.010140 | 0.000036 | PseudoVoigtModel | PseudoVoigtModel |
| 36 | POC6_CRR_DiadFit | 104.592860 | 0.001763 | 1282.422510 | 0.001541 | 27808.764604 | 1282.422460 | 82328.209890 | 1.086695 | 31.608976 | ... | 1.056962 | 1.073529 | 0.123801 | 0.000078 | 1.017065 | 1.020408 | 0.034060 | 0.000037 | PseudoVoigtModel | PseudoVoigtModel |
| 37 | POC7_CRR_DiadFit | 104.528260 | 0.001712 | 1282.556685 | 0.001530 | 26093.962788 | 1282.556635 | 77628.515656 | 1.096552 | 29.296719 | ... | 1.020124 | 1.053452 | 0.044134 | 0.000084 | 1.022260 | 1.026602 | 0.044163 | 0.000039 | PseudoVoigtModel | PseudoVoigtModel |
| 38 | POC8 | 104.441857 | 0.001730 | 1282.731033 | 0.001595 | 14917.985173 | 1282.730983 | 44962.549060 | 1.107162 | 17.610195 | ... | 1.048438 | 1.077951 | 0.107256 | 0.000148 | 1.019031 | 1.017073 | 0.037301 | 0.000067 | PseudoVoigtModel | PseudoVoigtModel |
| 39 | POC9 | 104.384433 | 0.001749 | 1282.850166 | 0.001591 | 3950.445881 | 1282.850016 | 11926.196588 | 1.107729 | 5.287474 | ... | 1.019969 | 1.058178 | 0.044241 | 0.000561 | 1.013793 | 1.017094 | 0.027031 | 0.000253 | PseudoVoigtModel | PseudoVoigtModel |
40 rows × 49 columns
This plays a sound - if you have a tendency to procrastinate while notebooks are running
[15]:
# !pip install winotify
from winotify import Notification, audio
toast= Notification(app_id="VSCode",title="Notebook completed",
msg="Step3b_Secondary_Peaks is done! - Now fit other groups",
duration="short")
toast.set_audio(audio.Mail,loop=False)
toast.show()
[ ]: