Source code for allensdk.internal.mouse_connectivity.interval_unionize.data_utilities
import logging
#import SimpleITK as sitk
import nrrd
import numpy as np
#def read(path):
# return np.swapaxes(sitk.GetArrayFromImage(sitk.ReadImage(str(path))), 0, 2)
[docs]def read(path):
return np.ascontiguousarray(nrrd.read(path)[0])
[docs]def load_annotation(annotation_path, data_mask_path=None):
'''Read data files segmenting the reference space into regions of valid
and invalid data, then further among brain structures
'''
logging.info('getting annotation')
annotation = read(annotation_path)
logging.info('casting to signed')
# It shouldn't matter now, but there may be future structures with ids
# sufficiently large that we need that extra bit
logging.debug('max annotated value: {0}'.format(np.amax(annotation)))
annotation = annotation.astype(np.int32)
logging.debug('max annotated value: {0}'.format(np.amax(annotation)))
logging.info('negating left hemisphere')
logging.debug('min annotated value: {0}'.format(np.amin(annotation)))
lr_mid = int( np.round(annotation.shape[2] / 2) )
annotation[:, :, :lr_mid] = annotation[:, :, :lr_mid] * -1
logging.debug('min annotated value: {0}'.format(np.amin(annotation)))
if data_mask_path is not None:
logging.info('getting_data_mask')
data_mask =read(data_mask_path)
logging.info('applying data mask')
annotation[np.logical_not(data_mask)] = 0
return annotation
[docs]def get_sum_pixels(sum_pixels_path):
logging.info('getting sum_pixels')
return {'sum_pixels': read(sum_pixels_path)}
[docs]def get_sum_pixel_intensities(sum_pixel_intensities_path, injection_sum_pixel_intensities_path):
logging.info('getting sum pixel intensities')
return {'sum_pixel_intensities': read(sum_pixel_intensities_path),
'injection_sum_pixel_intensities': read(injection_sum_pixel_intensities_path)}
[docs]def get_cav_density(cav_density_path):
logging.info('getting cav density')
return {'cav_density': read(cav_density_path)}
[docs]def get_injection_data(injection_fraction_path, injection_density_path,
injection_energy_path):
'''Read nrrd files containing injection signal data
'''
logging.info('getting injection_fraction')
injection_fraction = read(injection_fraction_path)
logging.info('getting injection_sum_projecting_pixels')
injection_density = read(injection_density_path)
logging.info('getting injection_energy')
injection_energy = read(injection_energy_path)
return {'injection_fraction': injection_fraction,
'injection_density': injection_density,
'injection_energy': injection_energy}
[docs]def get_projection_data(projection_density_path, projection_energy_path,
aav_exclusion_fraction_path=None):
'''Read nrrd files containing global signal data
'''
logging.info('getting projection density')
projection_density = read(projection_density_path)
logging.info('getting projection energy')
projection_energy = read(projection_energy_path)
try:
logging.info('getting aav exclusion fraction')
aav_exclusion_fraction = read(aav_exclusion_fraction_path)
aav_exclusion_fraction[aav_exclusion_fraction > 0] = 1
aav_exclusion_fraction = aav_exclusion_fraction.astype(np.bool_, order='C')
except (IOError, OSError, RuntimeError):
logging.info('skipping aav exclusion fraction')
aav_exclusion_fraction = np.zeros(projection_density.shape, dtype=np.bool_, order='C')
return {'projection_density': projection_density,
'projection_energy': projection_energy,
'aav_exclusion_fraction': aav_exclusion_fraction}