Source code for allensdk.mouse_connectivity.grid.subimage.count_subimage

from __future__ import division
import logging
import sys
import functools

import numpy as np
from scipy.ndimage.interpolation import zoom
from six import iteritems

from allensdk.mouse_connectivity.grid.utilities import image_utilities as iu
from .base_subimage import PolygonSubImage, SegmentationSubImage


[docs]class CountSubImage(SegmentationSubImage, PolygonSubImage): required_polys = ['missing_tile', 'no_signal', 'aav_exclusion'] required_segmentations = ['segmentation'] def __init__(self, reduce_level, in_dims, in_spacing, coarse_spacing, polygon_info, segmentation_paths, injection_polygon_key='aav_tracer', *args, **kwargs): super(CountSubImage, self).__init__(reduce_level, in_dims, in_spacing, coarse_spacing, polygon_info=polygon_info, segmentation_paths=segmentation_paths, *args, **kwargs) self.injection_polygon_key = injection_polygon_key
[docs] def process_segmentation(self): self.apply_mask('segmentation', 'missing_tile', False) self.extract_signal_from_segmentation(signal_name='projection') self.apply_mask('projection', 'no_signal', False) del self.images['no_signal'] if self.injection_polygon_key in self.images: self.images['injection'] = self.images[self.injection_polygon_key] del self.images[injection_polygon_key] else: self.extract_injection_from_segmentation() del self.images['segmentation'] self.binarize('projection') self.binarize('injection')
[docs] def compute_injection(self): logging.info('computing injection accumulators') self.apply_pixel_counter('injection_sum_pixels', self.images['injection']) injection_projecting_pixels = np.logical_and(self.images['injection'], self.images['projection']) self.apply_pixel_counter('injection_sum_projecting_pixels', injection_projecting_pixels) del injection_projecting_pixels del self.images['injection']
[docs] def compute_projection(self): logging.info('computing projection accumulators') self.apply_pixel_counter('sum_projecting_pixels', self.images['projection']) del self.images['projection']
[docs] def compute_sum_pixels(self): logging.info('computing sum pixel accumulators') self.apply_pixel_counter('sum_pixels', np.logical_not(self.images['missing_tile'])) if 'aav_exclusion' in self.images: self.apply_pixel_counter('aav_exclusion_sum_pixels', self.images['aav_exclusion'])
[docs] def compute_coarse_planes(self): self.compute_injection() self.compute_projection() self.compute_sum_pixels() del self.images