To get frizzy wit it:
uv add frizzle
You should see the documentation for a worked example with plots, the most useful keyword arguments, and for why forward modeling beats interpolation.
If you want a quick crash course, here we will combine eight Doppler-shifted spectra of the same source onto a common output grid:
import numpy as np
from frizzle import frizzle
from frizzle.test_utils import make_one_dataset
R = 1.35e5
x_min, x_max = 8.7000, 8.7025
# generate eight synthetic spectra at slightly different Doppler shifts
xs, ys, ivars, bs, delta_xs, _ = make_one_dataset(
dx=1 / R, snr=12, random_seed=17, x_min=x_min, x_max=x_max,
)
# output wavelength grid
λ_out = np.arange(x_min + 1 / R, x_max, 1 / R)
# concatenate everything into 1-D arrays for frizzle
λ = np.hstack([xs - dx for dx in delta_xs])
flux = np.hstack(ys)
ivar = np.hstack(ivars)
mask = ~np.hstack(bs).astype(bool) # True = drop this pixel
# combine
y_star, C_star, flags, meta = frizzle(λ_out, λ, flux, ivar, mask)- David W Hogg (NYU) (MPIA) (Flatiron)
- Andy Casey (Monash) (Flatiron)