fix readfos for multiple spectra sum
This commit is contained in:
@@ -230,13 +230,14 @@ class specpol(object):
|
|||||||
np.savetxt(join_path(output_dir, filename + ".txt"), data_dump)
|
np.savetxt(join_path(output_dir, filename + ".txt"), data_dump)
|
||||||
return join_path(output_dir, filename)
|
return join_path(output_dir, filename)
|
||||||
|
|
||||||
def plot(self, fig=None, ax=None, rest=True, savename=None, plots_folder=""):
|
def plot(self, fig=None, ax=None, rest=False, savename=None, plots_folder=""):
|
||||||
"""
|
"""
|
||||||
Display current spectra.
|
Display current spectra.
|
||||||
"""
|
"""
|
||||||
if fig is None:
|
if fig is None:
|
||||||
if ax is None:
|
if ax is None:
|
||||||
self.fig, self.ax = plt.subplots(1, 2, sharex=True, figsize=(20, 5), layout="constrained")
|
self.fig, self.ax = plt.subplots(1, 2, sharex=True, figsize=(20, 5), layout="constrained")
|
||||||
|
self.fig.suptitle("_".join([self.hd["TARGNAME"], str(self.hd["PROPOSID"]), self.hd["ROOTNAME"], self.hd["APER_ID"]]))
|
||||||
else:
|
else:
|
||||||
self.ax = ax
|
self.ax = ax
|
||||||
else:
|
else:
|
||||||
@@ -255,13 +256,14 @@ class specpol(object):
|
|||||||
wav, wav_err = self.wav_rest, self.wav_rest_err
|
wav, wav_err = self.wav_rest, self.wav_rest_err
|
||||||
rest_str = "Rest "
|
rest_str = "Rest "
|
||||||
else:
|
else:
|
||||||
wav, wav_err = self.wav, self.wav_rest
|
wav, wav_err = self.wav, self.wav_err
|
||||||
rest_str = ""
|
rest_str = ""
|
||||||
# Display flux and polarized flux on first ax
|
# Display flux and polarized flux on first ax
|
||||||
ax1.set_xlabel(rest_str + r"Wavelength [$\AA$]")
|
ax1.set_xlabel(rest_str + r"Wavelength [$\AA$]")
|
||||||
ax1.errorbar(wav, self.I, xerr=wav_err.T, yerr=self.I_err, color="k", fmt=".", label="I")
|
ax1.errorbar(wav, self.I, xerr=wav_err.T, yerr=self.I_err, color="k", fmt=".", label="I")
|
||||||
ax1.errorbar(wav, self.PF, xerr=wav_err.T, yerr=self.PF_err, color="b", fmt=".", label="PF")
|
ax1.errorbar(wav, self.PF, xerr=wav_err.T, yerr=self.PF_err, color="b", fmt=".", label="PF")
|
||||||
ax1.set_ylabel(r"F$_\lambda$ [erg s$^{-1}$ cm$^{-2} \AA^{-1}$]")
|
ax1.set_ylabel(r"F$_\lambda$ [erg s$^{-1}$ cm$^{-2} \AA^{-1}$]")
|
||||||
|
ax1.set_ylim(ymin=0.0)
|
||||||
ax1.legend(ncols=2, loc=1)
|
ax1.legend(ncols=2, loc=1)
|
||||||
|
|
||||||
if isinstance(self.ax, np.ndarray):
|
if isinstance(self.ax, np.ndarray):
|
||||||
@@ -308,7 +310,8 @@ class specpol(object):
|
|||||||
|
|
||||||
spec_a.hd["DATAMIN"], spec_a.hd["DATAMAX"] = spec_a.I.min(), spec_a.I.max()
|
spec_a.hd["DATAMIN"], spec_a.hd["DATAMAX"] = spec_a.I.min(), spec_a.I.max()
|
||||||
spec_a.hd["EXPTIME"] += spec_b.hd["EXPTIME"]
|
spec_a.hd["EXPTIME"] += spec_b.hd["EXPTIME"]
|
||||||
spec_a.hd["ROOTNAME"] += "+" + spec_b.hd["ROOTNAME"]
|
rootnames = [spec_a.hd["ROOTNAME"], spec_b.hd["ROOTNAME"]]
|
||||||
|
spec_a.hd["ROOTNAME"] = "".join(p for p, *r in zip(*rootnames) if all(p == c for c in r)) + "_SUM"
|
||||||
return spec_a
|
return spec_a
|
||||||
|
|
||||||
def __deepcopy__(self, memo={}):
|
def __deepcopy__(self, memo={}):
|
||||||
@@ -583,23 +586,25 @@ def main(infiles, bin_size=None, output_dir=None):
|
|||||||
spec.bin_size(bin_size)
|
spec.bin_size(bin_size)
|
||||||
outfiles += spec.dump_txt("_".join([filename, key]), spec_list=spec.subspec[key], output_dir=output_dir)
|
outfiles += spec.dump_txt("_".join([filename, key]), spec_list=spec.subspec[key], output_dir=output_dir)
|
||||||
outfiles += spec.plot(savename="_".join([filename, key]), spec_list=spec.subspec[key], plots_folder=plots_folder)
|
outfiles += spec.plot(savename="_".join([filename, key]), spec_list=spec.subspec[key], plots_folder=plots_folder)
|
||||||
if hasattr(aper, spec.hd["APER_ID"]):
|
if spec.hd["APER_ID"] in aper.keys():
|
||||||
aper[spec.hd["APER_ID"]].append(spec.subspec[key]["PASS12corr"])
|
aper[str(spec.hd["APER_ID"])].append(specpol(spec.subspec[key]["PASS12corr"]))
|
||||||
else:
|
else:
|
||||||
aper[spec.hd["APER_ID"]] = [spec.subspec[key]["PASS12corr"]]
|
aper[str(spec.hd["APER_ID"])] = [specpol(spec.subspec[key]["PASS12corr"])]
|
||||||
else:
|
else:
|
||||||
outfiles += spec.dump_txt(filename, output_dir=output_dir)
|
outfiles += spec.dump_txt(filename, output_dir=output_dir)
|
||||||
outfiles += spec.plot(savename=filename, plots_folder=plots_folder)
|
outfiles += spec.plot(savename=filename, plots_folder=plots_folder)
|
||||||
if hasattr(aper, spec.hd["APER_ID"]):
|
if spec.hd["APER_ID"] in aper.keys():
|
||||||
aper[spec.hd["APER_ID"]].append(spec.subspec["PASS12corr"])
|
aper[str(spec.hd["APER_ID"])].append(specpol(spec.subspec["PASS12corr"]))
|
||||||
else:
|
else:
|
||||||
aper[spec.hd["APER_ID"]] = [spec.subspec["PASS12corr"]]
|
aper[str(spec.hd["APER_ID"])] = [specpol(spec.subspec["PASS12corr"])]
|
||||||
plt.close("all")
|
plt.close("all")
|
||||||
for key in aper.keys():
|
for key in aper.keys():
|
||||||
filename = "_".join([spec.hd["TARGNAME"], "FOS", str(spec.hd["PROPOSID"]), "SUM"])
|
spec = np.sum(aper[key])
|
||||||
|
rootnames = [s.hd["ROOTNAME"] for s in aper[key]]
|
||||||
|
spec.hd["ROOTNAME"] = "".join(p for p, *r in zip(*rootnames) if all(p == c for c in r)) + "_SUM"
|
||||||
|
filename = "_".join([spec.hd["TARGNAME"], "FOS", str(spec.hd["PROPOSID"]), spec.hd["ROOTNAME"]])
|
||||||
if bin_size is not None:
|
if bin_size is not None:
|
||||||
filename += "_{0:.2f}bin".format(bin_size)
|
filename += "_{0:.2f}bin".format(bin_size)
|
||||||
spec = np.sum(aper[key])
|
|
||||||
outfiles.append(spec.dump_txt("_".join([filename, key]), output_dir=output_dir))
|
outfiles.append(spec.dump_txt("_".join([filename, key]), output_dir=output_dir))
|
||||||
outfiles.append(spec.plot(savename="_".join([filename, key]), plots_folder=plots_folder)[2])
|
outfiles.append(spec.plot(savename="_".join([filename, key]), plots_folder=plots_folder)[2])
|
||||||
plt.show()
|
plt.show()
|
||||||
|
|||||||
Reference in New Issue
Block a user