Files
SP2XR/example_calibration_code.ipynb
T

1.0 MiB

In [ ]:
import pandas as pd
import numpy as np

from SP2XR_toolkit import calculate_calib_coeff

Load data

In [2]:
main_path = '/data/user/bertoz_b/SP2XR/data/NyA/SP2XR_pbp_parquet/date=2019-06-25'

pbp_calib = pd.read_parquet(main_path)# + '/SP2XR_pbp_parquet/',
                           # filters=[('date', '>=', '2019-06-25 00:00:00'), ('date', '<=', '2019-06-25 00:00:00')])
In [3]:
(200**3)*np.pi*4/3
Out [3]:
33510321.638291124

Create a calibration dictionary

In [12]:
calib_dict = {
    'FS_70':{
        'folder_name': '20190625080742',
        'type': 'FS',
        'mass': None,
        'diam': 70,
        'n_modes': 1,
        'mu': [7e5],
        'sigma': [1.2],
        'N': [600],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [1e5, 1e6]
        },
    'FS_520':{
        'folder_name': '20190625081533',
        'type': 'FS',
        'mass': None,
        'diam': 520,
        'n_modes': 2,
        'mu': [2e8, 8e8],
        'sigma': [1.2, 1.2],
        'N': [600, 300],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [5e7, 2e9]
        },
    'FS_480':{
        'folder_name': '20190625083435',
        'type': 'FS',
        'mass': None,
        'diam': 480,
        'n_modes': 2,
        'mu': [1e8, 8e8],
        'sigma': [1.2, 1.2],
        'N': [300, 100],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [3e7, 1e9]
        },
    'FS_430':{
        'folder_name': '20190625085332',
        'type': 'FS',
        'mass': None,
        'diam': 430,
        'n_modes': 2,
        'mu': [1e8, 4e8],
        'sigma': [1.2, 1.2],
        'N': [300, 100],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [6e7, 1e9]
        },
    'FS_380':{
        'folder_name': '20190625090839',
        'type': 'FS',
        'mass': None,
        'diam': 380,
        'n_modes': 2,
        'mu': [1e8, 5e8],
        'sigma': [1.2, 1.2],
        'N': [300, 100],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [2e7, 4e8]
        },
    'FS_340':{
        'folder_name': '20190625091710',
        'type': 'FS',
        'mass': None,
        'diam': 340,
        'n_modes': 2,
        'mu': [7e7, 2e8],
        'sigma': [1.2, 1.2],
        'N': [300, 100],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [1e7, 5e8]
        },
    'FS_300':{
        'folder_name': '20190625092444',
        'type': 'FS',
        'mass': None,
        'diam': 300,
        'n_modes': 2,
        'mu': [6e7, 2e8],
        'sigma': [1.1, 1.1],
        'N': [500, 50],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [1e7, 7e8]
        },
    'FS_260':{
        'folder_name': '20190625093530',
        'type': 'FS',
        'mass': None,
        'diam': 260,
        'n_modes': 2,
        'mu': [3e7, 1e8],
        'sigma': [1.2, 1.2],
        'N': [300, 100],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [8e6, 2e8]
        },

    'FS_220':{
        'folder_name': '20190625094413',
        'type': 'FS',
        'mass': None,
        'diam': 220,
        'n_modes': 2,
        'mu': [2e7, 9e7],
        'sigma': [1.2, 1.2],
        'N': [300, 100],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [3e6, 1e8]
        },
    'FS_180':{
        'folder_name': '20190625095341',
        'type': 'FS',
        'mass': None,
        'diam': 180,
        'n_modes': 2,
        'mu': [1e7, 4e7],
        'sigma': [1.2, 1.2],
        'N': [300, 100],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [2e6, 8e7]
        },
    'FS_160':{
        'folder_name': '20190625100133',
        'type': 'FS',
        'mass': None,
        'diam': 160,
        'n_modes': 2,
        'mu': [7e6, 3e7],
        'sigma': [1.2, 1.2],
        'N': [300, 100],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [1e6, 5e7]
        },
    'FS_540':{
        'folder_name': '20190625100902',
        'type': 'FS',
        'mass': None,
        'diam': 540,
        'n_modes': 2,
        'mu': [2e8, 8e8],
        'sigma': [1.1, 1.1],
        'N': [300, 50],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [5e7, 2e9]
        },
    'FS_140':{
        'folder_name': '20190625125538',
        'type': 'FS',
        'mass': None,
        'diam': 140,
        'n_modes': 2,
        'mu': [5e6, 2e7],
        'sigma': [1.2, 1.2],
        'N': [300, 100],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [1e6, 3e7]
        },
    'FS_120':{
        'folder_name': '20190625125954',
        'type': 'FS',
        'mass': None,
        'diam': 120,
        'n_modes': 2,
        'mu': [2e6, 1e7],
        'sigma': [1.2, 1.2],
        'N': [100, 100],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [7e5, 2e7]
        },
    'FS_100':{
        'folder_name': '20190625130340',
        'type': 'FS',
        'mass': None,
        'diam': 100,
        'n_modes': 2,
        'mu': [2e6, 7e6],
        'sigma': [1.2, 1.2],
        'N': [100, 300],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [5e5, 1e7]
        },
    'FS_90':{
        'folder_name': '20190625130820',
        'type': 'FS',
        'mass': None,
        'diam': 90,
        'n_modes': 2,
        'mu': [1e6, 5e6],
        'sigma': [1.2, 1.2],
        'N': [100, 200],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [5e5, 5e6]
        },
    'FS_80':{
        'folder_name': '20190625131458',
        'type': 'FS',
        'mass': None,
        'diam': 80,
        'n_modes': 2,
        'mu': [9e5, 3e6],
        'sigma': [1.1, 1.1],
        'N': [100, 300],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [2e5, 4e6]
        },
    'FS_60':{
        'folder_name': '20190625131945',
        'type': 'FS',
        'mass': None,
        'diam': 60,
        'n_modes': 1,
        'mu': [3e5],
        'sigma': [1.2],
        'N': [300],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [1e5, 6e5]
        }

    }


'''
'FS_50':{
        'folder_name': '20190625132548',
        'type': 'FS',
        'mass': None,
        'diam': 50,
        'n_modes': 2,
        'mu': [6e7, 2e8],
        'sigma': [1.2, 1.2],
        'N': [300, 100],
        'nbins': 100,
        'bins_range': [],
        'fit_range': [1e5, 2e9]
        }
'''
Out [12]:
"\n'FS_50':{\n        'folder_name': '20190625132548',\n        'type': 'FS',\n        'mass': None,\n        'diam': 50,\n        'n_modes': 2,\n        'mu': [6e7, 2e8],\n        'sigma': [1.2, 1.2],\n        'N': [300, 100],\n        'nbins': 100,\n        'bins_range': [],\n        'fit_range': [1e5, 2e9]\n        }\n"

Load previous calib for comparison

In [17]:
previous_calib_to_append = {}

FS_DMA_fit_20190625 = pd.read_csv('/data/user/bertoz_b/SP2XR/sp2xr_nya/XR_NyA_FS_Cal_25062019.txt',
                                  sep='\t', names=['AD', 'mass'], header=None, skiprows=1).dropna(subset=['AD'])
FS_DMA_fit_20190625.columns = ['ph', 'mass']
FS_DMA_fit_20190625.sort_values(by='mass', inplace=True)
previous_calib_to_append['FS_DMA_fit_20190625'] = {'label': 'FS DMA 20190625',
                                                   'color': 'C6',
                                                   'ls': '-',
                                                   'marker': '',
                                                   'mass':FS_DMA_fit_20190625['mass'],
                                                   'peak': FS_DMA_fit_20190625['ph']}

Perform calibration

In [18]:
calib_dict, popt = calculate_calib_coeff(pbp_calib, calib_dict,
                                         size_selection_method='DMA',
                                         calib_material='FS_PSI_2010', rho_eff=1800,
                                         fit='polynomial', fit_p0=[0.025, 2.04e-7], bounds=((0.020, 2.038e-7), (0.030, 2.041e-7)), save_calib_coeff=True,
                                         append_calib_curve=previous_calib_to_append, # this is meant to be for comaprison with previous calibrations
                                         save_peak_hist_lognorm_fit_params=True,
                                         do_peak_histogram_plots=True, save_peak_histogram_plots=True,
                                         do_calib_curve_plot=True, save_calib_curve_plot=True,
                                         plot_dir='example_calib_plots/')
/data/user/bertoz_b/SP2XR/sp2xr_nya/sp2xr/SP2XR_toolkit.py:1298: RuntimeWarning: invalid value encountered in log10
  Yfit += N / (np.log10(sigma) * np.sqrt(2 * np.pi)) * np.exp(-((np.log10(x / mu)) ** 2) / (2 * np.log10(sigma) ** 2))
/data/user/bertoz_b/SP2XR/sp2xr_nya/sp2xr/SP2XR_toolkit.py:1298: RuntimeWarning: invalid value encountered in log10
  Yfit += N / (np.log10(sigma) * np.sqrt(2 * np.pi)) * np.exp(-((np.log10(x / mu)) ** 2) / (2 * np.log10(sigma) ** 2))
/data/user/bertoz_b/SP2XR/sp2xr_nya/sp2xr/SP2XR_toolkit.py:1298: RuntimeWarning: invalid value encountered in log10
  Yfit += N / (np.log10(sigma) * np.sqrt(2 * np.pi)) * np.exp(-((np.log10(x / mu)) ** 2) / (2 * np.log10(sigma) ** 2))
/data/user/bertoz_b/SP2XR/sp2xr_nya/sp2xr/SP2XR_toolkit.py:1298: RuntimeWarning: invalid value encountered in log10
  Yfit += N / (np.log10(sigma) * np.sqrt(2 * np.pi)) * np.exp(-((np.log10(x / mu)) ** 2) / (2 * np.log10(sigma) ** 2))
/data/user/bertoz_b/SP2XR/sp2xr_nya/sp2xr/SP2XR_toolkit.py:1298: RuntimeWarning: invalid value encountered in log10
  Yfit += N / (np.log10(sigma) * np.sqrt(2 * np.pi)) * np.exp(-((np.log10(x / mu)) ** 2) / (2 * np.log10(sigma) ** 2))
In [ ]:
In [ ]: