Source code for exosim.tools.deadPixelsMap

import os

import numpy as np
from astropy.io import ascii
from astropy.table import Table

from exosim.utils import RunConfig

from .exosimTool import ExoSimTool


[docs]class DeadPixelsMap(ExoSimTool): """ Produces the channel dead pixel map Returns -------- dict channels' dead pixels maps Raises ------ TypeError: if the output is not a :class:`~astropy.table.Table` class Examples ---------- >>> import exosim.tools as tools >>> >>> tools.DeadPixelsMap(options_file='tools_input_example.xml', >>> output='./') """ def __init__(self, options_file, output=None): """ Parameters __________ parameters: dict dictionary containing the parameters. This is usually parsed from :class:`~exosim.tasks.load.loadOptions.LoadOptions` output: str (optional) output directory """ super().__init__(options_file) self.info("creating dead pixel map") for ch in self.ch_list: dp_map = self.model(self.ch_param[ch]) self.results.update({ch: dp_map}) self.debug("dead pixel map: {}".format(dp_map)) if output: fname = os.path.join(output, "dp_map_{}.csv".format(ch)) ascii.write( dp_map, fname, format="ecsv", overwrite=True, delimiter=",", ) self.info("dead pixels map stored in {}".format(fname))
[docs] def model(self, parameters): """ Parameters ---------- parameters: dict dictionary contained the sources parameters. This is usually parsed from :class:`~exosim.tasks.load.loadOptions.LoadOptions` Returns -------- :class:`~astropy.table.Table` channel dead pixel coordinates """ # detector map y_size = parameters["detector"]["spatial_pix"] x_size = parameters["detector"]["spectral_pix"] if "dp_sigma" in parameters["detector"].keys(): number_dead_pixels = RunConfig.random_generator.normal( loc=parameters["detector"]["dp_mean"], scale=parameters["detector"]["dp_sigma"], size=1, ).astype(int) else: number_dead_pixels = parameters["detector"]["dp_mean"] x_coords = RunConfig.random_generator.integers( 0, x_size - 1, size=number_dead_pixels ) y_coords = RunConfig.random_generator.integers( 0, y_size - 1, size=number_dead_pixels ) tab = Table() tab["spatial_coords"] = y_coords tab["spectral_coords"] = x_coords return tab