From 0d796332907f409d2a1b477fc75a10fc52eef4d6 Mon Sep 17 00:00:00 2001 From: linarphy Date: Mon, 22 May 2023 15:59:57 +0200 Subject: [PATCH] Add script to calibrate wavelength --- wavelength_calibration.py | 59 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 wavelength_calibration.py diff --git a/wavelength_calibration.py b/wavelength_calibration.py new file mode 100644 index 0000000..e02908d --- /dev/null +++ b/wavelength_calibration.py @@ -0,0 +1,59 @@ +import numpy as np +import matplotlib.backends.backend_qtagg as qt +import matplotlib.figure as fig +import utils + +calib_top = np.load( 'asset/calib_top.npy' ) +calib_down = np.load( 'asset/calib_down.npy' ) +reference = np.load( 'asset/reference.npy' ) + +mean_calib_top = np.mean( calib_top , axis = 0 ) +mean_calib_down = np.mean( calib_down , axis = 0 ) + +peaks_calib_top = utils.retrieve_peaks( mean_calib_top ) +peaks_reference = utils.retrieve_peaks( reference[1] , window_size = 1 , max_window_size = 1 ) + +polyval = np.polyfit( peaks_calib_top , peaks_reference[ 2 : ] , 1 ) + +manager = qt.FigureManager( + qt.FigureCanvas( + fig.Figure( + ), + ), + 1, +) +manager.canvas.figure.add_axes( ( 0.05 , 0.15 , 0.9 , 0.7 ) ).plot( peaks_calib_top , np.array( peaks_reference[ 2 : ] ) - np.polyval( polyval , peaks_calib_top ) ) +manager.show() +manager.start_main_loop() + +peaks_values = [ reference[ 1 , i ] for i in np.array( peaks_reference ).astype( int ) ] +sorting = np.argsort( peaks_values )[ :: -1 ] +wavelength = [ reference[ 0 , i ] for i in np.array( [ peaks_reference[ j ] for j in sorting ] ).astype( int ) ] + +polyval_wavelength = np.polyfit( peaks_reference , np.sort( wavelength ) , 1 ) + +wavelength = np.polyval( polyval_wavelength , np.polyval( polyval , np.arange( 0 , len( mean_calib_top ) , 1 ) ) ) + +manager = qt.FigureManager( + qt.FigureCanvas( + fig.Figure( + figsize = ( 10 , 5 ) + ), + ), + 0, +) + +manager.canvas.figure.add_subplot( 2 , 1 , 1 , xlim = ( 3800 , 4000 ) , xmargin = 0 ).plot( + wavelength , + mean_calib_top, +) +manager.canvas.figure.axes[0].set_title( 'raw data' ) + +manager.canvas.figure.add_subplot( 2 , 1 , 2 , xlim = ( 3800 , 4000 ) , xmargin = 0 ).plot( + reference[0], + reference[1], +) +manager.canvas.figure.axes[1].set_title( 'reference' ) + +manager.show() +manager.start_main_loop()