Source code for panoptes.pocs.scheduler.observation.dark

"""Dark frame observation helper.

Constructs a dark observation consisting of a sequence of configured exposure
lengths, saving outputs under an images/dark subdirectory.
"""

import os

from astropy import units as u

from panoptes.utils.utils import get_quantity_value, listify

from panoptes.pocs.scheduler.field import Field
from panoptes.pocs.scheduler.observation.base import Observation


[docs] class DarkObservation(Observation): """Observation subclass for taking a set of dark frames.""" def __init__(self, position, exptimes=None): """ Args: position (str): Center of field, can be anything accepted by `~astropy.coordinates.SkyCoord`. exptimes (optional): The list of exposure times. If None (default), get from config. """ # Set the exposure times if exptimes is not None: exptimes = listify(exptimes) else: exptimes = self.get_config("calibs.dark.exposure_times") self._exptimes = exptimes # Create the observation - use first exptime for initialization min_nexp = len(self._exptimes) exp_set_size = min_nexp field = Field("Dark", position=position) super().__init__( field=field, exptime=self._exptimes[0], # Pass first exptime to parent min_nexp=min_nexp, exp_set_size=exp_set_size, dark=True, ) # Specify directory root for file storage self._directory = os.path.join(self._image_dir, "dark") def __str__(self): return "DarkObservation" @property def exptime(self): """Return current exposure time as a u.Quantity.""" exptime = self._exptimes[self.current_exp_num] return get_quantity_value(exptime, u.second) * u.second