Source code for spino.panels.telluric_panel

"""Telluric tab: sky-transmission FITS and the telluric-overlap plot grid."""
from __future__ import annotations

from typing import Any, Dict

from spino import config_io
from spino.panels.base import FieldGrid, to_float


[docs] class TelluricPanel: KEYS = ["SKY_TRANSMISSION_FITS", "TELLURIC_LAMBDA_RANGE_NM", "TELLURIC_RV_GRID_KMS", "TELLURIC_PAD_HOURS", "TELLURIC_EXP_TIME_S"] def __init__(self, tab, bg: str, defaults: Dict[str, Any]): g = FieldGrid(tab, bg, "Telluric position plot", config_io.HELP["Telluric"]) self._fits = g.path("SKY_TRANSMISSION_FITS (blank = disable)", defaults["SKY_TRANSMISSION_FITS"], mode="file") g.section("Wavelength slice [nm]") lam = defaults["TELLURIC_LAMBDA_RANGE_NM"] self._lam0 = g.entry("lambda start", lam[0]) self._lam1 = g.entry("lambda stop", lam[1]) g.section("RV grid [km/s]") rv = defaults["TELLURIC_RV_GRID_KMS"] self._rv0 = g.entry("rv start", rv[0]) self._rv1 = g.entry("rv stop (inclusive)", rv[1]) self._rv2 = g.entry("rv step", rv[2]) g.section("Synthetic window") self._pad = g.entry("TELLURIC_PAD_HOURS", defaults["TELLURIC_PAD_HOURS"]) self._exp = g.entry("TELLURIC_EXP_TIME_S", defaults["TELLURIC_EXP_TIME_S"])
[docs] def collect(self) -> Dict[str, Any]: return { "SKY_TRANSMISSION_FITS": self._fits.get_value().strip(), "TELLURIC_LAMBDA_RANGE_NM": [to_float(self._lam0.get_value(), 0.0), to_float(self._lam1.get_value(), 0.0)], "TELLURIC_RV_GRID_KMS": [to_float(self._rv0.get_value(), -50.0), to_float(self._rv1.get_value(), 50.0), to_float(self._rv2.get_value(), 1.5)], "TELLURIC_PAD_HOURS": to_float(self._pad.get_value(), 1.0), "TELLURIC_EXP_TIME_S": to_float(self._exp.get_value(), 300.0), }
[docs] def set_values(self, v: Dict[str, Any]) -> None: self._fits.set_value(v["SKY_TRANSMISSION_FITS"]) lam = v["TELLURIC_LAMBDA_RANGE_NM"] self._lam0.set_value(lam[0]); self._lam1.set_value(lam[1]) rv = v["TELLURIC_RV_GRID_KMS"] self._rv0.set_value(rv[0]); self._rv1.set_value(rv[1]); self._rv2.set_value(rv[2]) self._pad.set_value(v["TELLURIC_PAD_HOURS"]) self._exp.set_value(v["TELLURIC_EXP_TIME_S"])