Source code for lephare.mag_gal

from contextlib import suppress

from ._lephare import GalMag, QSOMag, StarMag, keyword
from .runner import Runner

__all__ = [
    "MagGal",
]

config_keys = {
    "typ": "define what kind of objects these SED belong to : GAL, QSO, or STAR",
    "verbose": "increase onscreen verbosity",
    "COSMOLOGY": "fiducial cosmology used for absolute magnitudes evaluations",
    "FILTER_FILE": "filter file provided by filter script or the Filter class",
    "MAGTYPE": "AB or VEGA system",
    "EXTINC_LAW": "list of extinction files used for extinction correction\
    (if relative, in $LEPHAREDIR/ext/)",
    "MOD_EXTINC": "list of SED template ranges for which each extinction law is going to be applied",
    "EB_V": "E(B-V) grid of values to be applied to the SEDs (comma separated)",
    "Z_STEP": "dz, zmin, zmax defining the redshift grid",
    "GAL_LIB_IN": "input SED library file, as output by sedtolib script or SEDtolib class\
    (in $LEPHAREWORK/lib_bin/)",
    "GAL_LIB_OUT": "output file of the synthetic magnitudes (in $LEPHAREWORK/lib_mag/)",
    "QSO_LIB_IN": "same for QSO/AGN templates",
    "QSO_LIB_OUT": "same for QSO/AGN templates",
    "STAR_LIB_IN": "same for STAR templates",
    "STAR_LIB_OUT": "same for STAR templates",
    "LIB_ASCII": "if set to YES, also provide the output in ascii",
    "EM_LINES": "[NO/EMP_UV/EMP_SFR/PHYS] choice of prescription for emission line computation",
    "EM_DISPERSION": "rescaling values for the emission lines",
    "ADD_DUSTEM": "add the dust emission in templates when missing",
}


[docs] class MagGal(Runner): """The specific arguments to the MagGal class are typ: define what kind of objects these SED belong to : GAL, QSO, or STAR verbose: increase onscreen verbosity COSMOLOGY: fiducial h0, Omega_m0, and LambdaO used to define a flat LCDM cosmology used for absolute magnitudes evaluations FILTER_FILE: filter file provided by filter script or the Filter class MAGTYPE: AB or VEGA system EXTINC_LAW: list of extinction files used for extinction correction (if relative, in $LEPHAREDIR/ext/) MOD_EXTINC: list of SED template ranges for which each extinction law is going to be applied EB_V: E(B-V) grid of values to be applied to the SEDs (comma separated) Z_STEP: dz, zmin, zmax defining the redshift grid GAL_LIB_IN: input SED library file, as output by sedtolib script or SEDtolib class (in $LEPHAREWORK/lib_bin/) GAL_LIB_OUT: output file of the synthetic magnitudes (in $LEPHAREWORK/lib_mag/) QSO_LIB_IN, QSO_LIB_OUT, STAR_LIB_IN, STAR_LIB_OUT same for STAR templates LIB_ASCII: if set to YES, also provide the output in ascii EM_LINES: [NO/EMP_UV/EMP_SFR/PHYS] choice of prescription for emission line computation EM_DISPERSION: possible rescaling values for the emission lines ADD_DUSTEM: add the dust emission in templates when missing VERBOSE: add verbosity """
[docs] def update_help(self): """Add the specific MagGal help""" doc = "Build the LePHARE internal representation of the set of SED templates to be used" with suppress(Exception): self.parser.usage = "Build the LePHARE synthetic magnitudes" self.__doc__ = doc + "\n" # + inspect.getdoc(MagGal)
def __init__(self, config_file=None, config_keymap=None, **kwargs): super().__init__(config_keys, config_file, config_keymap, **kwargs)
[docs] def run(self, **kwargs): """Compute the model magnitudes across the redshift grid. Returns ------- None """ super().run(**kwargs) # needed to comply with the C++ interface # Define the type (Galaxy, QSO, Stars) self.keymap["t"] = keyword("t", self.typ) # Parameter file self.keymap["c"] = keyword("c", self.config) if self.typ[0] == "G": mag = GalMag(self.keymap) elif self.typ[0] == "Q": mag = QSOMag(self.keymap) elif self.typ[0] == "S": mag = StarMag(self.keymap) else: raise KeyError("-t arg must start with G/g Q/q or S/s for Galaxy QSO and Star respectively.") mag.open_files() mag.print_info() # Read dust extinction laws mag.read_ext() # Define the redshift grid mag.def_zgrid() # Read B12 templates to add dust emission to BC03 add_dust = self.keymap["ADD_DUSTEM"].split_bool("NO", 1) if add_dust: mag.read_B12() # Read sed, apply extinction and IGM opacity mag.read_SED() mag.write_doc() # we need to call the close method here because run can # be called within a python session that stays alive afterwards mag.close_files() self.Mag = mag return
def main(): # pragma no cover runner = MagGal() runner.run() runner.end() if __name__ == "__main__": # pragma no cover main()