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