Ejemplo n.º 1
0
    def do_stage(self, image):
        master_calibration_filename = self.get_calibration_filename(image)

        if master_calibration_filename is None:
            self.on_missing_master_calibration(image)
            return image

        master_calibration_image = FRAME_CLASS(
            self.runtime_context, filename=master_calibration_filename)
        try:
            image_utils.check_image_homogeneity(
                [image, master_calibration_image],
                self.master_selection_criteria)
        except image_utils.InhomogeneousSetException as e:
            logger.error(
                'Master calibration was not the same format as the input: {0}'.
                format(e),
                image=image,
                extra_tags={
                    'master_calibration':
                    os.path.basename(master_calibration_filename)
                })
            return None
        logger.info('Applying master calibration',
                    image=image,
                    extra_tags={
                        'master_calibration':
                        os.path.basename(master_calibration_filename)
                    })
        return self.apply_master_calibration(image, master_calibration_image)
Ejemplo n.º 2
0
def throws_inhomogeneous_set_exception(image1,
                                       image2,
                                       keyword,
                                       additional_group_by_attributes=None):
    with pytest.raises(
            image_utils.InhomogeneousSetException) as exception_info:
        image_utils.check_image_homogeneity([image1, image2],
                                            additional_group_by_attributes)
    assert 'Images have different {0}s'.format(keyword) == str(
        exception_info.value)
Ejemplo n.º 3
0
    def do_stage(self, image):
        master_calibration_filename = self.get_calibration_filename(image)

        if master_calibration_filename is None:
            self.on_missing_master_calibration(image)
            return image

        master_calibration_image = FRAME_CLASS(self.runtime_context, filename=master_calibration_filename)
        try:
            image_utils.check_image_homogeneity([image, master_calibration_image], self.master_selection_criteria)
        except image_utils.InhomogeneousSetException:
            logger.error(logs.format_exception(), image=image)
            return None

        return self.apply_master_calibration(image, master_calibration_image)
Ejemplo n.º 4
0
    def do_stage(self, images):
        if len(images) < self.min_images:
            # Do nothing
            self.logger.warning('Not enough images to combine.')
            return []
        else:
            image_config = image_utils.check_image_homogeneity(images)
            logging_tags = logs.image_config_to_tags(image_config, self.group_by_keywords)

            return self.make_master_calibration_frame(images, image_config, logging_tags)
Ejemplo n.º 5
0
    def do_stage(self, images):
        if len(images) < self.min_images:
            # Do nothing
            self.logger.warning('Not enough images to combine.')
            return []
        else:
            image_config = image_utils.check_image_homogeneity(images)
            logging_tags = logs.image_config_to_tags(image_config, self.group_by_keywords)

            return self.make_master_calibration_frame(images, image_config, logging_tags)
Ejemplo n.º 6
0
    def do_stage(self, images):
        try:
            min_images = settings.CALIBRATION_MIN_FRAMES[self.calibration_type.upper()]
        except KeyError:
            msg = 'The minimum number of frames required to create a master calibration of type ' \
                  '{calibration_type} has not been specified in the settings.'
            logger.error(msg.format(calibration_type=self.calibration_type.upper()))
            return []
        if len(images) < min_images:
            # Do nothing
            msg = 'Number of images less than minimum requirement of {min_images}, not combining'
            logger.warning(msg.format(min_images=min_images))
            return []
        try:
            image_utils.check_image_homogeneity(images, self.group_by_attributes())
        except image_utils.InhomogeneousSetException:
            logger.error(logs.format_exception())
            return []

        return [self.make_master_calibration_frame(images)]
Ejemplo n.º 7
0
    def do_stage(self, images):
        try:
            min_images = settings.CALIBRATION_MIN_FRAMES[
                self.calibration_type.upper()]
        except KeyError:
            msg = 'The minimum number of frames required to create a master calibration of type ' \
                  '{calibration_type} has not been specified in the settings.'
            logger.error(
                msg.format(calibration_type=self.calibration_type.upper()))
            return []
        if len(images) < min_images:
            # Do nothing
            msg = 'Number of images less than minimum requirement of {min_images}, not combining'
            logger.warning(msg.format(min_images=min_images))
            return []
        try:
            image_utils.check_image_homogeneity(images,
                                                self.group_by_attributes())
        except image_utils.InhomogeneousSetException:
            logger.error(logs.format_exception())
            return []

        return [self.make_master_calibration_frame(images)]
Ejemplo n.º 8
0
    def do_stage(self, images):
        if len(images) == 0:
            # Abort!
            return []
        else:
            image_config = image_utils.check_image_homogeneity(images)
            logging_tags = logs.image_config_to_tags(image_config, self.group_by_keywords)
            master_calibration_filename = self.get_calibration_filename(images[0])

            if master_calibration_filename is None:
                self.logger.error('Master Calibration file does not exist for {stage}'.format(stage=self.stage_name),
                                  extra=logging_tags)
                raise MasterCalibrationDoesNotExist

            master_calibration_image = Image(self.pipeline_context,
                                             filename=master_calibration_filename)
            return self.apply_master_calibration(images, master_calibration_image, logging_tags)
Ejemplo n.º 9
0
    def do_stage(self, images):
        if len(images) == 0:
            # Abort!
            return []
        else:
            image_config = image_utils.check_image_homogeneity(images)
            logging_tags = logs.image_config_to_tags(image_config, self.group_by_keywords)
            master_calibration_filename = self.get_calibration_filename(images[0])

            if master_calibration_filename is None:
                self.logger.error('Master Calibration file does not exist for {stage}'.format(stage=self.stage_name),
                                  extra=logging_tags)
                raise MasterCalibrationDoesNotExist

            master_calibration_image = Image(self.pipeline_context,
                                             filename=master_calibration_filename)
            return self.apply_master_calibration(images, master_calibration_image, logging_tags)
Ejemplo n.º 10
0
def throws_inhomogeneous_set_exception(image1, image2,  keyword, additional_group_by_attributes=None):
    with pytest.raises(image_utils.InhomogeneousSetException) as exception_info:
        image_utils.check_image_homogeneity([image1, image2], additional_group_by_attributes)
    assert 'Images have different {0}s'.format(keyword) == str(exception_info.value)