Source code for lephare._photoz

import os

import numpy as np
from astropy.table import Column, Table

from ._lephare import PhotoZ, readOutKeywords
from ._utils import continueClass

__all__ = [
    "PhotoZ",
]


@continueClass
[docs] class PhotoZ: # noqa: F811
[docs] pdfdict = { "MASS": 0, "SFR": 1, "SSFR": 2, "LDUST": 3, "LIR": 4, "AGE": 5, "COL1": 6, "COL2": 7, "MREF": 8, "MIN_ZG": 9, "MIN_ZQ": 10, "BAY_ZG": 11, "BAY_ZQ": 12, }
[docs] def build_output_tables(self, srclist, para_out=None, filename=None): # BUILD THE TABLE OF THE OUTPUT PARAMETERS d = np.loadtxt(os.path.join(os.environ["LEPHAREDIR"], "alloutputkeys.txt"), dtype="str") allkeys = {} for count, label in enumerate(d[:, 0]): allkeys[label] = (d[count, 1], d[count, 2]) outkeys = readOutKeywords(self.outpara) if para_out is None else readOutKeywords(para_out) outputs = {} t = Table() for key in outkeys: typ, attr = allkeys[key] is_array = False if "[" in attr: tmp = attr.split("[") attr = tmp[0] try: index = int(tmp[1][0]) except ValueError: index = tmp[1][1:-2] is_array = True outputs[key] = [] for src in srclist: if is_array is False: outputs[key].append(getattr(src, attr)) else: outputs[key].append(getattr(src, attr)[index]) t.add_column(Column(name=key, dtype=typ, data=outputs[key])) # NOW THE PDFS, IN THE SAME TABLE FOR NOW for typ in self.pdftype: arr = [] key = self.pdfdict[typ] for src in srclist: pdf = src.pdfmap[key] arr.append(pdf.vPDF) t.add_column(Column(name="PDF_" + typ + "()", dtype=float, data=arr)) # use the last src object to get the x-axis values t.meta[typ] = " ".join(str(e) for e in pdf.xaxis) if filename is not None: self.save_table(t, filename) return t
[docs] def save_table(self, table, filename, fmt="fits", overwrite=True): if fmt == "fits": table.write(filename, "fits", overwrite)