Source code for lephare.filter

import os
from contextlib import suppress

from ._lephare import flt, write_output_filter
from .runner import Runner

__all__ = [
    "Filter",
]

config_keys = {
    "verbose": "increase onscreen verbosity",
    "FILTER_REP": "path to repository where filter files are searched",
    "FILTER_LIST": "list of filter files, to be searched in FILTER_REP if relative",
    "TRANS_TYPE": "Transmission curve type: 0[def] for energy, 1 for photon nb",
    "FILTER_CALIB": "calibration system for the filter:\
    0[def]: fnu=cst 1: nu.fnu=cst 2: fnu=nu 3: fnu=Black Body @ T=10000K\
    4: for MIPS (leff with nu fnu=ctt and flux with BB @ 10000K",
    "FILTER_FILE": "output filter filename, will be saved in $LEPHAREWORK/filt/",
}


[docs] class Filter(Runner): """ The specific arguments to the Filter class are verbose increase onscreen verbosity FILTER_REP path to repository where filter files are searched FILTER_LIST list of filter files, to be searched in FILTER_REP if relative TRANS_TYPE Transmission curve type: 0[def] for energy, 1 for photon nb FILTER_CALIB calibration system for the filter: 0[def]: fnu=cst 1: nu.fnu=cst 2: fnu=nu 3: fnu=Black Body @ T=10000K 4: for MIPS (leff with nu fnu=ctt and flux with BB @ 10000K FILTER_FILE output filter filename, will be saved in $LEPHAREWORK/filt/ """
[docs] def update_help(self): """Add specific help information""" doc = "Build the LePHARE internal representation of the set of filters to be used\n" with suppress(Exception): self.parser.usage = doc self.__doc__ = doc + "\n" # + inspect.getdoc(Filter)
def __init__(self, config_file=None, config_keymap=None, **kwargs): super().__init__(config_keys, config_file, config_keymap, **kwargs)
[docs] def run(self, **kwargs): """Update keymap and verbosity based on call arguments. This is only when the code is called from python session. """ super().run(**kwargs) keymap = self.keymap flt_rep = keymap["FILTER_REP"].split_string(os.path.join(os.environ["LEPHAREDIR"], "filt/"), 1)[0] flt_files = keymap["FILTER_LIST"].split_string("flt.pb", -99) ref_size = len(flt_files) # Transmission in energy or photons transtyp = (keymap["TRANS_TYPE"]).split_int("0", ref_size) # calibration depending on the instrument calibtyp = (keymap["FILTER_CALIB"]).split_int("0", ref_size) # Output file output_name = keymap["FILTER_FILE"].split_string("filters", 1)[0] filtfile = os.path.join(os.environ["LEPHAREWORK"], "filt", output_name + ".dat") filtdoc = os.path.join(os.environ["LEPHAREWORK"], "filt", output_name + ".doc") if self.verbose: print("#######################################") print("# Build the filter file with the following options: ") print(f"# Config file: {self.config}") print(f"# FILTER_REP: {flt_rep}") print(f"# FILTER_LIST: {flt_files}") print(f"# TRANS_TYPE: {transtyp}") print(f"# FILTER_CALIB: {calibtyp}") print(f"# FILTER_FILE: {filtfile}") print(f"# FILTER_FILE.doc: {filtdoc}") print("#######################################") vec_flt = [] for k, (f, t, c) in enumerate(zip(flt_files, transtyp, calibtyp)): flt_file = f if os.path.isabs(f) else os.path.join(flt_rep, f) one_filt = flt(k, flt_file, t, c) vec_flt.append(one_filt) write_output_filter(filtfile, filtdoc, vec_flt) return vec_flt
def main(): # pragma no cover runner = Filter() _ = runner.run() runner.end() if __name__ == "__main__": # pragma no cover main()