# HG changeset patch # User imgteam # Date 1727199020 0 # Node ID 5907be5a8d7ce7edf7663ab61918aa9c7fe9de04 # Parent 2d1de6e7b1137c9d0fd9a08916a062fd74c4ef35 planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/colorize_labels commit 4344f548f365dba87c20188d6e3c2df8630d2313 diff -r 2d1de6e7b113 -r 5907be5a8d7c colorize_labels.py --- a/colorize_labels.py Wed Apr 24 08:12:15 2024 +0000 +++ b/colorize_labels.py Tue Sep 24 17:30:20 2024 +0000 @@ -1,12 +1,11 @@ import argparse import giatools.io -import matplotlib.colors as mpl +import matplotlib.pyplot as plt import networkx as nx import numpy as np import scipy.ndimage as ndi import skimage.io -import skimage.morphology as morph import skimage.util @@ -22,7 +21,6 @@ def build_label_adjacency_graph(im, radius, bg_label): G = nx.Graph() - selem = morph.disk(radius) for label in np.unique(im): if label == bg_label: @@ -31,7 +29,7 @@ G.add_node(label) cc = (im == label) - neighborhood = ndi.binary_dilation(cc, selem) + neighborhood = (ndi.distance_transform_edt(~cc) <= radius) adjacent_labels = np.unique(im[neighborhood]) for adjacent_label in adjacent_labels: @@ -45,6 +43,18 @@ return G +def get_n_unique_mpl_colors(n, colormap='jet', cyclic=False): + """ + Yields `n` unique colors from the given `colormap`. + + Set `cyclic` to `True` if the `colormap` is cyclic. + """ + cmap = plt.get_cmap(colormap) + m = n if cyclic else n - 1 + for i in range(n): + yield np.multiply(255, cmap(i / m)) + + if __name__ == '__main__': parser = argparse.ArgumentParser() @@ -68,7 +78,7 @@ unique_colors = frozenset(graph_coloring.values()) # Assign colors to nodes based on the greedy coloring - graph_color_to_mpl_color = dict(zip(unique_colors, mpl.TABLEAU_COLORS.values())) + graph_color_to_mpl_color = dict(zip(unique_colors, get_n_unique_mpl_colors(len(unique_colors)))) node_colors = [graph_color_to_mpl_color[graph_coloring[n]] for n in G.nodes()] # Render result @@ -77,7 +87,6 @@ for label, label_color in zip(G.nodes(), node_colors): cc = (im == label) - label_color = color_hex_to_rgb_tuple(label_color) for ch in range(3): result[:, :, ch][cc] = label_color[ch] diff -r 2d1de6e7b113 -r 5907be5a8d7c colorize_labels.xml --- a/colorize_labels.xml Wed Apr 24 08:12:15 2024 +0000 +++ b/colorize_labels.xml Tue Sep 24 17:30:20 2024 +0000 @@ -4,7 +4,7 @@ creators.xml tests.xml 3.2.1 - 2 + 3 @@ -43,6 +43,7 @@ + @@ -52,6 +53,7 @@ + @@ -61,6 +63,16 @@ + + + + + + + + + + diff -r 2d1de6e7b113 -r 5907be5a8d7c creators.xml --- a/creators.xml Wed Apr 24 08:12:15 2024 +0000 +++ b/creators.xml Tue Sep 24 17:30:20 2024 +0000 @@ -5,6 +5,11 @@ + + + + + diff -r 2d1de6e7b113 -r 5907be5a8d7c test-data/input3.tif Binary file test-data/input3.tif has changed diff -r 2d1de6e7b113 -r 5907be5a8d7c test-data/output1.png Binary file test-data/output1.png has changed diff -r 2d1de6e7b113 -r 5907be5a8d7c test-data/output2.png Binary file test-data/output2.png has changed diff -r 2d1de6e7b113 -r 5907be5a8d7c test-data/output3.png Binary file test-data/output3.png has changed