This page was generated from docs/Examples/Fitting_Fermi_Diads/Example1c_HORIBA_Calibration/Step3_FitAll_Together.ipynb. Interactive online version: Binder badge.

Python Notebook Download

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

[1]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import joblib
import DiadFit as pf
pf.__version__
[1]:
'1.0.19'

Specifying filetype, and folder as before

[2]:
# 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.

[3]:
## load dataframes and numpy arrays
np_x = joblib.load('np_x.sav')

# Select the group you want to fit ('Weak', 'Medium', 'Strong'). After selecting one, go through and select another one and run again from here.
batch='Medium' # 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

[4]:
Diad_Files =GroupN_df['filename']
i=0

Lets plot the diad to have a look at it

[5]:
plot1=pf.plot_diad(path=spectra_path, filename=Diad_Files[i], filetype=spectra_filetype)
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_9_0.png

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

[6]:
model_name='PseudoVoigtModel'

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=1,
    N_poly_bck_diad1=2, lower_bck_diad1=(1250, 1275),
    upper_bck_diad1=(1300, 1350),
    diad_sigma=1.1,
    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


if batch=='Medium':
    diad1_fit_config_init=pf.diad1_fit_config(
    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=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=False, gauss_amp=1000, diad_sigma=0.6, diad_sigma_min_allowance=0.2, diad_sigma_max_allowance=5, diad_prom=5486.6404798749, HB_prom=463.8575387194586, x_range_baseline=30, y_range_baseline=100, 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
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
Fityk-style Weighted RedChi: 1.3768
Error: 0.01853
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 1.3768478172853087
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
[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_Residual Diad1_Prop_Lor Diad1_fwhm Diad1_refit Diad1_Asym50 Diad1_Asym70 Diad1_Yuan2017_sym_factor Diad1_Remigi2021_BSF Diad1_PDF_Model
0 1285.527123 1285.527273 0.018527 16313.787676 1.108289 0 1265.419627 3360.925389 3.308801 5619.914259 34.965602 0.584543 2.216578 Flagged Warnings: 1.123664 1.162602 0.274111 0.000394 PseudoVoigtModel
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_16_4.png

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=1, upper_bck_diad2=(1394, 1399),
    lower_bck_diad2=(1370, 1384), diad_sigma=1,  N_poly_bck_diad2=1,
    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])
    diad2_fit_config_init

if batch=='Medium':
    diad2_fit_config_init=pf.diad2_fit_config(model_name=model_name,
    fit_peaks=2,
    lower_bck_diad2=(1310, 1340), diad_sigma=1,  N_poly_bck_diad2=1,
    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

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=2, N_poly_bck_diad2=1, lower_bck_diad2=(1310, 1340), upper_bck_diad2=(1440, 1470), fit_gauss=False, gauss_amp=1000, diad_sigma=1, diad_sigma_min_allowance=0.2, diad_sigma_max_allowance=5, diad_prom=9224.272171674049, HB_prom=746.9267532430453, C13_prom=99.33880539027678, x_range_baseline=30, y_range_baseline=1000, plot_figure=True, dpi=200, x_range_residual=30, return_other_params=False)

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
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
Fityk-style Weighted RedChi: 4.5358
Error: 0.06310
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 4.535800081424485
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
[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 Diad2_Combofit_Height Diad2_Residual Diad2_Prop_Lor Diad2_fwhm Diad2_refit Diad2_Asym50 Diad2_Asym70 Diad2_Yuan2017_sym_factor Diad2_Remigi2021_BSF Diad2_PDF_Model
0 1388.367133 1388.367083 0.063099 27900.947472 0.71464 0 1409.825158 2758.629639 1.205366 12530.625826 65.338726 0.982931 1.429281 Flagged Warnings: 1.207297 1.309585 0.296285 0.000114 PseudoVoigtModel
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_22_4.png

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/13 [00:00<?, ?it/s]c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
Processing file: 10mol_FID_R1_CRR_DiadFit.txt
Fityk-style Weighted RedChi: 1.3768
Error: 0.01853
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 1.3768478172853087
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
Fityk-style Weighted RedChi: 4.5358
Error: 0.06310
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 4.535800081424485
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
  8%|▊         | 1/13 [00:03<00:39,  3.32s/it]
Processing file: 10mol_FID_R1_FIN_CRR_DiadFit.txt
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
Fityk-style Weighted RedChi: 0.8078
Error: 0.01412
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 0.8077958768458289
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
Fityk-style Weighted RedChi: 1.6284
Error: 0.02105
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 1.6284146292988977
 15%|█▌        | 2/13 [00:06<00:35,  3.21s/it]
Processing file: 10mol_FID_R2_CRR_DiadFit.txt
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
Fityk-style Weighted RedChi: 0.6972
Error: 0.01552
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 0.6971628558675077
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
Fityk-style Weighted RedChi: 1.3623
Error: 0.01744
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 1.3623296920617218
 23%|██▎       | 3/13 [00:10<00:34,  3.40s/it]
Processing file: 10mol_FID_R2_FIN_CRR_DiadFit.txt
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
Fityk-style Weighted RedChi: 1.1611
Error: 0.01740
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 1.1610790710047554
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
Fityk-style Weighted RedChi: 1.5167
Error: 0.01618
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 1.5166721014540279
 31%|███       | 4/13 [00:13<00:30,  3.34s/it]
Processing file: 10mol_FID_R3_CRR_DiadFit.txt
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
Fityk-style Weighted RedChi: 0.7892
Error: 0.03182
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 0.7892325925605297
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
Fityk-style Weighted RedChi: 0.4181
Error: 0.02100
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 0.41814004181219566
 38%|███▊      | 5/13 [00:16<00:25,  3.18s/it]
Processing file: 10mol_FID_R3_FIN_CRR_DiadFit.txt
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
Fityk-style Weighted RedChi: 1.0993
Error: 0.02456
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 1.099296608174778
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
Fityk-style Weighted RedChi: 0.7016
Error: 0.01955
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 0.7015830854088254
 46%|████▌     | 6/13 [00:19<00:21,  3.13s/it]
Processing file: 10mol_FIE_R1_CRR_DiadFit.txt
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
Fityk-style Weighted RedChi: 1.3466
Error: 0.01940
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 1.3465893506508637
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
Fityk-style Weighted RedChi: 6.2327
Error: 0.08461
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 6.232731099055997
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
 54%|█████▍    | 7/13 [00:23<00:20,  3.35s/it]
Processing file: 10mol_FIE_R1_FIN_CRR_DiadFit.txt
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
Fityk-style Weighted RedChi: 1.3694
Error: 0.01726
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 1.3694494171898683
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
Fityk-style Weighted RedChi: 3.9763
Error: 0.02342
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 3.976276888173818
 62%|██████▏   | 8/13 [00:26<00:16,  3.37s/it]
Processing file: 10mol_FIE_R2_CRR_DiadFit.txt
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
Fityk-style Weighted RedChi: 1.2413
Error: 0.03216
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 1.241324996841779
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
Fityk-style Weighted RedChi: 1.2611
Error: 0.02592
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 1.2610713962217595
 69%|██████▉   | 9/13 [00:29<00:13,  3.30s/it]
Processing file: 10mol_FIE_R2_FIN_CRR_DiadFit.txt
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
Fityk-style Weighted RedChi: 1.4847
Error: 0.01748
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 1.4846696374437511
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
Fityk-style Weighted RedChi: 4.7023
Error: 0.03564
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 4.702316377565046
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
 77%|███████▋  | 10/13 [00:32<00:09,  3.24s/it]
Processing file: 10mol_FIE_R3_CRR_DiadFit.txt
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:3240: 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))
Fityk-style Weighted RedChi: 7.9142
Error: 0.13112
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 7.914150401741386
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
Fityk-style Weighted RedChi: 2.0381
Error: 0.06607
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 2.038131787908118
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
 85%|████████▍ | 11/13 [00:35<00:06,  3.18s/it]
Processing file: 10mol_FIE_R3_FIN_CRR_DiadFit.txt
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
Fityk-style Weighted RedChi: 1.1489
Error: 0.01961
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 1.1489434795434543
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
Fityk-style Weighted RedChi: 2.9925
Error: 0.02761
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 2.9924974318624145
 92%|█████████▏| 12/13 [00:39<00:03,  3.37s/it]
Processing file: 1mol_FIB_R1_CRR_DiadFit.txt
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
Fityk-style Weighted RedChi: 0.9658
Error: 0.04177
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 0.9658269011049919
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
c:\Users\penny\anaconda3\Lib\site-packages\uncertainties\core.py:1024: UserWarning: Using UFloat objects with std_dev==0 may give unexpected results.
  warn("Using UFloat objects with std_dev==0 may give unexpected results.")
c:\pythonpackages_outside_box\diadfit_outer\src\DiadFit\diads.py:2570: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df_out=df_out.fillna(0).infer_objects()
Fityk-style Weighted RedChi: 0.2157
Error: 0.01179
Weighting accounts for 5 averaged acquisitions and fitted baseline.
Reduced Chi-Square 2: 0.21571796290152456
100%|██████████| 13/13 [00:47<00:00,  3.66s/it]
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_77.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_78.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_79.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_80.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_81.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_82.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_83.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_84.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_85.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_86.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_87.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_88.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_89.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_90.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_91.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_92.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_93.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_94.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_95.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_96.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_97.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_98.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_99.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_100.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_101.png
../../../_images/Examples_Fitting_Fermi_Diads_Example1c_HORIBA_Calibration_Step3_FitAll_Together_25_102.png
[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 10mol_FID_R1_CRR_DiadFit 102.839810 0.065762 1285.527123 0.018527 5619.914259 1285.527273 16313.787676 1.108289 34.965602 ... 1.123664 1.162602 0.274111 0.000394 1.207297 1.309585 0.296285 0.000114 PseudoVoigtModel PseudoVoigtModel
1 10mol_FID_R1_FIN_CRR_DiadFit 102.884216 0.025348 1285.519754 0.014120 5504.934236 1285.519804 15356.030676 1.086863 26.346032 ... 1.126543 1.172577 0.275070 0.000395 1.182432 1.272487 0.294361 0.000146 PseudoVoigtModel PseudoVoigtModel
2 10mol_FID_R2_CRR_DiadFit 102.864238 0.023350 1285.621099 0.015525 4828.888698 1285.621149 13405.092078 1.057224 27.092946 ... 1.176287 1.234657 0.372750 0.000438 1.169435 1.249032 0.307515 0.000209 PseudoVoigtModel PseudoVoigtModel
3 10mol_FID_R2_FIN_CRR_DiadFit 102.904676 0.023760 1285.565188 0.017403 5147.994849 1285.565238 14861.522773 1.109205 31.597985 ... 1.159091 1.206257 0.352929 0.000431 1.160804 1.238903 0.288815 0.000192 PseudoVoigtModel PseudoVoigtModel
4 10mol_FID_R3_CRR_DiadFit 102.958563 0.038127 1285.528786 0.031821 2624.570956 1285.528836 7108.489067 1.084760 34.122887 ... 1.124805 1.163876 0.270767 0.000827 1.156463 1.230464 0.270720 0.000345 PseudoVoigtModel PseudoVoigtModel
5 10mol_FID_R3_FIN_CRR_DiadFit 102.899911 0.031391 1285.533936 0.024560 3471.829412 1285.533986 9701.637454 1.086864 31.266476 ... 1.136223 1.187426 0.296112 0.000626 1.167808 1.251673 0.277072 0.000245 PseudoVoigtModel PseudoVoigtModel
6 10mol_FIE_R1_CRR_DiadFit 102.869488 0.086804 1285.462552 0.019403 4580.616883 1285.462602 12785.139856 1.065018 24.485434 ... 1.081505 1.113501 0.173608 0.000465 1.228995 1.340645 0.289582 0.000109 PseudoVoigtModel PseudoVoigtModel
7 10mol_FIE_R1_FIN_CRR_DiadFit 102.915297 0.029092 1285.738751 0.017261 4859.132897 1285.738801 13530.012024 1.110128 27.341346 ... 1.218391 1.232402 0.484884 0.000457 1.061157 1.089286 0.114881 0.000222 PseudoVoigtModel PseudoVoigtModel
8 10mol_FIE_R2_CRR_DiadFit 102.939611 0.041308 1285.833822 0.032165 1906.640135 1285.833972 5733.972110 1.165296 23.332984 ... 1.175553 1.163471 0.409142 0.001222 1.008955 1.022396 0.019288 0.000689 PseudoVoigtModel PseudoVoigtModel
9 10mol_FIE_R2_FIN_CRR_DiadFit 102.853601 0.039692 1285.614469 0.017475 5545.016800 1285.614519 15404.187547 1.070965 27.656281 ... 1.186830 1.237589 0.400177 0.000386 1.133106 1.197875 0.213771 0.000151 PseudoVoigtModel PseudoVoigtModel
10 10mol_FIE_R3_CRR_DiadFit 102.805556 0.146830 1285.966630 0.131125 990.938953 1285.966780 2847.311006 1.070947 59.079136 ... 1.029240 1.031805 0.062628 0.002161 1.002833 1.040881 0.006532 0.001491 PseudoVoigtModel PseudoVoigtModel
11 10mol_FIE_R3_FIN_CRR_DiadFit 102.873336 0.033863 1285.697403 0.019607 3790.954889 1285.697553 11050.602998 1.145043 27.440511 ... 1.214388 1.233333 0.490968 0.000604 1.101142 1.153459 0.188325 0.000284 PseudoVoigtModel PseudoVoigtModel
12 1mol_FIB_R1_CRR_DiadFit 102.742115 0.043408 1285.142542 0.041775 2049.803853 1285.142592 5369.494033 1.050132 37.145947 ... 1.079745 1.121175 0.167485 0.001025 1.182584 1.181818 0.410811 0.000733 PseudoVoigtModel PseudoVoigtModel

13 rows × 49 columns

This plays a sound when the notebook is done if you have a tendency to procrastinate

[15]:
# !pip install winotify

from winotify import Notification, audio

toast= Notification(app_id="VSCode",title="Notebook completed",
                    msg="Step3b_Secondary_Peaks is done!",
                    duration="short")
toast.set_audio(audio.Mail,loop=False)
toast.show()