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(bool, order="C") except (IOError, OSError, RuntimeError): logging.info("skipping aav exclusion fraction") aav_exclusion_fraction = np.zeros( projection_density.shape, dtype=bool, order="C" ) return { "projection_density": projection_density, "projection_energy": projection_energy, "aav_exclusion_fraction": aav_exclusion_fraction, }