In def differentiable_voronoi when boundaries is not None, clipped_vertices_dict could sometimes result in empty tensor (tensor([], size=(0, 2))).
One solution to not catch the assertion in calc_lengths_of_voronoi_edges_adjacent_to_vertices_to_crop in find_the_common_side_of_the_two_voronoi_regions(region1, region2) is to update the function like this:
from
--->
def calc_lengths_of_voronoi_edges_adjacent_to_vertices_to_crop(edges,
clipped_vertices_dict,
edges_unique):
lengths_of_voronoi_edges = torch.zeros(len(edges_unique))
edges_to_delete = np.full(len(edges_unique), False)
for e in edges:
i, j = edges_unique[e]
region1 = clipped_vertices_dict[i]
region2 = clipped_vertices_dict[j]
is_adjacent, length = find_the_common_side_of_the_two_voronoi_regions(region1, region2)
if is_adjacent:
lengths_of_voronoi_edges[e] = length
else:
edges_to_delete[e] = True
return lengths_of_voronoi_edges, edges_to_delete
to
--->
def calc_lengths_of_voronoi_edges_adjacent_to_vertices_to_crop(edges,
clipped_vertices_dict,
edges_unique):
lengths_of_voronoi_edges = torch.zeros(len(edges_unique))
edges_to_delete = np.full(len(edges_unique), False)
for e in edges:
i, j = edges_unique[e]
region1 = clipped_vertices_dict[i]
region2 = clipped_vertices_dict[j]
if region1.nelement() == 0 or region2.nelement() == 0:
edges_to_delete[e] = True
continue
is_adjacent, length = find_the_common_side_of_the_two_voronoi_regions(region1, region2)
if is_adjacent:
lengths_of_voronoi_edges[e] = length
else:
edges_to_delete[e] = True
return lengths_of_voronoi_edges, edges_to_delete
In def differentiable_voronoi when boundaries is not None, clipped_vertices_dict could sometimes result in empty tensor (tensor([], size=(0, 2))).
One solution to not catch the assertion in calc_lengths_of_voronoi_edges_adjacent_to_vertices_to_crop in find_the_common_side_of_the_two_voronoi_regions(region1, region2) is to update the function like this:
from --->
to --->