Source code for fastar.interpolate.color
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import jax.numpy as jnp
from jax.scipy.ndimage import map_coordinates
# =============================================================================
# Color Interpolation over (logg, log10(Teff), [Fe/H])
# =============================================================================
[docs]
def color_interpolation(
logg_val, logteff_val, fmet_val, ulogg, uteff_log10, ufmet, grid
):
"""
Trilinear interpolation of a single color grid over stellar parameters.
These stellar parameters are (logg, log10(Teff), [Fe/H]).
Parameters
----------
logg_val : float
Target surface gravity (logg).
logteff_val : float
Target effective temperature (log10 Teff).
fmet_val : float
Target [Fe/H].
ulogg, uteff_log10, ufmet : array-like
1D grid points along each axis.
grid : array-like, shape (len(ulogg), len(uteff_log10), len(ufmet))
The color grid to interpolate.
Returns
-------
float
Interpolated color value.
"""
# Convert to fractional indices
g_idx = jnp.interp(logg_val, ulogg, jnp.arange(len(ulogg)))
t_idx = jnp.interp(logteff_val, uteff_log10, jnp.arange(len(uteff_log10)))
m_idx = jnp.interp(fmet_val, ufmet, jnp.arange(len(ufmet)))
# Stack into a coordinate array with shape (3, 1)
coords = jnp.array([[g_idx], [t_idx], [m_idx]])
# Trilinear interpolation
return map_coordinates(grid, coords, order=1, mode='nearest')[0]