Source code for exosim.tasks.parse.parseZodi
import numpy as np
import exosim.models.signal as signal
import exosim.output as output
import exosim.tasks.foregrounds as foregrounds
from exosim.tasks.task import Task
[docs]class ParseZodi(Task):
"""
This tasks parses the zodiacal foreground.
Returns
-------
dict
dictionary of :class:`~exosim.models.signal.Radiance` and :class:`~exosim.models.signal.Dimensionless`,
representing the radiance and efficiency of the optical element.
"""
def __init__(self):
"""
Parameters
__________
parameters: dict
dictionary contained the sources parameters. This is usually parsed from :class:`~exosim.tasks.load.loadOptions.LoadOptions`
wavelength: :class:`~astropy.units.Quantity`
wavelength grid.
time: :class:`~astropy.units.Quantity`
time grid.
output: :class:`~exosim.output.output.Output` (optional)
output file
"""
self.add_task_param("parameters", "optical element parameters dict")
self.add_task_param("wavelength", "wavelength grid")
self.add_task_param("time", "time grid")
self.add_task_param("output", "output file", None)
[docs] def execute(self):
parameters = self.get_task_param("parameters")
self.debug("parsing: {}".format(parameters["value"]))
wl = self.get_task_param("wavelength")
tt = self.get_task_param("time")
estimateZodi = foregrounds.EstimateZodi()
# try to use zodiacal factor
try:
radiance = estimateZodi(
wavelength=wl, zodiacal_factor=parameters["zodiacal_factor"]
)
# else, it try to use the map
except KeyError:
if "zodi_map" in parameters.keys():
radiance = estimateZodi(
wavelength=wl,
coordinates=parameters["coordinates"],
zodi_map=parameters["zodi_map"],
)
else:
radiance = estimateZodi(
wavelength=wl, coordinates=parameters["coordinates"]
)
efficiency = signal.Dimensionless(spectral=wl, data=np.ones(wl.size))
efficiency.temporal_rebin(tt)
output_file = self.get_task_param("output")
if output_file:
if issubclass(output_file.__class__, output.Output):
og_ = output_file.create_group(parameters["value"])
radiance.write(og_, "radiance")
efficiency.write(og_, "efficiency")
out = {"radiance": radiance, "efficiency": efficiency}
self.set_output(out)