def __call__(self, x, model_dispersion, model_normalized_flux, *parameters):
# Marginalize over all models.
assert len(parameters) == len(self.parameter_names)
# Continuum.
O = self.metadata["continuum_order"]
continuum = 1.0 if 0 > O \
else np.polyval(parameters[-(O + 1):][::-1], model_dispersion)
y = model_normalized_flux * continuum
# Smoothing?
try:
index = self.parameter_names.index("smoothing")
except ValueError:
None
else:
kernel = abs(parameters[index])
y = ndimage.gaussian_filter1d(y, kernel, axis=-1)
# Redshift?
try:
index = self.parameter_names.index("redshift")
except ValueError:
z = 0
else:
v = parameters[index]
z = v/299792.458 # km/s
return np.interp(x, model_dispersion * (1 + z), y)
评论列表
文章目录