Source code for allensdk.internal.mouse_connectivity.projection_thumbnail.projection_functions
from __future__ import division
import SimpleITK as sitk
from six.moves import xrange
import numpy as np
[docs]def convert_axis(axis):
return 2 - axis
[docs]def max_projection(volume, axis, *a, **k):
volume = sitk.GetArrayFromImage(volume)
axis = convert_axis(axis)
return np.amax(volume, axis), np.argmax(volume, axis)
[docs]def template_projection(volume, axis, gain=2, maxv=1, *a, **k):
volume = sitk.GetArrayFromImage(volume)
axis = convert_axis(axis)
output_shape = list(volume.shape)
del output_shape[axis]
output = np.zeros(output_shape, dtype=float)
for ii in xrange(volume.shape[axis]):
current = volume.take(ii, axis)
output = np.multiply(output, (maxv - current) / maxv)
output += gain * np.multiply(current, current) / maxv
return output