def alt_sky_model(self):
fac = 10
mn = 1e9
mx = 0.
for fiber in self.good_fibers:
mn = np.min([mn, fiber.wavelength.min()])
mx = np.max([mx, fiber.wavelength.max()])
xs = np.linspace(0, 1, self.D*fac)
A = np.zeros((len(xs), len(self.good_fibers)))
for i, fiber in enumerate(self.good_fibers):
y = fiber.spectrum / fiber.fiber_to_fiber
xp = np.interp(fiber.wavelength, np.linspace(mn, mx, self.D*fac),
xs, left=0.0, right=0.0)
tck = splrep(xp, y)
A[:, i] = splev(xs, tck)
ys = biweight_location(A, axis=(1,))
self.masterwave = np.linspace(mn, mx, self.D*fac)
B, c = bspline_x0(self.masterwave, nknots=self.D)
sol = np.linalg.lstsq(c, ys)[0]
self.mastersky = np.dot(c, sol)
评论列表
文章目录