ID31 flat field correction
import numpy as np
from scipy.io import loadmat
def newflat(E):
m = loadmat('/data/id31/inhouse/P3/flats.mat')
return myinterp(m['E'][0].astype(np.float),m['F'],E)
def oldflat(E):
m = loadmat('/data/id31/inhouse/P3/flats_old.mat')
return myinterp(m['Eold'][0],m['Fold'],E)
def myinterp(E,F,nE):
j = np.argsort(abs(E-nE))[0:2]
j.sort()
f = ((E[j[1]]-nE)*F[:,:,j[0]]+(nE-E[j[0]])*F[:,:,j[1]])/(E[j[1]]-E[j[0]])
f[np.isnan(f)] = -2
return f
flat_im = flats.newflat(en)/flats.oldflat(en)
img = img * flat_im