Source code for mirar.processors.sky

"""
Module for sky subtraction
"""
import logging

import numpy as np

from mirar.data import ImageBatch
from mirar.paths import SATURATE_KEY
from mirar.processors.base_processor import ProcessorPremadeCache
from mirar.processors.flat import SkyFlatCalibrator

logger = logging.getLogger(__name__)


[docs] class NightSkyMedianCalibrator(SkyFlatCalibrator): """ Processor for sky subtraction """ base_key = "sky" def _apply_to_images( self, batch: ImageBatch, ) -> ImageBatch: master_sky = self.get_cache_file(batch) mask = master_sky.get_data() <= self.flat_nan_threshold if np.sum(mask) > 0: data = master_sky.get_data() data[mask] = np.nan master_sky.set_data(data) for image in batch: data = image.get_data() header = image.get_header() subtract_median = np.nanmedian(data) data = data - subtract_median * master_sky.get_data() header.append( ("SKMEDSUB", subtract_median, "Median sky level subtracted"), end=True ) if SATURATE_KEY in image.header: # image[SATURATE_KEY] -= subtract_median image[SATURATE_KEY] = 25000 image.set_data(data) image.set_header(header) return batch def __str__(self) -> str: return ( "Processor to create a median sky background map," "and subtract this from images." )
[docs] class MasterSkyCalibrator(ProcessorPremadeCache, NightSkyMedianCalibrator): """ Processor to subtract a master sky image """