def test_n_closest_points(): labels = cle.push( np.asarray([[1, 1, 1, 3, 3, 3], [1, 1, 1, 3, 3, 3], [1, 1, 1, 3, 3, 3], [0, 0, 0, 2, 2, 2], [0, 0, 0, 2, 2, 2], [0, 0, 0, 2, 2, 2]])) reference = cle.push(np.asarray([[0, 3, 3, 1]])) centroids = cle.centroids_of_labels(labels) distance_matrix = cle.generate_distance_matrix(centroids, centroids) max_float = np.finfo(np.float).max cle.set_where_x_equals_y(distance_matrix, max_float) cle.set_row(distance_matrix, 0, max_float) cle.set_column(distance_matrix, 0, max_float) n_closest_points = cle.n_closest_points(distance_matrix, n=1, ignore_background=False) a = cle.pull(n_closest_points) b = cle.pull(reference) print(a) print(b) assert (np.allclose(a, b, 0.01))
def test_centroids_of_labels_3d(): labels = cle.push(np.asarray([[ [1, 1, 2], ], [ [1, 2, 2], ], [[3, 3, 3]]])) reference = cle.push( np.asarray([ # CENTROID_X(25), [0.33333334, 1.6666666, 1.], # CENTROID_Y(26), [0., 0., 0.], # CENTROID_Z(27), [0.33333334, 0.6666667, 2.], ])) result = cle.centroids_of_labels(labels) a = cle.pull(result) b = cle.pull(reference) print(a) print(b) assert (np.allclose(a, b, 0.0001))
def _make_distance_matrix(self, labels, distance_matrix=None): if distance_matrix is None: import pyclesperanto_prototype as cle centroids = cle.centroids_of_labels(labels) distance_matrix = cle.generate_distance_matrix( centroids, centroids) cle.set_column(distance_matrix, 0, 0) cle.set_row(distance_matrix, 0, 0) return distance_matrix
def test_to_networkx(): import pyclesperanto_prototype as cle labels = cle.push(np.asarray([[0, 1], [2, 3]])) # extract centroid positions centroids = cle.centroids_of_labels(labels) # determine a distance matrix distance_matrix = cle.generate_distance_matrix(centroids, centroids) # threshold the distance matrix adjacency_matrix = cle.generate_proximal_neighbors_matrix(distance_matrix, max_distance=50) nx_graph = cle.to_networkx(adjacency_matrix, centroids) assert len(nx_graph.nodes) == 3
def test_maximum_distance_of_n_shortest_distances(): labels = cle.push( np.asarray([[1, 1, 1, 3, 3, 3], [1, 1, 1, 3, 3, 3], [1, 1, 1, 3, 3, 3], [0, 0, 0, 2, 2, 2], [0, 0, 0, 2, 2, 2], [0, 0, 0, 2, 2, 2]])) reference = cle.push(np.asarray([[0, 3, 3, 3]])) centroids = cle.centroids_of_labels(labels) distance_matrix = cle.generate_distance_matrix(centroids, centroids) maximum_distance_of_n_far_off_distances = cle.maximum_distance_of_n_shortest_distances( distance_matrix, n=1) a = cle.pull(maximum_distance_of_n_far_off_distances) b = cle.pull(reference) print(a) print(b) assert (np.allclose(a, b, 0.01))
def test_average_distance_of_touching_neighbors(): labels = cle.push( np.asarray([[1, 1, 1, 3, 3, 3], [1, 1, 1, 3, 3, 3], [1, 1, 1, 3, 3, 3], [0, 0, 0, 2, 2, 2], [0, 0, 0, 2, 2, 2], [0, 0, 0, 2, 2, 2]])) reference = cle.push(np.asarray([[0, 3, 3, 3]])) centroids = cle.centroids_of_labels(labels) distance_matrix = cle.generate_distance_matrix(centroids, centroids) touch_matrix = cle.generate_touch_matrix(labels) average_distance_of_touching_neighbors = cle.average_distance_of_touching_neighbors( distance_matrix, touch_matrix) a = cle.pull(average_distance_of_touching_neighbors) b = cle.pull(reference) print(a) print(b) assert (np.allclose(a, b, 0.01))