Source code for exotools.db.gaia_db

import numpy as np
from astropy.table import QTable
from typing_extensions import Self

from exotools.utils.masked_operations import safe_average

from .base_db import BaseDB

_ID_FIELD = "gaia_id"


[docs] class GaiaDB(BaseDB): def _factory(self, dataset: QTable) -> Self: return GaiaDB(dataset) def __init__(self, gaia_dataset: QTable): super().__init__(gaia_dataset, id_field=_ID_FIELD) @property def gaia_ids(self) -> np.ndarray: return self.view["gaia_id"].value @property def unique_gaia_ids(self) -> np.ndarray: return np.unique(self.gaia_ids)
[docs] @staticmethod def impute_radius(dataset: QTable) -> QTable: """ Creates a new column "radius" as the average of the available estimations. Fixes nan values where possible """ # Take average of the two observations where both are present dataset["radius"] = safe_average(dataset, ["radius_flame", "radius_gspphot"]) return dataset
[docs] @staticmethod def compute_mean_temperature(dataset: QTable) -> QTable: """ Creates a new column "teff_mean" as the average of the available estimations. """ fields = ["teff_gspphot", "teff_gspspec", "teff_esphs", "teff_espucd", "teff_msc1", "teff_msc2"] dataset["teff_mean"] = safe_average(dataset, fields) return dataset
[docs] @staticmethod def compute_habitable_zone(dataset: QTable) -> QTable: """ https://www.planetarybiology.com/calculating_habitable_zone.html Whitmire, Daniel; Reynolds, Ray, (1996). Circumstellar habitable zones: astronomical considerations. In: Doyle, Laurence (ed.). Circumstellar Habitable Zones, 117-142. Travis House Publications, Menlo Park. """ valid_luminosity = np.where(dataset["lum_flame"] > 0, dataset["lum_flame"], np.nan) dataset["inner_hz"] = np.sqrt(valid_luminosity / 1.1) dataset["outer_hz"] = np.sqrt(valid_luminosity / 0.53) return dataset