Source code for exosim.tasks.instrument.loadWavelengthSolution
import astropy.units as u
from astropy.table import QTable
from exosim.tasks.task import Task
[docs]class LoadWavelengthSolution(Task):
"""
It loads the wavelength solution expressed as a table with wavelength position on spectral and spatial directcions
Returns
--------
:class:`~astropy.table.Qtable`
wavelength solution table
Raises
-------
TypeError:
if the output is not a :class:`~astropy.table.QTable` class
UnitsError
if the output has not the right units (micron) in every column
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
channel parameter dictionary. This is usually parsed from :class:`~exosim.tasks.load.loadOptions.LoadOptions`
"""
self.add_task_param("parameters", "channel parameters dict")
[docs] def execute(self):
parameters = self.get_task_param("parameters")
wl_solution = self.model(parameters)
if not isinstance(wl_solution, QTable):
self.error("wrong output format")
raise TypeError("wrong output format")
for k in ["wavelength", "spectral", "spatial"]:
if k not in wl_solution.keys():
self.error("missing {} keyword".format(k))
raise KeyError("missing {} keyword".format(k))
elif wl_solution[k].unit != u.um:
self.error("wrong units: {} units are not micron".format(k))
raise u.UnitsError(
"wrong units: {} units are not micron".format(k)
)
self.set_output(wl_solution)
[docs] def model(self, parameters):
"""
It loads the Wavelength, X and Y columns from a file and it stores them into a class:`~astropy.table.Qtable` class
Parameters
----------
parameters: dict
channel parameter dictionary. This is usually parsed from :class:`~exosim.tasks.load.loadOptions.LoadOptions`
Returns
--------
:class:`~astropy.table.Qtable`
wavelength solution table
"""
wl_solution = QTable()
wl_solution["wavelength"] = parameters["wl_solution"]["data"][
"Wavelength"
]
wl_solution["spectral"] = parameters["wl_solution"]["data"]["x"]
wl_solution["spatial"] = parameters["wl_solution"]["data"]["y"]
return wl_solution