Source code for exosim.tasks.subexposures.loadQeMap
import h5py
import exosim.models.signal as signal
import exosim.output as output
from exosim.output.hdf5.utils import load_signal
from exosim.tasks.task import Task
[docs]class LoadQeMap(Task):
"""
Loads the Quantum efficiency map
Returns
--------
:class:`~exosim.models.signal.Signal`
channel responsivity variation map
Raises
------
TypeError:
if the output is not a :class:`~exosim.models.signal.Signal` class
Notes
-----
This is a default class with standardised inputs and outputs.
The user can load this class and overwrite the "model" method
to implement a custom Task to replace this.
"""
def __init__(self):
"""
Parameters
__________
parameters: dict
dictionary containing the parameters. This is usually parsed from :class:`~exosim.tasks.load.loadOptions.LoadOptions`
time: :class:`~astropy.units.Quantity`
time grid
output: :class:`~exosim.output.output.Output` (optional)
output file
"""
self.add_task_param("parameters", "parameters dict")
self.add_task_param("time", "time grid")
self.add_task_param("output", "output file", None)
[docs] def execute(self):
self.info("loading quantum efficiency variation map")
parameters = self.get_task_param("parameters")
tt = self.get_task_param("time")
qe_map = self.model(parameters, tt)
# checking output
if not isinstance(qe_map, signal.Signal):
self.error("wrong output format")
raise TypeError("wrong output format")
self.debug("qe_variation_map: {}".format(qe_map.data))
output_file = self.get_task_param("output")
if output_file:
if issubclass(output_file.__class__, output.Output):
qe_map.write(output_file, "qe_variation_map")
self.set_output(qe_map)
[docs] def model(self, parameters, time):
"""
Parameters
----------
parameters: dict
dictionary contained the channel parameters. This is usually parsed from :class:`~exosim.tasks.load.loadOptions.LoadOptions`
time: :class:`~astropy.units.Quantity`
time grid.
Returns
--------
:class:`~exosim.models.signal.Signal`
channel responsivity
"""
file_name = parameters["detector"]["qe_map_filename"]
with h5py.File(file_name, "r") as f:
qe = load_signal(f[parameters["value"]])
return qe