distortion_fit_bounds#

esis.flights.f1.optics.distortion_fit_bounds(parameters)[source]#

Compute the parameter bounds used when fitting the ESIS-I distortion.

Most parameters are bounded at \(\pm 20\%\) of the given initial guess. The roll angles and the primary-mirror displacement are instead given the hand-tuned absolute bounds of the ESISI_distortion_optimization_20260213_151715 run, the best fit of the ESIS-I flight data (and the source of the values in distortion_fit()), since their initial guesses are zero or nearly so.

The bounds are expressed in the same units as parameters so that flattening both with named_arrays.pack() yields consistent vectors.

Parameters:

parameters (DistortionParameters) – The initial guess of the fit.

Return type:

tuple[DistortionParameters, DistortionParameters]

Examples

Compute the bounds for fitting the ESIS flight-1 design.

import named_arrays as na
import esis

instrument = esis.flights.f1.optics.design(num_distribution=0)
parameters = esis.optics.DistortionParameters.from_instrument(instrument)
lower, upper = esis.flights.f1.optics.distortion_fit_bounds(parameters)

na.pack(lower), na.pack(upper)
(ScalarArray(
     ndarray=[-3.21808841e+02,  0.00000000e+00, -2.00000000e+00, -4.00000000e+00,  3.09285293e-01, -1.00000000e+01,
               0.00000000e+00,  0.00000000e+00, -4.00000000e+00],
     axes=('pack',),
 ),
 ScalarArray(
     ndarray=[-214.53922765,    0.        ,    2.        ,    4.        ,    0.46392794,    0.        ,    0.        ,
                 0.        ,    0.        ],
     axes=('pack',),
 ))