Source code for prsctrl.scripts.test_offset

from ..data.prsdata import PrsData
import numpy as np
import matplotlib.pyplot as plt

[docs] def test_offset_calculation(offset_inbetween=False): wavelengths = list(range(400, 800, 1)) + list(range(800, 1000, 2)) + list(range(1000, 1100, 3)) offset_R_begin = 1e-5 offset_R_end = 3e-5 offset_R_750 = 5e-5 offset_R_1050 = 0e-5 times = {wl: 30 * i for i, wl in enumerate(wavelengths)} data = PrsData(data={ wl: { "lock-in-aux_raw": [wl /1000, wl/1001], "lock-in-theta_raw": [0.1, 0.1], "lock-in-R_raw": [wl /100000, wl/100001], "timestamp_start": times[wl] } for wl in wavelengths } | { "offset_begin": { "lock-in-aux_raw": [0.01, 0.01], "lock-in-theta_raw": [0.2, 0.3], "lock-in-R_raw": [offset_R_begin], "timestamp_start": 0, }, "offset_end": { "lock-in-aux_raw": [0.01, 0.10], "lock-in-theta_raw": [0.0, 0.0], "lock-in-R_raw": [offset_R_end], "timestamp_start": (len(times) + (2 if offset_inbetween else 0)) * 30, }, } | ({ "offset_after_750nm": { "lock-in-aux_raw": [0.01, 0.01], "lock-in-theta_raw": [0.1, 0.1], "lock-in-R_raw": [offset_R_750], "timestamp_start": times[750] }, "offset_after_1050nm": { "lock-in-aux_raw": [0.01, 0.01], "lock-in-theta_raw": [0.1, 0.3], "lock-in-R_raw": [offset_R_1050], "timestamp_start": times[1050] } } if offset_inbetween else {}), file_mode="") odata = np.empty([len(wavelengths), 4]) cols = ["lock-in-R", "lock-in-aux", "lock-in-theta"] for i, wl in enumerate(wavelengths): odata[i,0] = wl for j, okey in enumerate(cols): odata[i,j+1] = data._calc_offset(wl, okey) fig, axs = plt.subplots(3, sharex=True) for j, col in enumerate(cols): axs[j].plot(odata[:,0], odata[:,j+1], color=PrsData.get_column_color(col, default="#000")) axs[j].set_ylabel(PrsData.get_column_tex_label_with_unit(col)) axs[2].set_xlabel(PrsData.get_column_tex_label_with_unit("wl")) return data, fig, axs