Files
autoopt-cpp/examples/test.py
T
2026-05-19 15:34:22 +02:00

60 lines
1.3 KiB
Python

import sys
import os.path as path
build_dir = path.join(path.dirname(__file__), '..', 'build')
print('Adding build directory to sys.path:', build_dir)
sys.path.append(build_dir)
import slopefit as sf
import numpy as np
import matplotlib.pyplot as plt
fl = 1200.0 # mm
theta_mrad = 3.0 # mrad
theta_rad = theta_mrad * 1e-3
theta = theta_rad / np.pi * 180.0 # deg
parab = sf.ParabolaParams(fl, theta)
filename = 'microMAX_vsru_mispu_absum.dat'
dirname = path.dirname(__file__)
data = sf.import_dat_file(path.join(dirname, filename))
# flip both x and y
data[:, 0] = -data[:, 0]
data[:, 1] = -data[:, 1]
n_skip = 20
data = data[n_skip:-n_skip, :]
ref = parab(data[:, 0])
# convert ref from slope to rad
# ref = np.arctan(ref)
# convert to arcsec
# ref = ref / np.pi * 180.0 * 3600.0
plt.plot(data[:, 0], data[:, 1], 'x')
plt.plot(data[:, 0], ref, '-')
plt.xlabel('x (mm)')
plt.ylabel('slope (arcsec)')
plt.show()
d_parab = sf.ParabolaParams(100.0, 0.00001)
fitted = sf.fit_parabola(data, parab, d_parab)
print('Fitted parameters:')
print('fl =', fitted.focal_length)
print('theta =', fitted.theta * np.pi * 1e3 / 180.0, 'mrad')
fitted_ref = fitted(data[:, 0])
plt.plot(data[:, 0], data[:, 1], 'x')
plt.plot(data[:, 0], fitted_ref, '-')
plt.xlabel('x (mm)')
plt.ylabel('slope (arcsec)')
plt.show()