Source code for mufasa.utils.map_divide
__author__ = 'mcychen'
from skimage.segmentation import watershed
from scipy import ndimage as ndi
from skimage.feature import peak_local_max
from skimage.morphology import binary_dilation, disk, medial_axis
#======================================================================================================================#
from .mufasa_log import get_logger
logger = get_logger(__name__)
#======================================================================================================================#
# utility functions to help divide maps in different ways
[docs]
def dist_divide(seeds, weights=None, return_nmarkers=False):
#label the peaks as distincts markers
markers, n_markers = ndi.label(seeds)
logger.debug("number of markers: {}".format(n_markers))
# map the distance between the peaks
dist = ndi.distance_transform_edt(~seeds)
if weights is None:
labels = watershed(dist, markers)
else:
labels = watershed(dist*weights, markers)
if return_nmarkers:
return labels, n_markers
else:
return labels
[docs]
def watershed_divide(image, seeds):
markers, n_markers = ndi.label(seeds)
logger.debug("number of markers: {}".format(n_markers))
return watershed(image, markers)