From 41be0fabcdad6d243efdce5b29f64a97dcb6b428 Mon Sep 17 00:00:00 2001 From: Sebastian Achim Mueller Date: Fri, 7 Jun 2024 10:17:03 +0200 Subject: [PATCH] do not compute lixel_polygons all the time. Only compute and store them when they are needed. --- .../LightFieldGeometry.py | 42 +++++++++---------- plenopy/plot/light_field_geometry.py | 10 ++++- plenopy/version.py | 2 +- 3 files changed, 30 insertions(+), 24 deletions(-) diff --git a/plenopy/light_field_geometry/LightFieldGeometry.py b/plenopy/light_field_geometry/LightFieldGeometry.py index 442e1cd..e2fb19c 100644 --- a/plenopy/light_field_geometry/LightFieldGeometry.py +++ b/plenopy/light_field_geometry/LightFieldGeometry.py @@ -109,7 +109,6 @@ def __init__(self, path): self._read_lixel_positions(os.path.join(path, "lixel_positions.bin")) self._read_lixel_statistics(os.path.join(path, "lixel_statistics.bin")) self._calc_pixel_and_paxel_average_positions() - self._init_lixel_polygons() self.valid_efficiency = self.most_efficient_lixels(0.95) self._init_time_delay_image() @@ -182,27 +181,6 @@ def _read_lixel_positions(self, path): self.lixel_positions_x = lp[:, 0] self.lixel_positions_y = lp[:, 1] - def _init_lixel_polygons(self): - s32 = np.sqrt(3) / 2.0 - - poly_template = np.array( - [ - [0, 1], - [-s32, 0.5], - [-s32, -0.5], - [0, -1], - [s32, -0.5], - [s32, 0.5], - ] - ) - poly_template *= self.lixel_outer_radius - - lixel_centers_xy = np.array( - [self.lixel_positions_x, self.lixel_positions_y] - ) - - self.lixel_polygons = [xy + poly_template for xy in lixel_centers_xy.T] - def most_efficient_lixels(self, fraction): """ Returns a boolean mask (shape=[numnper_pixel, number_paxel]) of @@ -258,3 +236,23 @@ def __repr__(self): out += str(self.number_paxel) + " paxel" out += ")" return out + + +def init_lixel_polygons( + lixel_positions_x, lixel_positions_y, lixel_outer_radius +): + s32 = np.sqrt(3) / 2.0 + poly_template = np.array( + [ + [0, 1], + [-s32, 0.5], + [-s32, -0.5], + [0, -1], + [s32, -0.5], + [s32, 0.5], + ] + ) + poly_template *= lixel_outer_radius + lixel_centers_xy = np.array([lixel_positions_x, lixel_positions_y]) + lixel_polygons = [xy + poly_template for xy in lixel_centers_xy.T] + return lixel_polygons diff --git a/plenopy/plot/light_field_geometry.py b/plenopy/plot/light_field_geometry.py index 32ef822..ced705d 100644 --- a/plenopy/plot/light_field_geometry.py +++ b/plenopy/plot/light_field_geometry.py @@ -5,6 +5,7 @@ from matplotlib.collections import PolyCollection import os import warnings +from ..light_field_geometry.LightFieldGeometry import init_lixel_polygons def save_all(light_field_geometry, out_dir, figure_style=splt.FIGURE_16_9): @@ -248,8 +249,15 @@ def colored_lixels( linewidths=None, ): warnings.warn(DeprecationWarning("Use ax_add_polygons_with_colormap()")) + + lixel_polygons = init_lixel_polygons( + lixel_positions_x=lss.lixel_positions_x, + lixel_positions_y=lss.lixel_positions_y, + lixel_outer_radius=lss.lixel_outer_radius, + ) + return ax_add_polygons_with_colormap( - polygons=lss.lixel_polygons, + polygons=lixel_polygons, I=I, ax=ax, cmap=cmap, diff --git a/plenopy/version.py b/plenopy/version.py index 6232f7a..5635676 100644 --- a/plenopy/version.py +++ b/plenopy/version.py @@ -1 +1 @@ -__version__ = "0.2.10" +__version__ = "0.2.11"