From cee08f6100088b9b7cdf2893370af62120b80691 Mon Sep 17 00:00:00 2001 From: Tomas Stolker Date: Wed, 27 Mar 2024 17:46:39 +0100 Subject: [PATCH] Support for Sonora Elf Owl T-type model spectra --- species/data/model_data/model_data.json | 10 ++++++++++ species/data/model_data/model_spectra.py | 21 ++++++++++++++------- species/plot/plot_spectrum.py | 1 + species/util/data_util.py | 11 ++++++----- species/util/model_util.py | 9 +++++++++ species/util/plot_util.py | 5 +++++ 6 files changed, 45 insertions(+), 12 deletions(-) diff --git a/species/data/model_data/model_data.json b/species/data/model_data/model_data.json index a0f11c8..8dbeb85 100644 --- a/species/data/model_data/model_data.json +++ b/species/data/model_data/model_data.json @@ -289,6 +289,16 @@ "reference": "Marley et al. (2021)", "url": "https://zenodo.org/record/5063476" }, + "sonora-elfowl-t": { + "parameters": ["teff", "logg", "feh", "c_o_ratio", "log_kzz"], + "name": "Sonora Elf Owl", + "file size": "36 GB", + "wavelength range": [0.6, 15], + "lambda/d_lambda": 60000, + "teff range": [575, 1200], + "reference": "Mukherjee et al. (2023)", + "url": "https://zenodo.org/records/10385821" + }, "sphinx": { "parameters": ["teff", "logg", "feh", "c_o_ratio"], "name": "SPHINX", diff --git a/species/data/model_data/model_spectra.py b/species/data/model_data/model_spectra.py index 1b56207..eb39579 100644 --- a/species/data/model_data/model_spectra.py +++ b/species/data/model_data/model_spectra.py @@ -299,9 +299,9 @@ def add_model_grid( print_message = "" for _, _, file_list in os.walk(data_folder): - for filename in sorted(file_list): - if filename[: len(model_tag)] == model_tag: - file_split = filename.split("_") + for file_name in sorted(file_list): + if file_name[: len(model_tag)] == model_tag: + file_split = file_name.split("_") param_index = file_split.index("teff") + 1 teff_val = float(file_split[param_index]) @@ -340,13 +340,20 @@ def add_model_grid( print(f"\r{empty_message}", end="") print_message = ( - f"Adding {model_info['name']} model spectra... {filename}" + f"Adding {model_info['name']} model spectra... {file_name}" ) print(f"\r{print_message}", end="", flush=True) - data_wavel, data_flux = np.loadtxt( - os.path.join(data_folder, filename), unpack=True - ) + spec_file = os.path.join(data_folder, file_name) + + if file_name[-4:] == ".dat": + data_wavel, data_flux = np.loadtxt(spec_file, unpack=True) + + else: + data = np.load(spec_file) + + data_wavel = data[:, 0] + data_flux = data[:, 1] if wavel_range is None: if wavelength is None: diff --git a/species/plot/plot_spectrum.py b/species/plot/plot_spectrum.py index ec12663..581afd8 100644 --- a/species/plot/plot_spectrum.py +++ b/species/plot/plot_spectrum.py @@ -233,6 +233,7 @@ def plot_spectrum( "feh", "metallicity", "fsed", + "log_kzz", "distance", "parallax", "mass", diff --git a/species/util/data_util.py b/species/util/data_util.py index 36e37be..7ecd0be 100644 --- a/species/util/data_util.py +++ b/species/util/data_util.py @@ -862,17 +862,18 @@ def convert_units( flux_in : np.ndarray Array with the input wavelengths and fluxes. The shape of the array should be (n_wavelengths, 3) or (n_wavelengths, 2) with - the columns being the wavelengths, flux densities, and optional - the uncertainties. For photometric fluxes, the array should also - be 2D but with a single row/wavelength. + the columns being the wavelengths, flux densities, and + optionally the uncertainties. For photometric fluxes, the + array should also be 2D but with a single row/wavelength. units_in : tuple(str, str) Tuple with the units of the wavelength ("um", "angstrom", "nm", "mm", "cm", "m", "Hz", "GHz") and the units of the flux density ("W m-2 um-1", "W m-2 m-1", "W m-2 Hz-1", "erg s-1 cm-2 angstrom-1" "erg s-1 cm-2 Hz-1", "mJy", - "Jy", "MJy"). + "Jy", "MJy"). One can use "um" or "µm" interchangeably, + and similarly "AA", "Å", "A", or "angstrom". convert_from : bool - Covert from ``units_in`` to :math:`\\mu\\text{m}^{-1}` and + Convert from ``units_in`` to :math:`\\mu\\text{m}^{-1}` and :math:`\\text{W} \\text{m}^{-2} \\mu\\text{m}^{-1}` when set to ``True``. Or, convert to ``units_in`` when set to ``False``. diff --git a/species/util/model_util.py b/species/util/model_util.py index 5eb0479..189816c 100644 --- a/species/util/model_util.py +++ b/species/util/model_util.py @@ -123,6 +123,15 @@ def convert_model_name(in_name: str) -> str: elif in_name == "sonora-bobcat-co": out_name = "Sonora Bobcat C/O" + elif in_name == "sonora-elfowl-l": + out_name = "Sonora Elf Owl" + + elif in_name == "sonora-elfowl-t": + out_name = "Sonora Elf Owl" + + elif in_name == "sonora-elfowl-y": + out_name = "Sonora Elf Owl" + elif in_name == "sphinx": out_name = "SPHINX" diff --git a/species/util/plot_util.py b/species/util/plot_util.py index 4ab24cb..514bcf7 100644 --- a/species/util/plot_util.py +++ b/species/util/plot_util.py @@ -939,6 +939,11 @@ def quantity_unit( unit.append(None) label.append("C/O") + if item == "log_kzz": + quantity.append("log_kzz") + unit.append(None) + label.append(r"$\log\,K_\mathrm{zz}$") + if item == "ad_index": quantity.append("ad_index") unit.append(None)