Skip to content
how_this_code_will_be_used.py 1.8 KiB
Newer Older
BO ZHANG's avatar
BO ZHANG committed
import joblib
from astropy.io import fits
from csst.core.processor import CsstProcessor
from csst.msc.data_manager import CsstMscDataManager

BO ZHANG's avatar
BO ZHANG committed
from csst_proto.api import flip_image
BO ZHANG's avatar
BO ZHANG committed


class CsstProcFlipImage(CsstProcessor):
BO ZHANG's avatar
BO ZHANG committed
    """ This processor flips images """
BO ZHANG's avatar
BO ZHANG committed

    def __init__(self, dm: CsstMscDataManager, n_jobs: int = 1):
BO ZHANG's avatar
BO ZHANG committed
        """

        Parameters
        ----------
        dm:
            csst data manager, used to manage the input/output file paths
        n_jobs:
            number of jobs launched
        """
BO ZHANG's avatar
BO ZHANG committed
        super(CsstProcFlipImage, self).__init__()
        self.dm = dm
        self.n_jobs = n_jobs

    def run(self, debug: bool = False):
BO ZHANG's avatar
BO ZHANG committed
        """ flip images for all detectors
BO ZHANG's avatar
BO ZHANG committed

        Parameters
        ----------
        debug:
            if True, use debug mode

        Returns
        -------
BO ZHANG's avatar
BO ZHANG committed
        a list of flipped images
BO ZHANG's avatar
BO ZHANG committed
        """
        img_flipped_list = joblib.Parallel(n_jobs=self.n_jobs)(
BO ZHANG's avatar
BO ZHANG committed
            joblib.delayed(CsstProcFlipImage.run_one_detector)(this_ccd_id)
BO ZHANG's avatar
BO ZHANG committed
            for this_ccd_id in self.dm.target_ccd_ids)
        return img_flipped_list

    def prepare(self, **kwargs):
        """ prepare the environment """
        return

    def cleanup(self):
        """ clean up the environment """
        return

    @staticmethod
BO ZHANG's avatar
BO ZHANG committed
    def run_one_detector(dm: CsstMscDataManager, ccd_id: int = 6):
BO ZHANG's avatar
BO ZHANG committed
        """ run for one detector
BO ZHANG's avatar
BO ZHANG committed

BO ZHANG's avatar
BO ZHANG committed
        Parameters
        ----------
        dm:
            csst data manager, used to manage the input/output file paths
        ccd_id:
            detector id

        Returns
        -------
        the flipped image
BO ZHANG's avatar
BO ZHANG committed
        """
        # input file path
        fp_input = dm.l1_ccd(ccd_id, post="img.fits")
        img_input = fits.getdata(fp_input)
        # flip image
        img_flipped = flip_image(img_input)
        return img_flipped