From 81c06cfcc0e5a857010f77c85e313a26dc3b6401 Mon Sep 17 00:00:00 2001 From: Guillaume Cerutti <guillaume.cerutti@inria.fr> Date: Thu, 9 Nov 2023 16:36:54 +0100 Subject: [PATCH] optimizations after profiling... --- src/cellcomplex/property_topomesh/example_topomesh.py | 2 +- src/cellcomplex/property_topomesh/utils/matching_tools.py | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/cellcomplex/property_topomesh/example_topomesh.py b/src/cellcomplex/property_topomesh/example_topomesh.py index f6670bf..ab475b9 100644 --- a/src/cellcomplex/property_topomesh/example_topomesh.py +++ b/src/cellcomplex/property_topomesh/example_topomesh.py @@ -742,7 +742,7 @@ def circle_voronoi_topomesh(size = 1,cell_size = 1.,circle_size = 100.,z_coef = iterations = n_cells//2 for iteration in range(iterations): - cell_to_cell_vectors = np.array([[p-q for q in cell_points] for p in cell_points]) + cell_to_cell_vectors = cell_points[np.newaxis] - cell_points[:, np.newaxis] cell_to_cell_distances = np.linalg.norm(cell_to_cell_vectors,axis=2)/radius cell_to_circle_vectors = np.array([[p-q for q in circle_points] for p in cell_points]) cell_to_circle_distances = np.linalg.norm(cell_to_circle_vectors,axis=2)/radius diff --git a/src/cellcomplex/property_topomesh/utils/matching_tools.py b/src/cellcomplex/property_topomesh/utils/matching_tools.py index fb51323..5c1b0e0 100644 --- a/src/cellcomplex/property_topomesh/utils/matching_tools.py +++ b/src/cellcomplex/property_topomesh/utils/matching_tools.py @@ -26,9 +26,8 @@ def brute_force_match(obs, codebook): return (np.argmin(distance_matrix,axis=1),np.min(distance_matrix,axis=1)) def kd_tree_match(obs, codebook, radius=1e-5): - data = cKDTree(obs) - res1 = data.query_ball_tree(cKDTree(codebook), radius, 2, radius) - res1 = np.array([r[np.argmin(np.linalg.norm(codebook[r] - o,axis=1))] if len(r)>0 else None for o,r in zip(obs,res1)]) + code = cKDTree(codebook) + res1 = code.query(obs, k=1, distance_upper_bound=radius)[1] return res1 def vector_quantization_match(obs, codebook): -- GitLab