Source code for allensdk.mouse_connectivity.grid.writers

import functools

import numpy as np

from ..utilities.image_utilities import write_volume, image_from_array
from ..utilities.downsampling_utilities import downsample_average


[docs]def count_writer(gridder, grid_prefix, accumulator_prefix, target_spacings, **kwargs): paths = [] cb = functools.partial(write_volume, name='sum_pixels', prefix=accumulator_prefix, paths=paths) gridder.accumulator_to_numpy('sum_pixels', cb) ratio_and_pyramid(gridder, 'sum_projecting_pixels', 'sum_pixels', 'projection_density', accumulator_prefix, grid_prefix, target_spacings, paths=paths) ratio_and_pyramid(gridder, 'injection_sum_projecting_pixels', 'sum_pixels', 'injection_density', accumulator_prefix, grid_prefix, target_spacings, paths=paths) ratio_and_pyramid(gridder, 'injection_sum_pixels', 'sum_pixels', 'injection_fraction', accumulator_prefix, grid_prefix, target_spacings, paths=paths) ratio_and_pyramid(gridder, 'aav_exclusion_sum_pixels', 'sum_pixels', 'aav_exclusion_fraction', accumulator_prefix, grid_prefix, target_spacings, paths=paths) gridder.volumes['data_mask'] = gridder.volumes['sum_pixels'] / np.amax(gridder.volumes['sum_pixels']) del gridder.volumes['sum_pixels'] gridder.volumes['data_mask'] = gridder.volumes['data_mask'].round() handle_pyramid(gridder, 'data_mask', target_spacings, grid_prefix, paths=paths) return paths
[docs]def cav_writer(gridder, grid_prefix, accumulator_prefix, **kwargs): paths = [] cb = functools.partial(write_volume, name='cav_tracer_10', prefix=accumulator_prefix, paths=paths) gridder.accumulator_to_numpy('cav_tracer', cb) cb = functools.partial(write_volume, name='sum_pixels_10', prefix=accumulator_prefix, paths=paths) gridder.accumulator_to_numpy('sum_pixels', cb) gridder.make_ratio_volume('cav_tracer', 'sum_pixels', 'cav_density') gridder.volumes['cav_density'] = image_from_array(gridder.volumes['cav_density'], gridder.out_spacing) write_volume(gridder.volumes['cav_density'], name='cav_density_10', prefix=grid_prefix, paths=paths) del gridder.volumes['cav_density'] gridder.volumes['data_mask'] = gridder.volumes['sum_pixels'] / np.amax(gridder.volumes['sum_pixels']) del gridder.volumes['sum_pixels'] gridder.volumes['data_mask'] = gridder.volumes['data_mask'].round() gridder.volumes['data_mask'] = image_from_array(gridder.volumes['data_mask'], gridder.out_spacing) write_volume(gridder.volumes['data_mask'], name='data_mask_10', prefix=accumulator_prefix, paths=paths) del gridder.volumes return paths
[docs]def classic_writer(gridder, grid_prefix, accumulator_prefix, target_spacings, **kwargs): paths = [] cb = functools.partial(write_volume, name='sum_pixel_intensities', prefix=accumulator_prefix, paths=paths) gridder.consume_volume('sum_pixel_intensities', cb) cb = functools.partial(write_volume, name='injection_sum_pixel_intensities', prefix=accumulator_prefix, paths=paths) gridder.consume_volume('injection_sum_pixel_intensities', cb) cb = functools.partial(write_volume, name='sum_pixels', prefix=accumulator_prefix, paths=paths) gridder.accumulator_to_numpy('sum_pixels', cb) ratio_and_pyramid(gridder, 'sum_projecting_pixels', 'sum_pixels', 'projection_density', accumulator_prefix, grid_prefix, target_spacings, paths=paths) ratio_and_pyramid(gridder, 'injection_sum_projecting_pixels', 'sum_pixels', 'injection_density', accumulator_prefix, grid_prefix, target_spacings, paths=paths) ratio_and_pyramid(gridder, 'sum_projecting_pixel_intensities', 'sum_pixels', 'projection_energy', accumulator_prefix, grid_prefix, target_spacings, paths=paths) ratio_and_pyramid(gridder, 'injectionsum_projecting_pixel_intensities', 'sum_pixels', 'injection_energy', accumulator_prefix, grid_prefix, target_spacings, paths=paths) ratio_and_pyramid(gridder, 'injection_sum_pixels', 'sum_pixels', 'injection_fraction', accumulator_prefix, grid_prefix, target_spacings, paths=paths) ratio_and_pyramid(gridder, 'aav_exclusion_sum_pixels', 'sum_pixels', 'aav_exclusion_fraction', accumulator_prefix, grid_prefix, target_spacings, paths=paths) gridder.volumes['data_mask'] = gridder.volumes['sum_pixels'] / np.amax(gridder.volumes['sum_pixels']) del gridder.volumes['sum_pixels'] gridder.volumes['data_mask'] = gridder.volumes['data_mask'].round() handle_pyramid(gridder, 'data_mask', target_spacings, grid_prefix, paths=paths) return paths
[docs]def handle_pyramid(isg, key, target_spacings, prefix, paths): cspacing = isg.out_spacing[0] for tspacing in target_spacings: downsampled = downsample_average(isg.volumes[key], cspacing, tspacing) write_volume(image_from_array(downsampled, [tspacing] * 3), key, prefix=prefix, specify_resolution=tspacing, paths=paths) del isg.volumes[key]
[docs]def ratio_and_pyramid(isg, num, den, out, accumulator_prefix, grid_prefix, target_spacings, paths): cb = functools.partial(write_volume, name=num, prefix=accumulator_prefix, paths=paths) isg.accumulator_to_numpy(num, cb) isg.make_ratio_volume(num, den, out) del isg.volumes[num] handle_pyramid(isg, out, target_spacings, grid_prefix, paths)