def create_interpolator(filename):
"""
Loads a LUT file and creates an interpolated LUT object.
The interpolant is constructed by triangulating the input data using Qhull
and performing linear barycentric interpolation on each triangle
"""
#load LUT
LUT = pickle.load(open(filename,"rb"))
# LUT inputs (H2O, O3, etc.) and outputs (i.e. atmcorr coeffs)
inputs = permutate_invars(LUT['config']['invars'])
outputs = LUT['outputs']
# piecewise linear interpolant in N dimensions
t = time.time()
interpolator = LinearNDInterpolator(inputs,outputs)
print('Interpolation took {:.2f} (secs) = '.format(time.time()-t))
# sanity check
print('Quick check..')
i = 0
true = (outputs[i][0],outputs[i][1])
interp = interpolator(inputs[i][0],inputs[i][1],inputs[i][2],inputs[i][3],inputs[i][4])
print('true = {0[0]:.2f} {0[1]:.2f}'.format(true))
print('interp = {0[0]:.2f} {0[1]:.2f}'.format(interp))
return interpolator
评论列表
文章目录