Source code for allensdk.internal.mouse_connectivity.projection_thumbnail.volume_utilities

from __future__ import division

import logging

import SimpleITK as sitk
import numpy as np


[docs]def sitk_get_image_parameters(volume): return (np.array(volume.GetSpacing()), np.array(volume.GetSize()), np.array(volume.GetOrigin()))
[docs]def sitk_get_center(volume): _, size, _ = sitk_get_image_parameters(volume) return (size - 1) / 2
[docs]def sitk_get_size_parity(volume): _, size, _ = sitk_get_image_parameters(volume) return np.mod(size, 2)
[docs]def sitk_get_diagonal_length(volume): _, size, _ = sitk_get_image_parameters(volume) return np.linalg.norm(size)
[docs]def sitk_paste_into_center(smaller, larger): smaller_parities = sitk_get_size_parity(smaller) larger_parities = sitk_get_size_parity(larger) if not np.allclose(smaller_parities, larger_parities): logging.warn('parities differ, result will not be centered : {0}, {1}'.format(smaller_parities, larger_parities)) smaller_center = sitk_get_center(smaller) larger_center = sitk_get_center(larger) offset = np.around(larger_center - smaller_center).astype(int).tolist() return sitk.Paste(larger, smaller, smaller.GetSize(), [0, 0, 0,], offset)