Newer
Older
import numpy as np
def trap_apply(cell_fun, cell_masks, trap_image, **kwargs):
"""
Apply a cell_function to a mask, trap_image pair
:param cell_fun: function to apply to a cell (from extraction/cell.py)
:param cell_masks: (numpy 3d array) cells' segmentation mask
:param trap_image: the image for the trap in which the cell is (all
channels)
:**kwargs: parameters to pass if needed for custom functions
"""
cells_iter = (*range(cell_masks.shape[2]),)
return [
cell_fun(cell_masks[..., i], trap_image, **kwargs) for i in cells_iter
]
def reduce_z(trap_image, fun):
# Optimise the reduction function if possible
if isinstance(fun, np.ufunc):
return fun.reduce(trap_image, axis=2)
else:
return np.apply_along_axis(fun, 2, trap_image)