diff --git a/pyproject.toml b/pyproject.toml index e63c460..77c6493 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -77,6 +77,10 @@ root = "." [tool.ruff] target-version = "py311" line-length = 88 +# ignore all linting in the theoretical_explainations directory, which is used for testing and development of new features +extend-exclude = [ + "theorectical_explainations/notebooks/interpolation_edge_demo.ipynb", +] # Ignore `E501` (line too long) for Jupyter notebooks fix = true lint.select = [ # flake8-builtins @@ -101,9 +105,10 @@ lint.select = [ "SIM", "W", ] -# Ignore `E501` (line too long) for Jupyter notebooks lint.per-file-ignores."*.ipynb" = [ "C408", "E402", "E501" ] lint.per-file-ignores."src/**/__init__.py" = [ "F401" ] +lint.per-file-ignores."src/zedprofiler/featurization/neighbors.py" = [ "PLR0913", "PLR0917" ] +lint.per-file-ignores."src/zedprofiler/featurization/texture.py" = [ "RUF046" ] [tool.codespell] ignore-words-list = "doesnot,inout" diff --git a/src/zedprofiler/IO/loading_classes.py b/src/zedprofiler/IO/loading_classes.py index d012860..713457c 100644 --- a/src/zedprofiler/IO/loading_classes.py +++ b/src/zedprofiler/IO/loading_classes.py @@ -11,7 +11,10 @@ import numpy from beartype import beartype -from zedprofiler.contracts import ImageArrayModel +from zedprofiler.contracts import ( + ImageArrayModel, + validate_anisotropy_factor_with_pydantic, +) from zedprofiler.identifiers import build_image_id logging.basicConfig(level=logging.INFO) @@ -216,7 +219,11 @@ def __init__( # noqa: PLR0913 channel_tokens = [str(value) for value in channel_mapping.values()] self._label_key_names = list(config.label_key_name or []) self.anisotropy_spacing = anisotropy_spacing - self.anisotropy_factor = self.anisotropy_spacing[0] / self.anisotropy_spacing[1] + self.anisotropy_factor = validate_anisotropy_factor_with_pydantic( + self.anisotropy_spacing[0] / self.anisotropy_spacing[1], + y_spacing=self.anisotropy_spacing[1], + x_spacing=self.anisotropy_spacing[2], + ).anisotropy_factor self.image_set_name = config.image_set_name self.label_set_path = label_set_path # Deterministic imaging identifier for the warehouse join key @@ -298,7 +305,11 @@ def from_image_dict( # noqa: PLR0913 self.image_set_dict[key] = ImageArrayModel(array=array).array self._label_key_names = list(label_key_names or []) self.anisotropy_spacing = anisotropy_spacing - self.anisotropy_factor = self.anisotropy_spacing[0] / self.anisotropy_spacing[1] + self.anisotropy_factor = validate_anisotropy_factor_with_pydantic( + self.anisotropy_spacing[0] / self.anisotropy_spacing[1], + y_spacing=self.anisotropy_spacing[1], + x_spacing=self.anisotropy_spacing[2], + ).anisotropy_factor self.image_set_name = image_set_name self.label_set_path = None config = ImageSetConfig( @@ -538,7 +549,11 @@ def get_anisotropy(self) -> float: Ratio of z-spacing to y-spacing. """ - return self.anisotropy_spacing[0] / self.anisotropy_spacing[1] + return validate_anisotropy_factor_with_pydantic( + self.anisotropy_spacing[0] / self.anisotropy_spacing[1], + y_spacing=self.anisotropy_spacing[1], + x_spacing=self.anisotropy_spacing[2], + ).anisotropy_factor class ObjectLoader: diff --git a/src/zedprofiler/contracts.py b/src/zedprofiler/contracts.py index b84fd9d..7441613 100644 --- a/src/zedprofiler/contracts.py +++ b/src/zedprofiler/contracts.py @@ -14,6 +14,7 @@ from __future__ import annotations +import math from typing import Any import numpy as np @@ -29,6 +30,7 @@ from zedprofiler.exceptions import ContractError +MIN_ANISOTROPY_FACTOR = 1 EXPECTED_SPATIAL_DIMS = 3 TWO_DIMENSIONAL = 2 FOUR_DIMENSIONAL = 4 @@ -128,6 +130,52 @@ def validate_array_dtype_and_shape(_cls, arr: np.ndarray) -> np.ndarray: return arr +class AnisotropyFactorModel(BaseModel): + """Pydantic model for validating the anisotropy factor. + + Feature modules (e.g. texture, neighbors) assume the z-spacing is never + finer than the x/y-spacing, so ``anisotropy_factor`` (z_spacing / + y_spacing) must be 1 or greater. ``anisotropy_factor`` collapses to a + single z/y ratio, so it is only meaningful when the transverse (y, x) + spacings are equal; ``y_spacing``/``x_spacing`` are optional and, when + both are provided, are checked for equality. + """ + + anisotropy_factor: float + y_spacing: float | None = None + x_spacing: float | None = None + + @field_validator("anisotropy_factor", mode="after") + @classmethod + def validate_at_least_one(_cls, value: float) -> float: + """Ensure the anisotropy factor is finite and 1 or greater.""" + if not math.isfinite(value): + raise ValueError( + f"Anisotropy factor must be a finite number, got {value}.", + ) + if value < MIN_ANISOTROPY_FACTOR: + raise ValueError( + f"Anisotropy factor must be {MIN_ANISOTROPY_FACTOR} or greater, " + f"got {value}.", + ) + return value + + @model_validator(mode="after") + def validate_transverse_spacing_equal(self) -> AnisotropyFactorModel: + """Ensure y/x spacing are equal, when both are provided.""" + if ( + self.y_spacing is not None + and self.x_spacing is not None + and self.y_spacing != self.x_spacing + ): + raise ValueError( + "anisotropy_factor is a single z/y ratio and requires equal " + f"transverse spacing, got y_spacing={self.y_spacing} and " + f"x_spacing={self.x_spacing}.", + ) + return self + + class FeatureDictModel(BaseModel): """Pydantic model for validating feature dictionaries.""" @@ -371,6 +419,51 @@ def validate_return_with_pydantic( raise ContractError(msg) +def validate_anisotropy_factor_with_pydantic( + anisotropy_factor: float, + y_spacing: float | None = None, + x_spacing: float | None = None, +) -> AnisotropyFactorModel: + """Validate the anisotropy factor using a Pydantic model. + + Parameters + ---------- + anisotropy_factor : float + Ratio of z-spacing to y-spacing to validate. + y_spacing : float | None, optional + Y (transverse) spacing. When provided along with ``x_spacing``, they + are checked for equality since ``anisotropy_factor`` only captures a + single z/y ratio. + x_spacing : float | None, optional + X (transverse) spacing. See ``y_spacing``. + + Returns + ------- + AnisotropyFactorModel + Validated anisotropy factor model. + + Raises + ------ + ContractError + If the anisotropy factor is less than ``MIN_ANISOTROPY_FACTOR``, is + not finite, or if ``y_spacing`` and ``x_spacing`` are unequal. + + """ + try: + return AnisotropyFactorModel( + anisotropy_factor=anisotropy_factor, + y_spacing=y_spacing, + x_spacing=x_spacing, + ) + except Exception as e: + msg = ( + "Anisotropy factor validation failed. Please ensure that the " + "z-spacing is not finer than the y-spacing and that the y- and " + f"x-spacing are equal: {e}" + ) + raise ContractError(msg) + + def validate_image_with_pydantic(arr: np.ndarray) -> ImageArrayModel: """Validate the input image array using Pydantic model. diff --git a/src/zedprofiler/featurization/granularity.py b/src/zedprofiler/featurization/granularity.py index 5daf1d4..dd5e828 100644 --- a/src/zedprofiler/featurization/granularity.py +++ b/src/zedprofiler/featurization/granularity.py @@ -2,6 +2,8 @@ from __future__ import annotations +import math + import numpy import pandas import scipy.ndimage @@ -12,6 +14,56 @@ from zedprofiler.IO.loading_classes import ObjectLoader +def anisotropic_ball( + radius: int, + spacing: tuple[float, float, float] | None = None, +) -> numpy.ndarray: + """Build a spherical structuring element that is physically isotropic. + + Parameters + ---------- + radius : int + Radius of the structuring element in voxel units. + spacing : tuple[float, float, float] or None + Physical spacing of the image in (z, y, x) order. + If None, the structuring element is isotropic in voxel space. + If provided, the structuring element will be isotropic + in physical space, taking into account the anisotropy + of the voxel spacing. + + Returns + ------- + numpy.ndarray + A boolean array representing the structuring element, + where True values indicate the presence of the struct + during element and False values indicate the absence. + + ... + """ + if spacing is None: + return skimage.morphology.ball(radius, dtype=bool) + + z_spacing, y_spacing, x_spacing = spacing + if z_spacing == y_spacing == x_spacing: + return skimage.morphology.ball(radius, dtype=bool) + + min_spacing = min(z_spacing, y_spacing, x_spacing) + physical_radius = radius * min_spacing + + # Largest voxel offset on each axis that can still land within the + # physical radius. floor() (not round()) so a coarse axis correctly + # collapses to 0 when even one voxel step overshoots the radius. + rz = math.floor(physical_radius / z_spacing) + ry = math.floor(physical_radius / y_spacing) + rx = math.floor(physical_radius / x_spacing) + + zz, yy, xx = numpy.ogrid[-rz : rz + 1, -ry : ry + 1, -rx : rx + 1] + physical_dist_sq = ( + (zz * z_spacing) ** 2 + (yy * y_spacing) ** 2 + (xx * x_spacing) ** 2 + ) + return physical_dist_sq <= physical_radius**2 + + def _fix_scipy_ndimage_result(result: float | list | numpy.ndarray) -> numpy.ndarray: """Convert scipy.ndimage aggregation results to a consistent array. @@ -156,11 +208,17 @@ def compute_granularity( # noqa: C901, PLR0912, PLR0913, PLR0915 ) -> pandas.DataFrame: """Calculate the granularity spectrum of a 3D image. - Follows the CellProfiler MeasureGranularity algorithm exactly for 3D: + Based on the CellProfiler MeasureGranularity algorithm, generalized to 3D: 1. Subsample the image uniformly (same factor for Z, Y, X). 2. Further subsample for background tophat removal. - 3. Iteratively erode with ball(1) and reconstruct, measuring - signal lost at each scale as image-level and per-object values. + 3. Iteratively erode with a spherical structuring element and + reconstruct, measuring signal lost at each scale as image-level and + per-object values. + + The structuring elements used for background removal and the erosion + spectrum are physically isotropic spheres (see ``anisotropic_ball``), + not raw voxel-space spheres, so results are correct rather than biased + when z-spacing differs from x/y-spacing. Parameters ---------- @@ -220,6 +278,7 @@ def compute_granularity( # noqa: C901, PLR0912, PLR0913, PLR0915 original_pixels = object_loader.image original_labels = object_loader.label_image original_shape = original_pixels.shape + spacing = object_loader.image_set_loader.anisotropy_spacing # Mask: CellProfiler uses im.mask (typically all-True for unmasked images) if image_mask is None: @@ -265,24 +324,24 @@ def compute_granularity( # noqa: C901, PLR0912, PLR0913, PLR0915 # ------------------------------------------------------------------ # Step 2: Background removal via tophat filter # - # CellProfiler 3D BUG (replicated for compatibility): - # The 3D branch uses new_shape for grid bounds and subsample_size - # for coordinate division, instead of back_shape and - # image_sample_size as the 2D branch does. This means: - # - back_pixels has the SAME shape as pixels (not smaller) - # - Many coordinates are out of bounds → map_coordinates returns 0 - # We replicate this exactly to match CellProfiler output. + # Downsample the (already subsampled) image and mask to back_shape + # for the background estimate, exactly mirroring CellProfiler's 2D + # branch: grid bounds are back_shape, and coordinates are divided by + # image_sample_size to map back into the new_shape-sized `pixels` + # array. CellProfiler's actual 3D implementation uses new_shape / + # subsample_size here instead, a bug that leaves back_pixels the same + # size as pixels (mostly zero-filled from out-of-bounds sampling) and + # applies the tophat radius at the wrong scale. We intentionally do + # not replicate that 3D bug. # ------------------------------------------------------------------ if image_sample_size < 1.0: back_shape = new_shape * image_sample_size - # CellProfiler 3D: mgrid[0:new_shape] / subsample_size - # (NOT mgrid[0:back_shape] / image_sample_size as 2D does) k, i, j = ( - numpy.mgrid[0 : new_shape[0], 0 : new_shape[1], 0 : new_shape[2]].astype( + numpy.mgrid[0 : back_shape[0], 0 : back_shape[1], 0 : back_shape[2]].astype( float, ) - / subsample_size + / image_sample_size ) back_pixels = scipy.ndimage.map_coordinates(pixels, (k, i, j), order=1) back_mask = ( @@ -302,7 +361,7 @@ def compute_granularity( # noqa: C901, PLR0912, PLR0913, PLR0915 back_shape = new_shape # Tophat filter: masked erosion + masked dilation - footprint_bg = skimage.morphology.ball(radius, dtype=bool) + footprint_bg = anisotropic_ball(radius, spacing) back_pixels_masked = numpy.zeros_like(back_pixels) back_pixels_masked[back_mask] = back_pixels[back_mask] @@ -315,10 +374,10 @@ def compute_granularity( # noqa: C901, PLR0912, PLR0913, PLR0915 footprint=footprint_bg, ) - # Upsample background back to subsampled image size + # Upsample background back to subsampled image size: grid over + # new_shape, with coordinates scaled by (back_shape - 1) / (new_shape - 1) + # to map back into the back_shape-sized back_pixels array. if image_sample_size < 1.0: - # CellProfiler 3D: mgrid[0:new_shape] with coords scaled by - # (back_shape - 1) / (new_shape - 1) k, i, j = numpy.mgrid[ 0 : new_shape[0], 0 : new_shape[1], @@ -400,8 +459,9 @@ def compute_granularity( # noqa: C901, PLR0912, PLR0913, PLR0915 ero[~mask] = 0 currentmean = startmean - # CellProfiler uses ball(1) for the iterative erosion/reconstruction loop - footprint = skimage.morphology.ball(1, dtype=bool) + # Physically-isotropic radius-1 structuring element for the iterative + # erosion/reconstruction loop (see anisotropic_ball). + footprint = anisotropic_ball(1, spacing) if verbose: print( diff --git a/src/zedprofiler/featurization/intensity.py b/src/zedprofiler/featurization/intensity.py index 855f3f7..2471098 100644 --- a/src/zedprofiler/featurization/intensity.py +++ b/src/zedprofiler/featurization/intensity.py @@ -30,10 +30,7 @@ def get_outline(mask: numpy.ndarray) -> numpy.ndarray: The outline of the mask. """ - outline = numpy.zeros_like(mask) - for z in range(mask.shape[0]): - outline[z] = skimage.segmentation.find_boundaries(mask[z], mode="inner") - return outline + return skimage.segmentation.find_boundaries(mask, mode="inner") def compute_intensity( # noqa: C901, PLR0915 @@ -189,9 +186,16 @@ def compute_intensity( # noqa: C901, PLR0915 else: cmi_x = cmi_y = cmi_z = numpy.nan # calculate the center of mass distance - diff_x = cm_x - cmi_x - diff_y = cm_y - cmi_y - diff_z = cm_z - cmi_z + # Scale each axis by its physical voxel spacing before combining into + # one Euclidean distance -- diff_x/diff_y/diff_z are raw voxel-index + # offsets, and mixing them unscaled would bias the result whenever + # z-spacing differs from x/y-spacing. + z_spacing, y_spacing, x_spacing = ( + object_loader.image_set_loader.anisotropy_spacing + ) + diff_x = (cm_x - cmi_x) * x_spacing + diff_y = (cm_y - cmi_y) * y_spacing + diff_z = (cm_z - cmi_z) * z_spacing # mass displacement mass_displacement = numpy.sqrt(diff_x**2 + diff_y**2 + diff_z**2) # mean absolute deviation diff --git a/src/zedprofiler/featurization/neighbors.py b/src/zedprofiler/featurization/neighbors.py index 6c1b403..8228d8a 100644 --- a/src/zedprofiler/featurization/neighbors.py +++ b/src/zedprofiler/featurization/neighbors.py @@ -17,6 +17,48 @@ SMALL_SAMPLE_THRESHOLD = 20 +def adjacency_footprint(anisotropy_factor: float) -> numpy.ndarray: + """Build a 6-connectivity dilation footprint sized to represent one + physical unit of "touching" distance in each direction. + + ``skimage.morphology.dilation``'s default footprint expands 1 voxel in + every axis, which only means the same physical distance in every + direction when voxels are isotropic. When z-spacing is coarser than + x/y-spacing (``anisotropy_factor`` > 1), 1 z-voxel already represents + ``anisotropy_factor`` times more physical distance than 1 x/y-voxel, so + the x/y arms are extended by that same factor to match. + + At ``anisotropy_factor == 1`` this reduces to exactly the same 6-connected + cross skimage uses by default. + + Parameters + ---------- + anisotropy_factor : float + Ratio of z-spacing to x/y-spacing. + + Returns + ------- + numpy.ndarray + Boolean footprint of shape ``(3, 2*xy_radius + 1, 2*xy_radius + 1)``. + + """ + z_radius = 1 # the next slice essentially represents the + # same physical distance as 1 z-voxel, so always expand by 1 in z + # if the objects are touching it will be caught in this discrete + # scale. No need to interpolate here + + xy_radius = max(1, int(numpy.ceil(anisotropy_factor))) + footprint = numpy.zeros( + (2 * z_radius + 1, 2 * xy_radius + 1, 2 * xy_radius + 1), + dtype=bool, + ) + cz, cy, cx = z_radius, xy_radius, xy_radius + footprint[:, cy, cx] = True + footprint[cz, :, cx] = True + footprint[cz, cy, :] = True + return footprint + + def neighbors_expand_box( min_coor: int, max_coord: int, @@ -206,7 +248,10 @@ def compute_neighbors( ) adjacent_label_crop = crop_3D_image(image=label_object, bbox=adjacent_bbox) binary_mask = adjacent_label_crop == label - dilated_mask = skimage.morphology.dilation(binary_mask) + dilated_mask = skimage.morphology.dilation( + binary_mask, + footprint=adjacency_footprint(anisotropy_factor), + ) labels_in_dilation = adjacent_label_crop[dilated_mask] adjacent_labels = numpy.unique(labels_in_dilation) n_neighbors_adjacent = int( @@ -296,12 +341,14 @@ def get_coordinates( } for obj_id in object_ids: + if obj_id == 0: + continue # skip background z, y, x = numpy.where(nuclei_mask == obj_id) - centroid = (numpy.mean(x), numpy.mean(y), numpy.mean(z)) + centroid = (numpy.mean(z), numpy.mean(y), numpy.mean(x)) coords["Metadata_Object_ObjectID"].append(obj_id) - coords["x"].append(centroid[0]) + coords["z"].append(centroid[0]) coords["y"].append(centroid[1]) - coords["z"].append(centroid[2]) + coords["x"].append(centroid[2]) return pandas.DataFrame(coords) @@ -314,10 +361,30 @@ def calculate_centroid(coords: pandas.DataFrame) -> numpy.ndarray: def euclidean_distance_from_centroid( coords: numpy.ndarray, centroid: numpy.ndarray, + spacing: tuple[float, float, float] | None = None, ) -> numpy.ndarray: - """Calculate Euclidean distance from centroid for each cell.""" + """Calculate Euclidean distance from centroid for each cell. + + Parameters + ---------- + coords : ndarray + Cell coordinates (n_cells, 3), in (z, y, x) order. + centroid : ndarray + Centroid coordinates (3,), in (z, y, x) order. + spacing : tuple[float, float, float] or None + Physical voxel spacing in (z, y, x) order, matching ``coords``. If + None (default), coordinates are treated as already isotropic (all + axes weighted equally). Pass this whenever ``coords`` are raw voxel + indices from an anisotropic volume, so distances reflect physical + space rather than voxel counts. + + """ coords = numpy.asarray(coords, dtype=float) centroid = numpy.asarray(centroid, dtype=float) + if spacing is not None: + spacing_arr = numpy.asarray(spacing, dtype=float) + coords = coords * spacing_arr + centroid = centroid * spacing_arr return numpy.sqrt(numpy.sum((coords - centroid) ** 2, axis=1)) @@ -325,6 +392,7 @@ def mahalanobis_distance_from_centroid( coords: numpy.ndarray, centroid: numpy.ndarray, min_cells_threshold: int = 50, + spacing: tuple[float, float, float] | None = None, ) -> numpy.ndarray: """Calculate Mahalanobis distance from centroid for each cell. This accounts for the covariance structure (shape) of the organoid. @@ -334,11 +402,17 @@ def mahalanobis_distance_from_centroid( Parameters ---------- coords : ndarray - Cell coordinates (n_cells, 3) + Cell coordinates (n_cells, 3), in (z, y, x) order. centroid : ndarray - Centroid coordinates (3,) + Centroid coordinates (3,), in (z, y, x) order. min_cells_threshold : int Minimum cells needed for reliable Mahalanobis (default: 50) + spacing : tuple[float, float, float] or None + Physical voxel spacing in (z, y, x) order, matching ``coords``. If + None (default), coordinates are treated as already isotropic. Pass + this whenever ``coords`` are raw voxel indices from an anisotropic + volume, so both the covariance structure and the distance reflect + physical space rather than voxel counts. Returns ------- @@ -348,6 +422,10 @@ def mahalanobis_distance_from_centroid( """ coords = numpy.asarray(coords, dtype=float) centroid = numpy.asarray(centroid, dtype=float) + if spacing is not None: + spacing_arr = numpy.asarray(spacing, dtype=float) + coords = coords * spacing_arr + centroid = centroid * spacing_arr n_cells = len(coords) @@ -396,6 +474,7 @@ def classify_cells_into_shells( method: str = "mahalanobis", min_cells_per_shell: int = 3, centroid: numpy.ndarray | None = None, + spacing: tuple[float, float, float] | None = None, ) -> tuple[dict, numpy.ndarray | None]: """Classify cells into radial shells based on distance from centroid. @@ -404,7 +483,7 @@ def classify_cells_into_shells( Parameters ---------- coords : pandas.DataFrame or dict - Cell coordinates with /keys: object_id, x, y, z + Cell coordinates with /keys: object_id, z, y, x n_shells : int Number of concentric shells to create (will be adjusted if needed) method : str @@ -413,6 +492,11 @@ def classify_cells_into_shells( Minimum average cells per shell (default: 3) centroid : numpy.ndarray, optional Pre-calculated centroid (if None, will be calculated from coords) + spacing : tuple[float, float, float], optional + Physical voxel spacing in (z, y, x) order, matching ``coords``. Pass + this when the volume has anisotropic spacing so that distances (and + therefore shell assignments) reflect physical space rather than raw + voxel counts. Defaults to None (isotropic, all axes weighted equally). Returns ------- @@ -427,10 +511,10 @@ def classify_cells_into_shells( # Handle both DataFrame and dict input if isinstance(coords, pandas.DataFrame): object_ids = coords["Metadata_Object_ObjectID"].to_numpy() - coords_array = coords[["x", "y", "z"]].to_numpy() + coords_array = coords[["z", "y", "x"]].to_numpy() else: object_ids = numpy.array(coords["Metadata_Object_ObjectID"]) - coords_array = numpy.column_stack([coords["x"], coords["y"], coords["z"]]) + coords_array = numpy.column_stack([coords["z"], coords["y"], coords["x"]]) if len(coords_array) == 0: results: dict = { "Metadata_Object_ObjectID": [], @@ -457,9 +541,17 @@ def classify_cells_into_shells( # Calculate distances based on method if method == "mahalanobis": - distances = mahalanobis_distance_from_centroid(coords_array, centroid) + distances = mahalanobis_distance_from_centroid( + coords_array, + centroid, + spacing=spacing, + ) else: # euclidean - distances = euclidean_distance_from_centroid(coords_array, centroid) + distances = euclidean_distance_from_centroid( + coords_array, + centroid, + spacing=spacing, + ) # Normalize distances to 0-1 range max_distance = numpy.percentile( @@ -531,7 +623,7 @@ def visualize_organoid_shells( Parameters ---------- coords : pandas.DataFrame or dict - Cell coordinates with columns/keys: object_id, x, y, z + Cell coordinates with columns/keys: object_id, z, y, x classification_results : dict Results from classify_cells_into_shells title : str @@ -540,13 +632,13 @@ def visualize_organoid_shells( """ # Handle both DataFrame and dict input if isinstance(coords, pandas.DataFrame): - x_coords = coords["x"].to_numpy() - y_coords = coords["y"].to_numpy() z_coords = coords["z"].to_numpy() + y_coords = coords["y"].to_numpy() + x_coords = coords["x"].to_numpy() else: - x_coords = numpy.array(coords["x"]) - y_coords = numpy.array(coords["y"]) z_coords = numpy.array(coords["z"]) + y_coords = numpy.array(coords["y"]) + x_coords = numpy.array(coords["x"]) fig = plt.figure(figsize=(14, 6)) @@ -566,9 +658,9 @@ def visualize_organoid_shells( mask = shell_assignments == shell if numpy.sum(mask) > 0: # Only plot if shell has cells ax1.scatter( # type: ignore[misc] - x_coords[mask], - y_coords[mask], z_coords[mask], + y_coords[mask], + x_coords[mask], c=[colors[shell]], label=f"Shell {shell + 1} (n={numpy.sum(mask)})", s=50, @@ -588,9 +680,9 @@ def visualize_organoid_shells( linewidths=2, ) - ax1.set_xlabel("X") + ax1.set_xlabel("Z") ax1.set_ylabel("Y") - ax1.set_zlabel("Z") # type: ignore[attr-defined] + ax1.set_zlabel("X") # type: ignore[attr-defined] ax1.set_title(title) ax1.legend(loc="upper right", fontsize=8) diff --git a/src/zedprofiler/featurization/texture.py b/src/zedprofiler/featurization/texture.py index 30813b6..15559ac 100644 --- a/src/zedprofiler/featurization/texture.py +++ b/src/zedprofiler/featurization/texture.py @@ -12,10 +12,14 @@ import mahotas import numpy import pandas +import scipy.ndimage import skimage import skimage.measure -from zedprofiler.contracts import validate_column_name_schema +from zedprofiler.contracts import ( + validate_anisotropy_factor_with_pydantic, + validate_column_name_schema, +) from zedprofiler.IO.feature_writing_utils import format_morphology_feature_name from zedprofiler.IO.loading_classes import ObjectLoader @@ -58,6 +62,56 @@ def scale_image(image: numpy.ndarray, num_gray_levels: int = 256) -> numpy.ndarr ) +def resample_to_isotropic( + image: numpy.ndarray, + anisotropy_factor: float, + order: int = 3, +) -> numpy.ndarray: + """Resample a (z, y, x) volume to isotropic voxel spacing along z. + This function is written to be used for both the signal image + and the mask image. + The order parameter controls the interpolation + for the resampling. + For the signal image, we use cubic spline interpolation (order=3). + For the mask image, we use nearest neighbor interpolation (order=0). + + mahotas.features.haralick's ``distance`` parameter is a voxel count, not + a physical length, and several of its 13 directions step along z. If z + spacing is coarser than x/y spacing (the common microscopy case), those + directions sample a larger physical distance than the in-plane + directions, which biases the resulting Haralick features. Stretching the + z axis by the anisotropy factor before computing texture makes "1 voxel" + represent the same physical distance in every direction. + + Parameters + ---------- + image : numpy.ndarray + 3D array in (z, y, x) order. + anisotropy_factor : float + Ratio of z-spacing to x/y-spacing (assumes isotropic x/y spacing). + order : int, optional + Interpolation order for the resampling, by default 1 (linear). + + Returns + ------- + numpy.ndarray + The volume resampled so that voxels are isotropic in physical space. + + """ + if anisotropy_factor == 1: + return image + + input_dtype = image.dtype + if numpy.issubdtype(input_dtype, numpy.integer): + image = image.astype(numpy.float32) + + return scipy.ndimage.zoom( + image, + zoom=(anisotropy_factor, 1.0, 1.0), + order=order, + ) + + def compute_texture( # noqa: C901 object_loader: ObjectLoader, distance: int = 1, @@ -96,6 +150,13 @@ def compute_texture( # noqa: C901 return pandas.DataFrame() label_object = object_loader.label_image labels = object_loader.object_ids + # Haralick's `distance` is a voxel count, not a physical length, so + # anisotropic z-spacing must be corrected for before computing texture + # (see resample_to_isotropic). + z_spacing, y_spacing, _x_spacing = object_loader.image_set_loader.anisotropy_spacing + anisotropy_factor = validate_anisotropy_factor_with_pydantic( + z_spacing / y_spacing, + ).anisotropy_factor feature_names = [ "AngularSecondMoment", "Contrast", @@ -160,6 +221,39 @@ def compute_texture( # noqa: C901 if not numpy.any(object_mask): continue image_object[~object_mask] = 0 + + # order of operations here are as follows: + # 1. resample to isotropic voxel spacing + # a. this will interpolate the image, which will bleed over + # the object edges into the background, so we need to remask + # the image after resampling + # 2. resample the mask to isotropic + # voxel spacing (nearest neighbor) + # 3. remask the resampled image to ensure background is zero + # this removes the bleed over from the interpolation + # of the object edges + # 4. mahotas can now use the resampled image and mask to + # compute the Haralick features for this object + + # resample to isotropic after getting the object, + # this avoid the need to interpolate the mask + # image interpolation is done with + # cubic spline interpolation (order=3) + # mask interpolation is done with nearest neighbor (order=0) + image_object = resample_to_isotropic( + image_object, + anisotropy_factor=anisotropy_factor, + order=3, # cubic spline interpolation for image + ) + resampled_mask = resample_to_isotropic( + object_mask, + anisotropy_factor=anisotropy_factor, + order=0, # nearest neighbor for mask + ) + # remask the resampled image to ensure background is zero + # this removes the bleed over from the interpolation of the object edges + image_object[~resampled_mask.astype(bool)] = 0 + image_object = scale_image(image_object, num_gray_levels=grayscale) with contextlib.suppress(ValueError): # calculates 13 Haralick features for each direction (13) diff --git a/src/zedprofiler/featurization/volumesizeshape.py b/src/zedprofiler/featurization/volumesizeshape.py index c4618b9..ce9912c 100644 --- a/src/zedprofiler/featurization/volumesizeshape.py +++ b/src/zedprofiler/featurization/volumesizeshape.py @@ -167,12 +167,31 @@ def measure_3D_volume_size_shape( if prop_name != "label" } + # regionprops' area/bbox_area/equivalent_diameter are all computed + # from raw voxel counts (implicitly assuming unit voxel volume), so + # they need to be rescaled by the physical voxel volume to be + # unit-consistent with SurfaceArea (which is already physical, via + # marching_cubes(spacing=...) below). + voxel_volume = spacing[0] * spacing[1] * spacing[2] + # multiply the voxel count by the physical voxel + # volume to get the physical volume + # if isometric, voxel_volume = 1, + # so volume_physical = props["area"].item() + # multiply by the voxel volume to get the physical volume + # this means anisotropic voxel sizes are properly + # accounted for in the volume calculation + # and isotropic voxel sizes are also properly accounted for + # and do not change the volume calculation + volume_physical = props["area"].item() * voxel_volume + bbox_volume_physical = props["bbox_area"].item() * voxel_volume + equivalent_diameter_physical = (6 * volume_physical / np.pi) ** (1 / 3) + features_to_record["Metadata_Object_ObjectID"].append(label) - features_to_record["Volume"].append(props["area"].item()) + features_to_record["Volume"].append(volume_physical) features_to_record["CenterX"].append(props["centroid-2"].item()) features_to_record["CenterY"].append(props["centroid-1"].item()) features_to_record["CenterZ"].append(props["centroid-0"].item()) - features_to_record["BboxVolume"].append(props["bbox_area"].item()) + features_to_record["BboxVolume"].append(bbox_volume_physical) features_to_record["MinX"].append(props["bbox-2"].item()) features_to_record["MaxX"].append(props["bbox-5"].item()) features_to_record["MinY"].append(props["bbox-1"].item()) @@ -181,9 +200,7 @@ def measure_3D_volume_size_shape( features_to_record["MaxZ"].append(props["bbox-3"].item()) features_to_record["Extent"].append(props["extent"].item()) features_to_record["EulerNumber"].append(props["euler_number"].item()) - features_to_record["EquivalentDiameter"].append( - props["equivalent_diameter"].item(), - ) + features_to_record["EquivalentDiameter"].append(equivalent_diameter_physical) try: features_to_record["SurfaceArea"].append( diff --git a/tests/IO/test_loading_classes.py b/tests/IO/test_loading_classes.py index 5ae6ec6..ad6d8e5 100644 --- a/tests/IO/test_loading_classes.py +++ b/tests/IO/test_loading_classes.py @@ -20,8 +20,13 @@ ZERO_LABEL = 0 ONE_LABEL = 1 TWO_LABEL = 2 -EXPECTED_ANISOTROPY = 2.0 ORIGINAL_DNA_PIXEL = 10 +ANISOTROPY_SPACINGS = [ + (1.0, 1.0, 1.0), + (2.0, 1.0, 1.0), + (5.0, 1.0, 1.0), + (10.0, 1.0, 1.0), +] class TestImageSetConfig: @@ -203,24 +208,32 @@ def test_get_unique_objects_empty_compartments_returns_empty(self) -> None: loader.get_unique_objects_in_compartments() assert loader.unique_compartment_objects == {} - def test_get_image_and_get_anisotropy(self) -> None: + @pytest.mark.parametrize("anisotropy_spacing", ANISOTROPY_SPACINGS) + def test_get_image_and_get_anisotropy( + self, + anisotropy_spacing: tuple[float, float, float], + ) -> None: """Simple accessors return the expected image and anisotropy ratio.""" loader = ImageSetLoader.__new__(ImageSetLoader) arr = np.arange(8).reshape((2, 2, 2)) loader.image_set_dict = {"DNA": arr} - loader.anisotropy_spacing = (2.0, 1.0, 1.0) + loader.anisotropy_spacing = anisotropy_spacing assert np.array_equal(loader.get_image("DNA"), arr) - assert loader.get_anisotropy() == EXPECTED_ANISOTROPY + assert loader.get_anisotropy() == ( + anisotropy_spacing[0] / anisotropy_spacing[1] + ) class TestImageSetLoaderInit: """Tests that exercise ImageSetLoader __init__ with mocked reads.""" + @pytest.mark.parametrize("anisotropy_spacing", ANISOTROPY_SPACINGS) def test_init_loads_channel_and_label_images( self, monkeypatch: pytest.MonkeyPatch, tmp_path: Path, + anisotropy_spacing: tuple[float, float, float], ) -> None: """Initialization should load matching files and build derived attributes.""" image_dir = tmp_path / "images" @@ -249,7 +262,7 @@ def get_image_data(self, _order: str) -> np.ndarray: loader = ImageSetLoader( image_set_path=image_dir, label_set_path=label_dir, - anisotropy_spacing=(2.0, 1.0, 1.0), + anisotropy_spacing=anisotropy_spacing, channel_mapping={"DNA": "dna_raw", "Nuclei_label": "nuc_label"}, config=ImageSetConfig( image_set_name="set-01", @@ -259,7 +272,9 @@ def get_image_data(self, _order: str) -> np.ndarray: ) assert loader.image_set_name == "set-01" - assert loader.anisotropy_factor == EXPECTED_ANISOTROPY + assert loader.anisotropy_factor == ( + anisotropy_spacing[0] / anisotropy_spacing[1] + ) assert set(loader.image_set_dict.keys()) == {"DNA", "Nuclei_label"} assert loader.compartments == ["Nuclei_label"] assert loader.image_names == ["DNA"] @@ -433,16 +448,22 @@ def _build_dict(self) -> dict[str, np.ndarray]: "Nuclei": label, } - def test_builds_working_multi_channel_loader(self) -> None: + @pytest.mark.parametrize("anisotropy_spacing", ANISOTROPY_SPACINGS) + def test_builds_working_multi_channel_loader( + self, + anisotropy_spacing: tuple[float, float, float], + ) -> None: """from_image_dict resolves compartments and channels from the dict.""" loader = ImageSetLoader.from_image_dict( self._build_dict(), - anisotropy_spacing=(2.0, 1.0, 1.0), + anisotropy_spacing=anisotropy_spacing, image_set_name="shard-01", label_key_names=["Nuclei"], ) assert loader.image_set_name == "shard-01" - assert loader.anisotropy_factor == EXPECTED_ANISOTROPY + assert loader.anisotropy_factor == ( + anisotropy_spacing[0] / anisotropy_spacing[1] + ) assert loader.compartments == ["Nuclei"] assert sorted(loader.image_names) == ["AGP", "DNA"] assert loader.unique_compartment_objects["Nuclei"] == [ diff --git a/tests/featurization/test_granularity.py b/tests/featurization/test_granularity.py index 764d547..007aab2 100644 --- a/tests/featurization/test_granularity.py +++ b/tests/featurization/test_granularity.py @@ -17,12 +17,21 @@ scipy = pytest.importorskip("scipy") +ANISOTROPY_SPACINGS = [ + (1.0, 1.0, 1.0), + (2.0, 1.0, 1.0), + (5.0, 1.0, 1.0), + (10.0, 1.0, 1.0), +] + class ImageSetLoaderModel(BaseModel): model_config = ConfigDict(arbitrary_types_allowed=True) image_set_name: str = "gran" # mirrors ImageSetLoader.image_id (falls back to image_set_name) image_id: str = "gran" + # mirrors ImageSetLoader.anisotropy_spacing (z, y, x spacing) + anisotropy_spacing: tuple[float, float, float] = (1.0, 1.0, 1.0) class ObjectLoaderModel(BaseModel): @@ -54,12 +63,14 @@ def make_image_and_label( @pytest.mark.parametrize("shape,center", [((12, 12, 12), (6, 6, 6))]) +@pytest.mark.parametrize("anisotropy_spacing", ANISOTROPY_SPACINGS) def test_compute_granularity_basic( shape: tuple[int, int, int], center: tuple[int, int, int], + anisotropy_spacing: tuple[float, float, float], ) -> None: img, lab = make_image_and_label(shape, center) - imgset = ImageSetLoaderModel() + imgset = ImageSetLoaderModel(anisotropy_spacing=anisotropy_spacing) loader = ObjectLoaderModel( image=img, label_image=lab, @@ -97,7 +108,15 @@ class Dummy: image = img label_image = lab object_ids: ClassVar[list[int]] = [1] - image_set_loader = type("ISL", (), {"image_set_name": "s", "image_id": "s"})() + image_set_loader = type( + "ISL", + (), + { + "image_set_name": "s", + "image_id": "s", + "anisotropy_spacing": (1.0, 1.0, 1.0), + }, + )() compartment = "Cell" channel = "Ch1" @@ -123,7 +142,15 @@ class Dummy: image = img label_image = lab object_ids: ClassVar[list[int]] = [1] - image_set_loader = type("ISL", (), {"image_set_name": "s", "image_id": "s"})() + image_set_loader = type( + "ISL", + (), + { + "image_set_name": "s", + "image_id": "s", + "anisotropy_spacing": (1.0, 1.0, 1.0), + }, + )() compartment = "Cell" channel = "Ch1" @@ -153,7 +180,15 @@ class Dummy: image = img label_image = lab object_ids: ClassVar[list[int]] = [1] - image_set_loader = type("ISL", (), {"image_set_name": "s", "image_id": "s"})() + image_set_loader = type( + "ISL", + (), + { + "image_set_name": "s", + "image_id": "s", + "anisotropy_spacing": (1.0, 1.0, 1.0), + }, + )() compartment = "Cell" channel = "Ch1" @@ -198,7 +233,15 @@ class Dummy: image = img label_image = lab object_ids: ClassVar[list[int]] = [1] - image_set_loader = type("ISL", (), {"image_set_name": "s", "image_id": "s"})() + image_set_loader = type( + "ISL", + (), + { + "image_set_name": "s", + "image_id": "s", + "anisotropy_spacing": (1.0, 1.0, 1.0), + }, + )() compartment = "Cell" channel = "Ch1" @@ -225,7 +268,15 @@ class Dummy: image = img label_image = lab object_ids: ClassVar[list[int]] = [257, 514] - image_set_loader = type("ISL", (), {"image_set_name": "s", "image_id": "s"})() + image_set_loader = type( + "ISL", + (), + { + "image_set_name": "s", + "image_id": "s", + "anisotropy_spacing": (1.0, 1.0, 1.0), + }, + )() compartment = "Cell" channel = "Ch1" @@ -327,7 +378,15 @@ class Dummy: image = img label_image = lab object_ids: ClassVar[list[int]] = [] - image_set_loader = type("ISL", (), {"image_set_name": "s", "image_id": "s"})() + image_set_loader = type( + "ISL", + (), + { + "image_set_name": "s", + "image_id": "s", + "anisotropy_spacing": (1.0, 1.0, 1.0), + }, + )() compartment = "Cell" channel = "Ch1" @@ -340,9 +399,11 @@ class Dummy: @pytest.mark.parametrize("shape,center", [((24, 48, 48), (12, 22, 32))]) +@pytest.mark.parametrize("anisotropy_spacing", ANISOTROPY_SPACINGS) def test_compute_granularity_sparse_object_in_larger_image( shape: tuple[int, int, int], center: tuple[int, int, int], + anisotropy_spacing: tuple[float, float, float], ) -> None: """A small object far from the edges of a much larger, subsampled image. @@ -353,7 +414,7 @@ def test_compute_granularity_sparse_object_in_larger_image( elsewhere in this file, where the object is a large fraction of the image. """ img, lab = make_image_and_label(shape, center) - imgset = ImageSetLoaderModel() + imgset = ImageSetLoaderModel(anisotropy_spacing=anisotropy_spacing) loader = ObjectLoaderModel( image=img, label_image=lab, diff --git a/tests/featurization/test_intensity.py b/tests/featurization/test_intensity.py index 20d6701..38688e0 100644 --- a/tests/featurization/test_intensity.py +++ b/tests/featurization/test_intensity.py @@ -8,12 +8,21 @@ from zedprofiler.featurization.intensity import compute_intensity +ANISOTROPY_SPACINGS = [ + (1.0, 1.0, 1.0), + (2.0, 1.0, 1.0), + (5.0, 1.0, 1.0), + (10.0, 1.0, 1.0), +] + class ImageSetLoaderModel(BaseModel): model_config = ConfigDict(arbitrary_types_allowed=True) image_set_name: str = "intensity" # mirrors ImageSetLoader.image_id (falls back to image_set_name) image_id: str = "intensity" + # mirrors ImageSetLoader.anisotropy_spacing (z, y, x spacing) + anisotropy_spacing: tuple[float, float, float] = (1.0, 1.0, 1.0) class ObjectLoaderModel(BaseModel): @@ -138,12 +147,14 @@ def test_integrated_intensity_is_per_object_not_global() -> None: @pytest.mark.parametrize("shape,center", [((6, 6, 6), (3, 3, 3))]) +@pytest.mark.parametrize("anisotropy_spacing", ANISOTROPY_SPACINGS) def test_compute_intensity_basic( shape: tuple[int, int, int], center: tuple[int, int, int], + anisotropy_spacing: tuple[float, float, float], ) -> None: img, lab = make_label_and_image(shape, center) - imgset = ImageSetLoaderModel() + imgset = ImageSetLoaderModel(anisotropy_spacing=anisotropy_spacing) loader = ObjectLoaderModel( image=img, label_image=lab, @@ -156,7 +167,56 @@ def test_compute_intensity_basic( assert "Metadata_Object_ObjectID" in df.columns -def test_compute_intensity_skips_phantom_object_id_without_bbox() -> None: +@pytest.mark.parametrize("anisotropy_spacing", ANISOTROPY_SPACINGS) +def test_compute_intensity_mass_displacement_scales_with_z_spacing( + anisotropy_spacing: tuple[float, float, float], +) -> None: + """MassDisplacement must scale the z-offset by the physical z-spacing. + + A single centered voxel is always symmetric (geometric center equals + intensity-weighted center regardless of spacing), so it never exercises + the z-spacing scaling in ``compute_intensity``. This uses a two-voxel + object, offset only along z with unequal intensities, so the geometric + and intensity-weighted centers diverge along z and MassDisplacement has + a spacing-dependent expected value. + """ + shape = (6, 6, 6) + image = np.zeros(shape, dtype=float) + label = np.zeros(shape, dtype=int) + image[1, 2, 2] = 1.0 + image[4, 2, 2] = 3.0 + label[1, 2, 2] = 1 + label[4, 2, 2] = 1 + + imgset = ImageSetLoaderModel(anisotropy_spacing=anisotropy_spacing) + loader = ObjectLoaderModel( + image=image, + label_image=label, + object_ids=[1], + image_set_loader=imgset, + ) + + df = compute_intensity(loader) + md_col = [c for c in df.columns if "MassDisplacement" in c] + assert md_col, "MassDisplacement column not found in output" + + row = df[df["Metadata_Object_ObjectID"] == 1] + mass_displacement = float(row[md_col[0]].values[0]) + + z_spacing, _y_spacing, _x_spacing = anisotropy_spacing + cm_z = (1 + 4) / 2 + cmi_z = (1 * 1.0 + 4 * 3.0) / (1.0 + 3.0) + expected = abs(cm_z - cmi_z) * z_spacing + assert np.isclose(mass_displacement, expected, atol=1e-6), ( + f"MassDisplacement = {mass_displacement}, expected {expected} for " + f"anisotropy_spacing={anisotropy_spacing}." + ) + + +@pytest.mark.parametrize("anisotropy_spacing", ANISOTROPY_SPACINGS) +def test_compute_intensity_skips_phantom_object_id_without_bbox( + anisotropy_spacing: tuple[float, float, float], +) -> None: """Object ids absent from the label image are skipped, not crashed on. ``compute_intensity`` looks up each requested object id in the @@ -172,7 +232,7 @@ def test_compute_intensity_skips_phantom_object_id_without_bbox() -> None: image[3:7, 3:7, 3:7] = 100.0 label[3:7, 3:7, 3:7] = 1 - imgset = ImageSetLoaderModel() + imgset = ImageSetLoaderModel(anisotropy_spacing=anisotropy_spacing) loader = ObjectLoaderModel( image=image, label_image=label, diff --git a/tests/featurization/test_neighbors.py b/tests/featurization/test_neighbors.py index 90e9b56..5f1239a 100644 --- a/tests/featurization/test_neighbors.py +++ b/tests/featurization/test_neighbors.py @@ -19,6 +19,8 @@ visualize_organoid_shells, ) +ANISOTROPY_FACTORS = [1, 2, 5, 10] + class ImageSetLoaderModel(BaseModel): model_config = ConfigDict(arbitrary_types_allowed=True) @@ -58,9 +60,11 @@ def make_two_labels( ((10, 10, 10), [(3, 3, 3), (6, 6, 6)]), ], ) +@pytest.mark.parametrize("anisotropy_factor", ANISOTROPY_FACTORS) def test_compute_neighbors_counts( shape: tuple[int, int, int], centers: list[tuple[int, int, int]], + anisotropy_factor: int, ) -> None: lab = make_two_labels(shape, centers) imgset = ImageSetLoaderModel() @@ -71,7 +75,11 @@ def test_compute_neighbors_counts( image_set_loader=imgset, ) - df = compute_neighbors(loader, distance_threshold=5, anisotropy_factor=1) + df = compute_neighbors( + loader, + distance_threshold=5, + anisotropy_factor=anisotropy_factor, + ) assert isinstance(df, pd.DataFrame) assert "Metadata_Object_ObjectID" in df.columns @@ -144,7 +152,10 @@ def test_mahalanobis_small_and_regularized_and_singular() -> None: EXPECTED_MULTIPLE_NEIGHBORS = 2 -def test_neighbors_count_adjacent_detects_touching_cells() -> None: +@pytest.mark.parametrize("anisotropy_factor", ANISOTROPY_FACTORS) +def test_neighbors_count_adjacent_detects_touching_cells( + anisotropy_factor: int, +) -> None: """NeighborsCountAdjacent must be > 0 for two directly touching objects (Bug 5). Before the fix, adjacency was detected by cropping to the regionprops bbox @@ -170,7 +181,11 @@ def test_neighbors_count_adjacent_detects_touching_cells() -> None: image_set_loader=imgset, ) - df = compute_neighbors(loader, distance_threshold=5, anisotropy_factor=1) + df = compute_neighbors( + loader, + distance_threshold=5, + anisotropy_factor=anisotropy_factor, + ) obj1_row = df[df["Metadata_Object_ObjectID"] == 1] adjacent_col = [c for c in df.columns if "NeighborsCountAdjacent" in c] assert adjacent_col, "NeighborsCountAdjacent column not found in output" @@ -182,7 +197,10 @@ def test_neighbors_count_adjacent_detects_touching_cells() -> None: ) -def test_neighbors_count_adjacent_detects_multiple_neighbors() -> None: +@pytest.mark.parametrize("anisotropy_factor", ANISOTROPY_FACTORS) +def test_neighbors_count_adjacent_detects_multiple_neighbors( + anisotropy_factor: int, +) -> None: """NeighborsCountAdjacent must count more than one neighbour. Object 1 is face-adjacent to two separate objects: object 2 along the z @@ -203,7 +221,11 @@ def test_neighbors_count_adjacent_detects_multiple_neighbors() -> None: image_set_loader=imgset, ) - df = compute_neighbors(loader, distance_threshold=5, anisotropy_factor=1) + df = compute_neighbors( + loader, + distance_threshold=5, + anisotropy_factor=anisotropy_factor, + ) obj1_row = df[df["Metadata_Object_ObjectID"] == 1] adjacent_col = [c for c in df.columns if "NeighborsCountAdjacent" in c] assert adjacent_col, "NeighborsCountAdjacent column not found in output" @@ -243,7 +265,10 @@ def test_create_results_dataframe_and_errors_and_plots() -> None: assert hasattr(fig2, "axes") -def test_compute_neighbors_skips_phantom_object_id_without_bbox() -> None: +@pytest.mark.parametrize("anisotropy_factor", ANISOTROPY_FACTORS) +def test_compute_neighbors_skips_phantom_object_id_without_bbox( + anisotropy_factor: int, +) -> None: """Object ids absent from the label image are skipped via the bbox guard. ``compute_neighbors`` looks up each requested object id in the @@ -263,7 +288,11 @@ def test_compute_neighbors_skips_phantom_object_id_without_bbox() -> None: image_set_loader=imgset, ) - df = compute_neighbors(loader, distance_threshold=5, anisotropy_factor=1) + df = compute_neighbors( + loader, + distance_threshold=5, + anisotropy_factor=anisotropy_factor, + ) returned_ids = sorted(int(x) for x in df["Metadata_Object_ObjectID"].tolist()) assert returned_ids == [1] diff --git a/tests/featurization/test_neighbors_additional.py b/tests/featurization/test_neighbors_additional.py index fa2c0c1..0ac553e 100644 --- a/tests/featurization/test_neighbors_additional.py +++ b/tests/featurization/test_neighbors_additional.py @@ -22,6 +22,8 @@ scipy = pytest.importorskip("scipy") skimage = pytest.importorskip("skimage") +ANISOTROPY_FACTORS = [1, 2, 5, 10] + def test_neighbors_expand_box_bounds() -> None: # current_min - expand_by < min_coor -> clipped to min_coor @@ -40,7 +42,8 @@ def test_crop_3d_image_basic() -> None: assert cropped.shape == (2, 2, 2) -def test_compute_neighbors_distance_counts() -> None: +@pytest.mark.parametrize("anisotropy_factor", ANISOTROPY_FACTORS) +def test_compute_neighbors_distance_counts(anisotropy_factor: int) -> None: # Create a label image with three objects: two nearby, one far lab = np.zeros((12, 12, 12), dtype=int) lab[2, 2, 2] = 1 @@ -54,7 +57,11 @@ class Dummy: compartment = "Cell" channel = "Ch1" - df = compute_neighbors(Dummy(), distance_threshold=3, anisotropy_factor=1) + df = compute_neighbors( + Dummy(), + distance_threshold=3, + anisotropy_factor=anisotropy_factor, + ) assert isinstance(df, pd.DataFrame) # For object 1 and 2, distance-based neighbors should count each other distance_threshold = 3 diff --git a/tests/featurization/test_real_world_data.py b/tests/featurization/test_real_world_data.py index 9f63a54..8d6b5c8 100644 --- a/tests/featurization/test_real_world_data.py +++ b/tests/featurization/test_real_world_data.py @@ -55,6 +55,13 @@ tifffile = pytest.importorskip("tifffile") +ANISOTROPY_SPACINGS = [ + (1.0, 1.0, 1.0), + (2.0, 1.0, 1.0), + (5.0, 1.0, 1.0), + (10.0, 1.0, 1.0), +] + CELLPROFILER_TUTORIAL_ROOT = ( Path(__file__).resolve().parents[1] / "data" @@ -216,6 +223,7 @@ def _colocalization_case_id( def _load_nuclei_case( dataset_case: RealDatasetCase, image_case: RealImageCase, + anisotropy_spacing: tuple[float, float, float] = (1.0, 1.0, 1.0), ) -> LoadedNucleiCase: """Load a real image/mask pair into loaders from in-memory arrays.""" image = tifffile.imread(image_case.image_path) @@ -225,7 +233,7 @@ def _load_nuclei_case( label_set_path=None, image_set_array=image, label_set_array=label, - anisotropy_spacing=(1.0, 1.0, 1.0), + anisotropy_spacing=anisotropy_spacing, channel_mapping={ image_case.channel: image_case.image_name, image_case.compartment: "SegmentationMask", @@ -414,9 +422,11 @@ def test_real_dataset_files_are_static(dataset_case: RealDatasetCase) -> None: @pytest.mark.parametrize("case", IMAGE_CASES, ids=_image_case_id) @pytest.mark.parametrize("feature_runner", FEATURE_RUNNERS, ids=_feature_runner_id) +@pytest.mark.parametrize("anisotropy_spacing", ANISOTROPY_SPACINGS) def test_real_world_nuclei_feature_extractors( case: tuple[RealDatasetCase, RealImageCase], feature_runner: FeatureRunner, + anisotropy_spacing: tuple[float, float, float], ) -> None: """Each single-channel extractor yields a valid per-object frame on real nuclei. @@ -425,7 +435,7 @@ def test_real_world_nuclei_feature_extractors( column token, and only finite feature values. """ dataset_case, image_case = case - loaded_case = _load_nuclei_case(dataset_case, image_case) + loaded_case = _load_nuclei_case(dataset_case, image_case, anisotropy_spacing) df = feature_runner.run(loaded_case) diff --git a/tests/featurization/test_texture.py b/tests/featurization/test_texture.py index 7f9c02e..36c911a 100644 --- a/tests/featurization/test_texture.py +++ b/tests/featurization/test_texture.py @@ -13,6 +13,12 @@ LABEL_OBJ_1 = 1 LABEL_OBJ_2 = 2 +ANISOTROPY_SPACINGS = [ + (1.0, 1.0, 1.0), + (2.0, 1.0, 1.0), + (5.0, 1.0, 1.0), + (10.0, 1.0, 1.0), +] class ImageSetLoaderModel(BaseModel): @@ -20,6 +26,8 @@ class ImageSetLoaderModel(BaseModel): image_set_name: str = "texture" # mirrors ImageSetLoader.image_id (falls back to image_set_name) image_id: str = "texture" + # mirrors ImageSetLoader.anisotropy_spacing (z, y, x spacing) + anisotropy_spacing: tuple[float, float, float] = (1.0, 1.0, 1.0) class ObjectLoaderModel(BaseModel): @@ -51,12 +59,14 @@ def make_texture_image( @pytest.mark.parametrize("shape,center", [((15, 15, 15), (7, 7, 7))]) +@pytest.mark.parametrize("anisotropy_spacing", ANISOTROPY_SPACINGS) def test_compute_texture_basic( shape: tuple[int, int, int], center: tuple[int, int, int], + anisotropy_spacing: tuple[float, float, float], ) -> None: image, label = make_texture_image(shape, center) - imgset = ImageSetLoaderModel() + imgset = ImageSetLoaderModel(anisotropy_spacing=anisotropy_spacing) loader = ObjectLoaderModel( image=image, label_image=label, diff --git a/tests/featurization/test_volumesizeshape.py b/tests/featurization/test_volumesizeshape.py index aa431fe..b8f1887 100644 --- a/tests/featurization/test_volumesizeshape.py +++ b/tests/featurization/test_volumesizeshape.py @@ -10,6 +10,13 @@ compute_volume_size_shape, ) +ANISOTROPY_SPACINGS = [ + (1.0, 1.0, 1.0), + (2.0, 1.0, 1.0), + (5.0, 1.0, 1.0), + (10.0, 1.0, 1.0), +] + class ImageSetLoaderModel(BaseModel): model_config = ConfigDict(arbitrary_types_allowed=True) @@ -55,11 +62,13 @@ def make_label_image( ((8, 8, 8), [(2, 2, 2), (5, 5, 5)]), ], ) +@pytest.mark.parametrize("anisotropy_spacing", ANISOTROPY_SPACINGS) def test_compute_volume_size_shape_returns_dataframe( shape: tuple[int, int, int], centers: list[tuple[int, int, int]], + anisotropy_spacing: tuple[float, float, float], ) -> None: - imgset = ImageSetLoaderModel(anisotropy_spacing=(1.0, 1.0, 1.0)) + imgset = ImageSetLoaderModel(anisotropy_spacing=anisotropy_spacing) label = make_label_image(shape, centers) obj_ids = sorted(set(label.ravel()) - {0}) loader = ObjectLoaderModel( @@ -79,7 +88,10 @@ def test_compute_volume_size_shape_returns_dataframe( assert returned_ids == obj_ids -def test_compute_volume_size_shape_skips_phantom_object_id_without_props() -> None: +@pytest.mark.parametrize("anisotropy_spacing", ANISOTROPY_SPACINGS) +def test_compute_volume_size_shape_skips_phantom_object_id_without_props( + anisotropy_spacing: tuple[float, float, float], +) -> None: """Object ids absent from the label image are skipped via the props guard. ``measure_3D_volume_size_shape`` builds a label->index map from @@ -88,7 +100,7 @@ def test_compute_volume_size_shape_skips_phantom_object_id_without_props() -> No id (99) alongside a real one (1) exercises that guard: only object 1 should appear in the output, with no crash. """ - imgset = ImageSetLoaderModel(anisotropy_spacing=(1.0, 1.0, 1.0)) + imgset = ImageSetLoaderModel(anisotropy_spacing=anisotropy_spacing) label = make_label_image((7, 7, 7), [(3, 3, 3)]) loader = ObjectLoaderModel( label_image=label, diff --git a/tests/test_benchmark_contracts.py b/tests/test_benchmark_contracts.py index 1b4c8bc..e63e84f 100644 --- a/tests/test_benchmark_contracts.py +++ b/tests/test_benchmark_contracts.py @@ -16,13 +16,13 @@ ) EXPECTED_SIGNATURES = { - "intensity": ("570a8f4bcd0a253a7c45d163b5cde172f287b7f089976cc17657f2d44b06917f"), + "intensity": ("5d1cf592fe0e02f4bfa07becb715d2d924776b8511d0bc071992bf2fdc4b0e94"), "volume_size_shape": ( - "429504786716107bd10ed72c624578c76fc5f26338b7c1556f1f9c6b0dbb4ca2" + "7b89edcd8c1427a3a0f50770ad3d97fdb5a919708686b6442db68c9d41795cbd" ), "neighbors": ("442ba04801300f09ba2796b44256aeed62bf34d1ec646aed4f9deb5ec1aa347b"), - "texture": ("08eee6b345b04793b2c1cff461015a092a91828c820e27c64d2c6a1b6a52c5dd"), - "granularity": ("44b746ca088be1f7b8a18282248dc3b7e36f744aa2d646e4c6580fb1218e5c55"), + "texture": ("0e4cfe60a9da0ee358a17cd6c60f05d993b3eb9f229a7ff1ace029789abed8cb"), + "granularity": ("b66528d9302f4d63d6f24d6c21c147ea9b0f4cd34539ebc66aaac9dd9342eb8f"), "colocalization": ( "304321e87776fce46e6231e4b121bc931d1bd9cc3c8724912dec460dc42b5b8b" ), diff --git a/tests/test_cli.py b/tests/test_cli.py index 89a08fd..b6a001e 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -287,7 +287,17 @@ def test_validate_rejects_undeclared_colocalization_channel() -> None: # --------------------------------------------------------------------------- -def _tiny_image_set_loader() -> ImageSetLoader: +ANISOTROPY_SPACINGS = [ + (1.0, 1.0, 1.0), + (2.0, 1.0, 1.0), + (5.0, 1.0, 1.0), + (10.0, 1.0, 1.0), +] + + +def _tiny_image_set_loader( + anisotropy_spacing: tuple[float, float, float] = (2.0, 1.0, 1.0), +) -> ImageSetLoader: """A small multi-channel loader for exercising dispatch branches quickly.""" rng = np.random.default_rng(0) label = np.zeros((6, 6, 6), dtype=np.int32) @@ -297,7 +307,7 @@ def _tiny_image_set_loader() -> ImageSetLoader: image2 = rng.integers(0, 200, size=(6, 6, 6)).astype(np.float32) return ImageSetLoader.from_image_dict( {"DNA": image, "AGP": image2, "Nuclei": label}, - anisotropy_spacing=(2.0, 1.0, 1.0), + anisotropy_spacing=anisotropy_spacing, image_set_name="tiny", label_key_names=["Nuclei"], ) @@ -307,10 +317,17 @@ def _tiny_image_set_loader() -> ImageSetLoader: "feature_type", ["Neighbors", "Texture", "Granularity", "VolumeSizeShape"], ) -def test_run_single_channel_dispatches_each_type(feature_type: str) -> None: +@pytest.mark.parametrize("anisotropy_spacing", ANISOTROPY_SPACINGS) +def test_run_single_channel_dispatches_each_type( + feature_type: str, + anisotropy_spacing: tuple[float, float, float], +) -> None: """Each single-channel dispatch branch runs and returns a framed result.""" request = {"type": feature_type, "channel": "DNA", "compartment": "Nuclei"} - channel, ran_type, df = _run_single_channel(_tiny_image_set_loader(), dict(request)) + channel, ran_type, df = _run_single_channel( + _tiny_image_set_loader(anisotropy_spacing), + dict(request), + ) assert channel == "DNA" assert ran_type == feature_type assert len(df) == EXPECTED_TINY_OBJECT_COUNT # two objects in the tiny label mask diff --git a/tests/test_image_utils.py b/tests/test_image_utils.py index f8e9b7a..15b2976 100644 --- a/tests/test_image_utils.py +++ b/tests/test_image_utils.py @@ -60,7 +60,19 @@ def test_crop_3d_image_returns_expected_subvolume() -> None: np.testing.assert_array_equal(cropped, image[1:3, 2:5, 1:5]) -def test_single_3d_image_expand_bbox_adjusts_for_anisotropy_and_bounds() -> None: +@pytest.mark.parametrize( + ("anisotropy_factor", "expected"), + [ + (1, (0, 0, 0, 5, 9, 9)), + (2, (0, 0, 0, 4, 9, 9)), + (5, (0, 0, 0, 3, 9, 9)), + (10, (0, 0, 0, 3, 9, 9)), + ], +) +def test_single_3d_image_expand_bbox_adjusts_for_anisotropy_and_bounds( + anisotropy_factor: int, + expected: tuple[int, int, int, int, int, int], +) -> None: image = np.zeros((5, 10, 10)) bbox = (1, 3, 3, 2, 5, 5) @@ -68,10 +80,10 @@ def test_single_3d_image_expand_bbox_adjusts_for_anisotropy_and_bounds() -> None image=image, bbox=bbox, expand_pixels=4, - anisotropy_factor=2, + anisotropy_factor=anisotropy_factor, ) - assert expanded == (0, 0, 0, 4, 9, 9) + assert expanded == expected def test_check_for_xy_squareness_returns_ratio() -> None: diff --git a/theorectical_explainations/notebooks/interpolation_edge_demo.ipynb b/theorectical_explainations/notebooks/interpolation_edge_demo.ipynb new file mode 100644 index 0000000..db99d22 --- /dev/null +++ b/theorectical_explainations/notebooks/interpolation_edge_demo.ipynb @@ -0,0 +1,847 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "29f5e272", + "metadata": {}, + "source": [ + "# Interpolating across a hard edge (object/background boundary)\n", + "\n", + "This notebook shows, concretely, why resampling a raw image that already has\n", + "zeros baked in outside the object (or resampling with `order >= 1` in general)\n", + "lets nonzero values *leak* into background, and why that matters for\n", + "`mahotas.features.haralick(..., ignore_zeros=True)`.\n", + "\n", + "Sections:\n", + "1. 1D toy signal — a step edge, resampled with `order=0/1/3`\n", + "2. Quantify leakage: how many \"background\" samples become nonzero\n", + "3. `order=3` overshoot / ringing (can go negative)\n", + "4. 2D image — visualize leakage spatially\n", + "5. The bug: masking **before** resampling still leaks\n", + "6. The fix: resample mask (`order=0`) + image separately, mask **after**\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "97199720", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-26T19:54:59.120743Z", + "iopub.status.busy": "2026-08-26T19:54:59.118832Z", + "iopub.status.idle": "2026-08-26T19:55:00.409663Z", + "shell.execute_reply": "2026-08-26T19:55:00.408366Z" + } + }, + "outputs": [ + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31mRunning cells with 'zedprofiler (3.13.3) (Python 3.13.3)' requires the ipykernel package.\n", + "\u001b[1;31mInstall 'ipykernel' into the Python environment. \n", + "\u001b[1;31mCommand: '/Users/mike/ZedProfiler/.venv/bin/python -m pip install ipykernel -U --force-reinstall'" + ] + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import scipy.ndimage\n", + "\n", + "plt.rcParams[\"figure.dpi\"] = 110\n", + "rng = np.random.default_rng(0)" + ] + }, + { + "cell_type": "markdown", + "id": "5a1af801", + "metadata": {}, + "source": [ + "## 1. 1D toy signal: a step edge\n", + "\n", + "We build a 1D array that is `0` (background) everywhere except a block of\n", + "`100` (object) in the middle — a hard edge on both sides, exactly like a\n", + "masked object sitting in a zero background. We then upsample it (mimicking\n", + "the z-axis anisotropy correction) with `order=0`, `order=1`, and `order=3`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "2d6bec25", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-26T19:55:00.412219Z", + "iopub.status.busy": "2026-08-26T19:55:00.411420Z", + "iopub.status.idle": "2026-08-26T19:55:00.623485Z", + "shell.execute_reply": "2026-08-26T19:55:00.622448Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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3Llz3TaxHj58ODNnzuSdd94hLi6O2NhYTp8+zccff0yzZs3Ytm2by+v06aef0q5dO7p168aQIUNo3rw5Go2GkydP8uuvv9KsWTPn0/+rcf5vvvkmK1ascE6DrNPpWLduHb/++iu9e/d2tlqpU6cO/v7+fPzxx/j4+BAUFET58uXp3LlzqerPoaTXASj5NLiXe/DBB3njjTcYOXIkdrudYcOGFSgzcOBAxo0bx+23386AAQPIzs5m8eLFmM3mEh0D4KmnnuKll17i9ttvp3///iQkJPDFF19QtWrVAjftb731Fn/99RfDhg3jp59+on379vj6+nLq1ClWrVqFt7e3M/FVkutfYa70M1aa61n9+vUZNmwY69evJyYmhm3btjFr1ixq1qzp0oLh6aefZtWqVUyaNIn169fTvXt3QkJCOH36NH/99RfHjx93tpa56667eO+997jjjjsYOXIkPj4+/Pnnn/z2229Ur169QLei/+Lvv/9m7ty5QF53pRMnTjBz5kzS09OZNm1agWSZYxBbd0JCQv7TE/eOHTui1WpZt24dRqOxQCscR0Jk3bp1+Pv7F9pCorQxXl4H+cXGxhbbjWLUqFH873//Y9u2bUWWu1xwcDDvvPMOjz76KG3btmXUqFGYTCZmzJiBoijOhydFuZbf+6W9vhdlzpw5zvFFTp48iaqqLte2V155xfn/Xbt25d577+W7777jzjvvpG/fvpw4cYL333+fOnXqFOiK+MILL7BgwQJeeOEF4uLiaNiwIevWrWPOnDncf//9zoHdhRAldP0mnBFC3Oh2796tDhkyRK1UqZKq0+lUPz8/tVmzZup7773ndnpJx3Swu3fvVrt166b6+fmp/v7+at++fdUjR464lH377bfVjh07quXLl1f1er1asWJFtUePHurKlStdyp08eVIdPHiwWr58edXLy0tt2LChOnPmTLfTUDqmw3M3nSaFTFfobhvHtJGJiYnqsGHD1HLlyqlGo1Ft2bKl+ttvvxV63pcrbBrc/MuKii83N1d96aWX1MjISNVgMKgxMTHq559/rv7vf/9TAXXLli1u93W5pKQkddSoUWqlSpVUo9Go1qpVS502bZr6xx9/lHhqw6Lq1d057d27V+3Zs6caHBys+vj4qK1atVKXLFlSZF0X5ty5c+rQoUPV4OBg1dvbW23Tpo26evXqYrdzZ8WKFWrPnj3V0NBQVa/XqxEREWqnTp3U6dOnqzk5OS5l586dq9avX181GAxqeHi4OmbMGHXfvn1up0lMSUlRH3vsMbV8+fKq0WhUmzRpoi5atEgdO3asCqgXLlxwKZ+cnKy++OKLau3atVWj0aj6+/urtWvXVh955JECU6j+1/Nfs2aNOmjQIDU6Olr19vZWAwIC1AYNGqhTp05Vs7OzXcouW7ZMbdy4sWo0GlWgwHu6pPVXmuuAqpZuGlx321WtWrXAFMqqmjdt5tSpU9UaNWqoRqNRjYiIUB977DE1OTnZ7efN3TKr1aqOHz9ejYiIUA0Gg1q3bl3166+/dnv9UdW86TQnT56sNmzYUPX29lZ9fX3V2267Tb3vvvtcrh0lvf4V5ko+YyW9njnqYfXq1WqbNm1Ub29vNTg4WL3//vvV8+fPFyhvtVrVjz/+WG3ZsqXq5+enenl5qdHR0epdd92l/vDDDy5lly5dqjZr1kz18fFRg4OD1TvvvFPdt2+f2+uIu+tqcdxNAasoihoUFKR27ty5wHS9qlr8FLMNGzYs8lhFTYPr0KJFC7efKYe6deuqgNqzZ0+360sTY3HT4ALq4sWLXfZd2BSuCxcuLHY6YHfmz5+vtmjRQvX29lYDAwPV3r17O6d5LYmr9b1f2Hduaa7vhSnuNcnPbDarkydPVmvUqKEaDAa1YsWK6siRI9WEhAS3+7948aI6cuRItWLFiqrBYFBr1Kihvv3226rFYilRfEKISxRVLQOjAQkhbkrR0dFER0ezdu1aT4fynwwbNozZs2eXicHT3HniiSf4+OOPOX/+/DVrySH+u169erFu3TrS09OveYuhsuRmuQ7cLEp7PXN0MSpqHBIhhBDiRnHr/AITQogbnLtZeE6dOsU333xDw4YNJflRRrh7nbZv386KFSvo2rXrLZX8EEIIIYQoS2QMECGEuEG8/fbbbNy4kS5dulC+fHmOHDnCF198QW5uLu+8846nwxP/euyxx0hJSaFdu3YEBgbyzz//8OWXX+Lt7c0bb7zh6fCEEEIIIW5ZkgARQogbRLt27di4cSMffvghKSkp+Pv707p1a8aPH19gylfhOd27d+ejjz5i6tSppKenExISQu/evZk4cSL16tXzdHhCCCGEELcsGQNECCGEEEIIIYQQNz3piCyEEEIIIYQQQoibniRAhBBCCCGEEEIIcdOTBIgQQgghhBBCCCFuejIIahFyc3PZu3cvYWFh6HRSVUIIIYQQQgghRFlitVpJSEigfv36eHl5FVlW7uqLsHfvXlq0aOHpMIQQQgghhBBCCFGErVu30rx58yLLSAKkCGFhYUBeRYaHh3s4GiGEEEIIIYQQQlwuPj6eFi1aOO/fiyIJkCI4ur2Eh4cTGRnp4WiEEEIIIYQQQgjhTkmGrZBBUIUQQgghhBBCCHHTkwSIEEIIIYQQQgghbnqSABFCCCGEEEIIIcRNTxIgQgghhBBCCCGEuOnJIKhCCCGEEEIIcQ2oqkpiYiK5ubnYbDZPhyPEDUWr1eLl5UW5cuVQFOWq7FMSIEIIIYQQQghxlamqytmzZ8nIyMBgMKDVaj0dkhA3FLPZTGZmJiaTiUqVKl2VJIgkQIQQQgghhBDiKktMTCQjI4Py5csTGhrq6XCEuCElJSVx8eJFEhMTCQsL+8/7kzFAhBBCCCGEEOIqy83NxWAwSPJDiP8gNDQUg8FAbm7uVdmfJECEEEIIIYQQ4iqz2WzS7UWIq0Cr1V61MXSkC4wQQgghCqVaLGSsXYv1wkX0FSvgFxuLopOfD54mr4sQQghRevJNKYQQQgi3VIuF86+/QeaGDagmE4rRiN/69VScMEFutj1IXhchhBDiykgXGCGEEEK4lbFqFRmrV2PPyQEvL9BqyVy/gcy1az0d2i0tY+1aMteuxZ6djeLtLa+LELeI5ORklixZwpw5c1iyZAnJycmeDqnEoqOjefLJJ6/bdiUxbNgw6tWrV6KyAwcO5Pnnn78mcfz00098/PHHBZaXJr6yoCSvVWpqKoqiMGvWLADsdju1atVi3rx51yHCPPKYQAghhLhFuetGYc/MJHvnLrJ3bCfj99+xpaaCTodiMoFej6IoWM5f8HTotyxVVcnasAFrSgpotagWC/roaGznz2M5fwF7Tg6KVotiMEg3GSFuEocOHWLKlCl89913mEwm53Kj0ciQIUMYN24ctWrV8mCExVu8eDHBwcHXbburaefOnfz8888cP378muz/p59+Yvv27Tz++OMuy1999VWysrKuyTGvhSt5rTQaDS+++CITJ05k0KBB6K7Dd5R8CwohhBC3oMK6URhrx5C2cOG/hQBFQVEUVFWF3FzQatFVKO/R2G9VtsxMkj77jKxNmwFQAI2vL2pGBorRiL5iBdKXryB1wQK86tXDdPQI5qPHUC0W6SYjxA1q3bp19O7dm6ysrLzr8GVMJhOzZs1i/vz5/PLLL3Ts2NFDURYuJycHb29vGjdufEXbX+l2V9OHH37I7bffTkRExHU9bvXq1a/r8a7Uf32NBw0axOjRo/nll1/o16/f1Q3ODekCI4QQQtyCMtauJXPdOmxpaegqVkTR6chcvwHsNhSdDu9GjQh7+ikCevRAGxSExmBA0Wjw6xSLf6dOng7/lpOzbx9nn32WrL82ofH3xxAdjTYwEGw2VKsVvw7t8YuNJXvHdlSTicw1a8jeug1rSgqqRuN8faWbjBA3jkOHDtGrVy+ys7MLJD8cVFUlOzub3r17c+jQoWsaz6JFi2jUqBFeXl5EREQwduxYl6lJ165di6IoLFu2jAEDBhAQEMDAgQMB990jPvvsM6KiovDx8aFbt27s2rXLpXuEu+0c3ULWrl1L48aN8fX1pUWLFuzYscNl39OnT6d58+YEBgZSvnx5evfuzeHDh0t9zllZWSxcuJABAwa4LL9acQwbNozZs2ezb98+lH8fOAwbNszlGABxcXEoisKCBQsKxNisWTPuvfde599nzpxh6NChlCtXDm9vbzp06FAgLnfS0tIYOnQo/v7+lC9fnvHjxzN9+nQURXGWKe1r/MUXXxAdHY2Pjw9dunTh6NGjBY7r4+NDr169mD17drExXg3yCEAIIYS4BVkvXMSWloYKqLm5aAICsMbHg6pSZdbXaLy9AQjo0YPMtWuxnL+ArnwY/p07O1sQWC5exHLmDD5NmnjwTG5+qT/9RMrceaCqKDodIUOH4n97d7LWr8dy/oJL95byzzxD9s5dJM+bi+XcubxuMllZqD4+qCaTdF8S4gYyderUIpMfDna7naysLKZNm8bMmTOvSSxLly5lwIABDB48mClTpnDw4EHGjx/PqVOnCtyUjxw5kqFDh7J48eJCpwFeunQpjz76KCNGjGDAgAHs3r2be+65p0SxnD9/nqeeeooXX3yRwMBAXnrpJfr378+xY8fQ6/VAXhLgySefJCoqivT0dD799FPatGnD4cOHCQkJKfF5b9q0iaysLNq2bXtN4nj11VdJSEjg4MGDznEwwsLCChwrOjqaVq1a8f3337skY44cOcKOHTuYOHEiACkpKbRr1w4/Pz9mzJhBYGAgM2bMoHPnzhw5coTy5QtvwTl8+HBWr17NtGnTiIqK4osvvig0cVKS1/iXX35h5MiRDBs2jMGDB7Njxw5nsiS/Nm3aMGHCBOx2OxrNtW2jIQkQIYQQ4hZkN5lQbTZQFOwWC8q/3ST04eHO5AeAotPh37Vrge1Vm42E//0P04GD+Hfvhr5KFWxJyTLWxH/kbtwOfUQEqCr6ypUJe/opjFWrArh9XXRhYQTc3h00ChdOnsKWmYlqtWK7eBFtUBD6ihWu9ykJIa5AcnIy3377bbHJDwdVVZk3bx7vvPNOqW7wS2rSpEm0atWKb7/9FoAePXrg4+PDqFGj2Lt3L/Xr13eW7dOnD1OnTi1yf2+++SadO3fmiy++AOD222/HYrHw6quvFhtLcnIy69ato27dugD4+vrSqVMntmzZQrt27QB4//33neVtNhvdunWjfPnyLFiwgJEjR5b4vLdt24afnx/VqlW7JnFUr16dsLAwTp48SatWrYqM5d5772XcuHFkZGTg7+8PwHfffUdwcDC33347AB988AGpqals3brVmezo0qULNWvW5N1332XatGlu971//34WL17MN998w/333w/kvca1a9d2W76kr3H79u35+uuvgbzXODc3lzfeeKNA2YYNG5Kens6BAwec9XmtyK8TIYQQ4haj2u3kHtiPxt8fNScHNSsTjF7ObhQlYc/IQDWbUVWVpFmzUXNyUAwGND4+MtbEFXIZlyU3F8XLy1mXYWPG4NO8GRqjsUT78o+NJWv9BjLWrsWWnIyqKOirVC7x6yuEuHYee+wx9u7dW2SZpKQklwFPS8JkMtG2bVtCQ0MLLVO/fn0++eSTUu03MzOT3bt38+6777osHzRoEKNGjeLPP/90SYD06tWryP3ZbDZ27dpVYH99+/YtUQIkIiLC5Sa5Tp06QF5rC4fNmzfz6quvsnPnTpfZckrbDSY+Pp5y5cp5PA6Ae+65hzFjxvDTTz85kxTff/89d999NwaDAYCVK1fSqVMnQkJCsFqtAGi1Wjp27Mi2bdsK3bdjXZ8+fZzLNBoNd955J++9916B8iV5jXfs2FEg4TJgwAC3CRBHHcfHx0sCRAghhBBXV9aff2I5EYc+PJyAnj3ReHmVuuWGNiiIiLfeIn7Sa5gOHwZFQTWbUby8nGNNuGuhIAqXsXYtmRs25M3kYtC7jNtR2rpU9HoqTpyAX8cOpC5cBBoNFV4cJ0kpIW4QNpvtum5XlNTUVFRVpUIF1xZkgYGBGI3GAtPx5i+XX0JCAlartUBXj6K6Z1wuKCjI5W/Hzb9jPJJTp07RvXt3mjVrxmeffUZERAQGg4FevXq5jFlSErm5uRgLSTxfzzgAKlasSKdOnfjuu++4//77+fvvvzlw4AAfffSRs0xiYiKbN292dsG5XFGDqsbHx6PX6wkMDHRZXthrUtLXOP/2hW3nqOOcnJwi93s1yLegEEIIcQtRzWZS5uU1YfZp0oRyIx6+4n0pej1eMTFkrFyJareDzYY9MxNFr5OxJq6A9cJF7BkZ2K1WFJMJjZ8/albWFdelo/uSX+fOKNe4T7UQouRK0gJjyZIlVzQjxjvvvEPfvn2vIKrCBQUFoSgKFy9edFmelpaGyWQq0OXm8kEz3QkLC0On05GQkOCyPP/+r9SKFSvIzMxk0aJFziSF1WotkKgpiZCQEFJTUz0eh8O9997LY489RlJSEt9//z3h4eEus/+EhITQo0cPt60sCkvkAISHh2OxWEhLS3NJghT2mpT0Nc6//YUL7r/PHHVcVOulq0W+DYUQQohbSNqvv2JNTASNhpAH7v/P+9NVKI/G1xdtQEBeKxCLBdVkRhsc9N+DvcWoFjN2sxnsdhQvLzCbndPb/heS/BDixtO+ffsib1jdMRqNtG/f/qrH4ufnR6NGjQoMdvrjjz8COMe7KCmtVkvjxo1ZsmSJy/KffvrpP8XpkJOTg6IoLq0gfvzxR2eXkNKoVasWCQkJZGVlXbM4DAZDiVuE3HXXXc7ZYL7//nsGDRrkMmho165d2b9/PzExMTRr1szl3+XdlPJr1qwZgMtrYrfb+fnnn0sUV35arZYmTZqwePFil+XuZrGBvFluAGrWrHlFxysNaQEihBBC3CJUs5n0pXk/Zvw7d8JQpcp/3qdjrInMDRtQdDpUqxVtQADGWrX+875vJdaEBDLXrUPj54eanQ2qimqzlWpclpLI2bePnF27CRl631XbpxDi6gsJCWHIkCHMmjWrRAOhKorCfffdd00GQIW8QVD79evH0KFDGTp0KIcOHWL8+PHcfffdRd5YF+aVV16hb9++PPLIIwwcOJBdu3Y5p0H9r7OAdO7cGcib1WTUqFHs27eP6dOnF+iyUhJt27bFbreza9euUid6ShpHTEwMX331Fd999x01atSgXLlyREdHu91ncHAwPXr04PXXX+fcuXMMGTLEZf3YsWOZN28eHTt25Omnn6ZKlSokJCSwZcsWIiIiGDNmjNv91q1bl/79+/PUU0+RnZ1NVFQUn3/+uTOJcyVefvll+vbty/Dhw52zwMyZM8dt2e3btxMTE1PoeCtXkzwSEEIIIW4RisFA+JS38evciaDBg6/OPv8da6LiKy8T9vTThI4YQfQP3+N1221XZf+3ArvJxIWp07BnZGKoVpUKL75I2OjRVHzl5as6mGzO339zfsJE0hYvJmfvP1dln0KIa2fcuHH4+voWmxDQaDT4+vrywgsvXLNY+vTpw/z589m7dy99+/ZlypQpjBw5krlz517x/j755BN+++03+vbty/Lly51dg/KPQ1Fa9evXZ9asWezYsYPevXvz3XffsWDBgivab82aNalfvz7Lly+/ZnE8/PDDDBw4kNGjR9O8eXMmTZpU5H7vvfdezp07R/Xq1WnevLnLutDQUDZv3kyjRo0YN24c3bt3Z8yYMcTFxdGyZcsi9/vVV1/Ru3dvnnvuOe6//36qVavGsGHDrvj16NOnD59++imrVq2iX79+rFy5kh9++MFt2eXLl7tM73stKWpJ51a6BZ05c4bKlStz+vRpIiMjPR2OEEIIIW4yqqqS8P4HZG3cCED5cS/g26LFtTmW3c6551/AHBeHoVo1IqZOke4xQlxDjmb9hT3NL4l169bRu3dvsrKy3LYEURQFX19ffvnlF5exIG5EM2fOZMSIEZw4ceI/1dnVNmPGDD788EOOHDlyxa0hblQdOnRAq9WyZs2aa3aMffv20bBhQ44cOULVf6d5z6+4z1Jp7tvlW08IIYS4Bah2+3U/pj0nh4sffIDp+InrfuwbRe7evc7kR9DgQdcs+QF5Y4GEPPgAAObjx8n6889rdiwhxNXRsWNHtm/fzrBhwwqMCWI0Ghk+fDjbt2+/4ZIfycnJPP300yxZsoTVq1czdepUxowZQ9++fctU8gNgxIgR5OTkXPF4GDeKhQsX8v777/PHH3+wdOlSBg8ezIYNG3j66aev6XGnT5/OAw88UGjy42qTMUCEEEKIm1zugQMkffEFwfffj0/jxtftuBffnU7O7t2YDhwkYuoUtFfQ//pm592gAeWefIKcPXsIuvvu63I878aNydm1i5R53+LTqhWaf6duFEKUTbVq1eKrr77i3XffZcOGDaSnpxMQEED79u2v2Zgf15per+fYsWN8++23pKamEhYWxv3338/UqVM9HVoB3t7ezJo1i7S0NE+Hck35+fkxZ84cjhw5gtlspnbt2sydO/eKZiMqKbvdzm233cYDDzxwzY6Rn3SBKYJ0gRFCCHGjU1WV+BdfwnT0KPoqlak0ffp16/ZgOnKE+FcnoFoseNWJyRvP4rLR8IVnmE+d4uyzz4HdTvDQoQT17+fpkIS4KV2NLjBCCOkCI4QQQogSytr4F6ajRwEIuf+B6zrmg7FGDUIfHQVAzr79nHtpPMlz55Hxxx+oVzAd4Y1OtVhI//13Emd+RcJHH3usDgxVquDfuRMAaQsXYrvJn2oKIYQQDtIFRgghhLhJqWYzKfPmAeDdsAHejRtd9xj8Y2MxHTtG0pczMR0+TOaaNWj8/fFbv/6qznBS1qkWC+dff4PMDRuwpaSg2mxkbfyTqG++8UgdBA0eTOaGP7Hn5JC1ZQsB3btf9xiEEEKI601agAghhBA3IdVi4cK775J74AC2jAyChgzx2Oj1hshIVJMJFAW7zYaq2slcv4HMtWs9Eo8nZKxdS+aGDdhzclABFAXz8RMeqwNdcDChIx6mwoRXQVFu6ZY5Qgghbh23xmMXIYQQ4haiWiyce3UCGb/+imqzofH2JuWbbzzW4sKakIhi0INGA1Yr9swsNHo9lvMXrnssnmK9cBF7ZgZ2ixVFUdAEBYHV6tE68Gvf3tkqRTWZUIzGW65ljhBCiFuLtAARQgghbjIZa9eSuXo1qqqCXo/G39+jLS50Fcqj8fJG6+eXF4+fH4qXF/qKFTwSj0eodlSTGex2FKMRjcGAYjR6tA4crVIUnQ5deDiKTnfLtcwRQghxa5EEiBBCCHGTsV64mNflRKNBFxiINjgY1WTyWGsD/9hY/Nq3B0Cj06IoCn4d2uMXG+uReK43W2oqGevWofj5oWjyuiGpNpvH68D5PtFqsSUkoKqqR98nQgghxLUm7RuFEEKIm4yuQnm0wcGg0aDx88Oenu7R1gaKXk/FiRPIXLsWy/kL6CtWyLvx12jI2bcP77p1PRLX9aBarVycPh17SiqGKlUI7N0LFI2zDjzZ1URXoTyK0YgtJRm7yYyi06H197+1WuYIIYS4pUgLECGEEOImkZyczJIlS1h69iyJVSpjt1rznuxbrR5vbaDodPh37UrI0Pvw79oVe66JC5Pf5vyk18jZvdsl/jlz5rBkyRKSk5M9Fu+VcBu/RoMxJgaAco89Ssj99zvrwNPjbDha5ihaHVitqCYTiZGV+Ons2Ruy/oUQN5ZnnnmG6OhoT4fBX3/9RevWrfH29iYqKoqpU6fmdSEtgY8++ojmzZtf4wg9Z/fu3UyaNIns7GyX5fPmzSMmJgabzeahyK5cmUmAHD16lEcffZRGjRqh0+moV6+e23IzZ86kZs2aeHl50bBhQ3755ZcCZdLS0nj44YcJCQnB39+fAQMGEB8ff61PQQghhPCIQ4cOMXz4cCIiIujXrx/3Dx9O+zlzePqfvfwWFIht+LAyN7ClotVgTUwEu524tyYzesgQZ/wPPPAA/fr1IyIigoceeohDhw55Otwi5a//y+N/eMQIEpo2JeLdd/AvY11+HC1zbA8+QLpWy+mcHJ5atIgHhg27oepfCCGu1NGjR7n99tsJDw/nl19+4ZlnnmHChAlMnz692G2zs7N58803efHFF69DpJ6xe/duXnvttQIJkMGDB2Mymfjmm288FNmVKzMJkH379rFs2TJuu+026tSp47bM999/zyOPPMKgQYNYvnw5rVu3pn///mzevNml3KBBg1i5ciWffvop8+bN49ChQ9xxxx1YZWo3IYQQN5l169bRrFkzZs+ejclkAuCRkBA6+vnxV1oaT//2G82ffJL1Gzd6OFJXGm9vKox7gXSLhQM7dlB13ToUs9mljMlkYtasWTRr1ox169Z5KNKiuat/AD2u8W8+dcpzQRZh/caNtHj+eTYkJpJms1LPy9u57kaofyFE2ZaTk3PNj2EymbDb7Ve07TvvvENoaCjff/89Xbp0YcyYMTz77LO89dZbLtd0d3744QcsFgt9+/a9omNfK/+lPkpKq9UybNgw/ve//13T41wLZSYBcuedd3L69GkWLFhAkyZN3JaZOHEigwcP5o033qBTp058+umnNG/enNdff91ZZtOmTfz222/MnDmTe+65hz59+rBgwQL27NnDokWLrtfpCCGEENfcoUOH6NWrF9nZ2c7muhE6Hd38/Xk0NJRwvR5VVcnOzqZ3795l7kn+8fR0Hv1zA1a7ncp6PU+UK4eSr0xZjt9d/QMEa7W8X6kSnXz9bpj49+Tm3aQ08PJyKVOW4xfiVmOx2Vnxz3lm/xXHb/vOY7Vd25vc/BYtWkSjRo3w8vIiIiKCsWPHkpub61y/du1aFEVh2bJlDBgwgICAAAYOHAjAuXPn6NOnDz4+PlSqVIlp06a5PcaZM2cYOnQo5cqVw9vbmw4dOrBjxw6XMtHR0Tz55JNMmzaNqKgovL29r7jL3vLly+nXrx8Gg8G5bPDgwaSmprJp06Yit509ezZ9+/ZFd1nrylmzZqEoCrt27eKOO+7A19eXGjVquG0psWzZMlq2bIm3tzdhYWE89thjZGVlOddnZWXx5JNPUqtWLXx8fIiOjubRRx8lLS2txPUxa9YsGjRogJeXF5UqVeLll1926baSmprKI488QqVKlfDy8qJy5coMHjzYue3w4cMBCAsLQ1EUly5LAwcOZPfu3fz999/FVXOZUmbawmo0Redijh8/zuHDh5k6darL8sGDB/P8889jMpkwGo0sX76coKAgunXr5ixTq1YtGjVqxK+//so999xzTeIXQggh/iuLzc6qAxe5kJ5LxUAvutQuj06rKbTMgm/mkJ2Ti3rZk54G3nlP8HNVlSatq3NniJHTKSYWrT/EtGnTmDlz5qV9mU3sXfMjlpQzGEIqU7/TPej0BtfjXcMyU6dOZUtqKvNsNoYGB9PSx4cBwcFoGkUQGWzgdIqJhesOYrPbycrKcsZ/PeMuqtzUqVOdyQ+dTsvd7WtTJVBP47hc9Cm5PBQSwt+5OSTbbGRlZfHOtKk8fk+naxpTacpMnToVs9nEwI4x1DNqCTljRslQCNJqSb3sB7IdBXtEfUb/bwHPPv6w2/cllOz9K4TIcza16JYRAV46/L30l8qnZDN1xUE2H0/GZLVj1GlYVi2UZ2+viU6jwUevJdj30uc7MdOEyVowQVIpyLvAspJYunQpAwYMYPDgwUyZMoWDBw8yfvx4Tp06xYIFC1zKjhw5kqFDh7J48WK0Wi0Affv25cyZM3zyyScEBQUxZcoUTp8+7ZI8SElJoV27dvj5+TFjxgwCAwOZMWMGnTt35siRI5QvX95ZduHChdSoUYMPP/wQrVaLr68vqqqWaEwKrTZvNrKsrCxOnz5N7dq1XdbXrl0bRVE4ePAgsYV0XczJyeGvv/7igQcecLv+vvvu45FHHmHs2LF88cUXDBs2jObNmxPz75hQCxYsYNCgQQwfPpzXXnuN+Ph4XnzxRVJSUvj++++BvC42NpuNt956i7CwME6fPs1bb71Fv379WLNmjcvx3NXHe++9xwsvvMCYMWOYPn06Bw4ccCZApkyZAsDYsWNZvnw5U6ZMITo6mvj4eJYvXw5Ar169eOWVV3jzzTdZsWIFgYGBGI1G5zFjYmIIDg7m999/p2HDhsXWe1lRZhIgxTl48CBAgTdoTEwMZrOZEydOULt2bQ4ePEitWrVQFKVAOcc+hBBCiLLGYrPz6k//sPrgRbLNNgw6DQ0iA/l4SBN8jHlf1xfTc3lhwR72nE3DZLGRbqhDuf6vkLHzF1Dzfug2yL2AgkJkTX8+bJWCVlHJVfX0rNuKjzbvYMvyefj4eGOzWlC2fUF07iH0WLCi58jeeVzsORNFm/ejW5cWh++ql/LKqBYsip6Du78hps+zaP/90brNXoOsJeOonbUFL9WEXdHwz87Z0OIRtFodgd56IgL0HPvlPapmHkDBTi5G1u36mRVbjtOzdU1sKlzIgVoWeDnMm6DgTPQGO2o03B3TiIdWgM2uMn/DPzzyy2y8/5njEtPRvXOo0WssWp2Oi/oI9mX5oyx7ntpZW/BRc7AqOpeYalcMQFGtHPvlPapkHkSj2jErBjbsWYZf64fxsqY7Xxeb1YJh50yqZh1AhwUzeeUy209iwZ/7qFe/DlX9rYxubqB2Whrm4zosGi25YV7MTD1Hw8qwSW2ITqulo99hIjetxlvNxaLonTFVCPQlPNALq9XCsV/eIyLzKAbVjFkxsOnvn/Bveg9a7aWfbD46Fcumz6iamRdTNt5s2LMMped0tIqdoItb3b6+jno663Ube5MUfvprP18+2oKeQXHorHYupgUQ6OVLc20dfj++N+9gGi2hPZ/BO7oxB3V6XlzwNw2rBPNg62i0mku/tRpXCeKtZQdYdziBXIsNL72WtYcu8kbfepIEEcKNR+fsKHL9/a2iuKd5Zeffj8/byf74vGuTVlHINltZ/k88u0+nEuitp3Pt8ozpVtNZ/v9WH2XHyZQC+/15dLsrinfSpEm0atWKb7/9FoAePXrg4+PDqFGj2Lt3L/Xr13eW7dOnj8tD6xUrVrB9+3ZWrVpF586dAYiNjaVy5cqEhIQ4y33wwQekpqaydetWZ7KjS5cu1KxZk3fffdel1YjFYmH58uX4+vo6l61du5ZOnToVey5r1qwhNjaW1NRUAIKCglzWGwwGfHx8imxVsnv3biwWCw0aNHC7/sknn+Txxx8HoE2bNixbtoyFCxfyyiuvoKoqzz33HIMGDeLLL790bhMeHk7Pnj159dVXqVu3LmFhYXzyySfO9VarlapVq9KuXTsOHz5MzZqXXu/89ZGRkcHEiRN54YUXmDx5MgDdunXDYDAwduxYnn/+eUJDQ9m6dStDhgzhwQcfdO7L0QIkLCyM6tWrA9C0aVPKlStX4DwbNGjAli1bCq2nsuiGSYCkpOR9gPO/QYODgwGcb9CUlJQCZRzlimsalZ6eTnr6pR89MnCqEEKI62XVgYusPZRAWrYZRVEwWW1sPJrIyv0X6Ne4EgCLdp1l47FEAFS7HcXgjXd0I/QhlbCbstCodupt/JRgHy21I1PxUcwcVysQqOTQLfgsXrHV8Fr/JnYgUGuikjYVFbCpCgbMVE3fyrufTGFFxm0AvFpuFQ/57MwrgwaDaqZm1nZOfjGU1Ky8Zs9fKXfzathmTGjJVH2prEmkTs4Ozq4+RrrNSLI5BytZVPOzoaoQZw/DS2MjJmsrg7t24UGff8cmsYFxpw0lAXKPGshVFRStSvPwVAbd0ZNfM/J+hJXf9BqRulSXmKqlb3PGNPtsFbKqdeX1wLyYvFHxJcslpr2p8QT56KnmZyNbNXBKDSNQyaFW+mb2/hxHRSXV+bo460kFGwpGbNRK38wr336Mb+t76RewiWF+2zD8nUPWGSN2S97Nvn+omad66TmdYuRe6730Cj1Ll8CfwW5Fq1gxqGZnTBeyzMTnpBHk60U1PxsX1CAuqsEEKjnUzthC5uqdpNsuPXXTkEU1Q6YzJhtGaqVv5tXPprItswJzys9xfX3z1dPLh2qxLmwg/bu3oGvQz/gpudj1CrqKNkI0NhrVbe9MgHhXb4F31SYoBm+w20nPtbDxaCLHE7II9L70dPr+VlGsO5yATqNQKcibtBwLaw8lsOrgRW6vW/HqfliEuAWZrHbsKug1CoqioAUsdhXLdegGk5mZye7du3n33Xddlg8aNIhRo0bx559/uiRAevXq5VJuy5YtBAYGOpMfAIGBgXTt2pWdO3c6l61cuZJOnToREhLiHLtRq9XSsWNHtm3b5rLP2NhYl+QH5N2k5y/nTq1atYotUxzHfWJYWJjb9d27d3f+v6+vL1FRUZw5cwaAw4cPc/LkST744AOXMSo7duyIRqNh+/bt1P13evg5c+bw3nvvceTIEZfuMfkTIPnr46+//iIzM5OBAwe6HKNr167k5OTwzz//0LFjR5o0acKsWbMIDw+nR48ehU5EUphy5crdcPfMN0wC5Hp47733eO211zwdhhBCiFvQhfRcciw2FCXvx61OAYtN5UL6pf7VKVlmVBX0WgWbqoLdBlo9KKBaTVTJScGbvPUBoTlYVQ2+mEhTvamkJOOrMWFRjGi0GjSKBQWwoAVFwYqKHhvV/MxUNOY9kQs1WC+VQcGKggEbXj6+BHjlPYC4zQ5eipkkNRRvxYwVLQZsaDQabIo3eq0eLwUU0rAoOhSNlnSMRChJVNBmkG3Pax6NAj7lLaiJGtCqKHo7qkXBEq+lWdBJlimRecU0GjcxWZ0x1Q6oS5LO7IwpQMkuEJN/SAW8NCYU0jChR1E0pONDJSUJPz3YuNREPK+eVCyKDlAwqzq8FDNRxmxUqwmzTcUeryHrjA67RQEFFI2KNUuLkuhFtj2vXEVtGkbMZOCNL2ZnXWo0GvS+QRh9fPDSmFFIIwMfZ0xBShYajRGbcikmnWJ2iSlL9SZUyaCqr5mThmBsOm/X1xcFq3KpnmrH1GV3trczJjsKoGCsZ8ULC/r0S03Idf6hoNXlvdcADSqqCgrgrdc6yyVkmsi12AgP9MpLsHnrOZuaw/m0S+9fIcQln97ftMj1AV6ut2nD20YzfeVhtBoFfy8dGblWbHaVp7rUoEPNMHwu+zwCPNn5NrddYK5EamoqqqpSoUIFl+WOLhH5HzLnLxcfH+82UZC/XGJiIps3b0av1xco62iJUNi2AH5+fjRq1KjIcwGc3XIcD83zj6lhNpvJzs52aZ2Sn2Psk8u7hFzOXasSxzaJiXkPMvr37+9229OnTwOwePFiHnjgAUaOHMlbb71FaGgo8fHx9O/f32XsFXBfl0ChY2s6jjFjxgxCQkKYPn06zz//PJUrV+all17isccec7tdfkaj8boMdHs13TAJEEdLj7S0NCpWvPQkwdEyxPEGDQ4Odr6gl0tJSSnyTQx5faBGjBjh/Ds+Pp4WLVr859iFEEKI4lQI8MKo05BttqIFQnwNqEB0uUtPdBpXCSbM/xw6jYJqsnEiKRVFqyNlzVfkHNlMu8BA1KAgshQNOh87OuzYrFYCNRZy0TFnWwpDnp5M37592fnbHLw2TcSKjmyNHz72THRY6Rnbjpe7DwVg528qyZsOFChzof3rNP63TKff5mDZtJ4QJZdsjR+pdjs6rCS3nUQT537moP33WIrWixB7JhbVwM7d//Dimv3O83u3RQy97HbwUrGhoNGpkK2QfewoF7b+DMDWGa/ikzi30Jhu+/d4lk2/EaLkkqip6CzjNiZFh5dGi489EwtGfNo/4Tw3Rzl39RQTFc6Fd15kKtCsYW3qWvKyAqoW8AZ7roZlRwJ4butZYCLHOtUlt60OnQbOaSNdYmqcL6ZAxew8Vi7eLnE7yhnyxWTBSK/YtrzSfSjwWKFxX2j/OhO7D6XRkiV89+EOctvqULDhhYVAMklTfTm651LTfGtGEqopG7vNij03k7Do2zB4GRnfK8alZceKf85jV+HIxUy89BqCvA146bVUDHQdVFUIkae0Y3Hc1SSSXadSWXc4gYQME156LV1iyjOwaaTbbmbl/NzfmF+JoKAgFEXh4sWLLsvT0tIwmUwF7rHyD0UQHh5OQkJCgf1euHDB5e+QkBB69OjBG2+8UaBs/kRD/mNA3qxcpekC4+vrS+XKlQsMk3Do0CFUVS0w9EL+WCEvOXT5vWlJOLb9v//7P1q2bFlgfUREBADz58+nUaNGfPbZZ851hc3Ilb8+HMdYtGgRlStXLlC+atWqQF4S64MPPuCDDz5g7969fPjhhzz++OPUq1eP9u3bF3suqamphIaGFluuLLlhOmU63oD536AHDx7EYDBQrVo1ZznHmzZ/uaLexAABAQFERkY6/4WHh1/FMxBCCCEK1yWmPM2i8pL9FruKTVWJrRVGl9rlXcp0rBmG1a6SqerR6PTkHN9OztGtANT/dwrTE6YUMmw6UKCcLhedYuf3xDB+2XzC+YOmfqd7iAtugw4r5ewX0WElLqQt9TtdGiz8WpY5HtSaXzafcKmDlYfOkqtowAJ6bJANdqvC2RN5T7KMRiOxAx67bnEXVS524BPOH+QHL6TmtaJQQOdjQ7FBrqLhtwNnnPtZuOEgq5LKo1Ps1yym0uyrffv2/LL1BH8khmFTtRgUOwbFzvrkEBauO4jh3x/TOce2knN8B4pWhy6wAjqDscD70vHerBsRAECuxY7VXvD9K4S4cnqthjf71WNSn7o807Umk/rUvW5j7DhaVuQf7PTHH38EoF27oscVadGiBWlpaaxevdq5LC0tjT/++MOlXNeuXdm/fz8xMTE0a9bM5d/lXWwK4+gCU9y/pk0vtb654447WLJkCRaLxbnshx9+ICgoiDZt2hR6LEc3mhMnThRapjC1a9cmMjKS48ePFzjPZs2aORMgOTk5LrPTAMybN69Ex2jdujU+Pj6cOXPG7THcJS3q16/P+++/D8CBAwcAnMfP3+LEIS4u7qp0KbqebpgWINWqVaNmzZrMnz/fZa7lH374gS5dujhfnDvuuIM33niDVatW0bVrVyCvj9SuXbsYN26cR2IXQgghiqPXang0tjr/nEvHYrPz4h216VU/3OXHreMH8KqDFzmflsuCbzaw7PdPnQOgnjSbCdFqCSxnJi7Bwnl7IGtTKvw7C8xuHnjwQedTIb3BSNPHv2Lvmh8xJ5/GEFKZpvlmCbmWZVp0uodBex9l1qxZzocWq9PS+fmiD92CgzDmatDaIMNqpbWPD+eDgvHu348KFcMJvU5xF1duyJAhzJo1i9fPnydCp6eOvy/GTB0mFVYmp7A6I8O5H5vNzjpTfeq36XxNYyppmZCQEO65ZxAjvviGQbE1ebOxBZvNzp5VcXxYMZzTFgtTEy6C3Ubyyo/xua0lbbv14tl+ndzO7qLXari/VRRnUnLQaxVe6FFbZoER4irTaTUeG1Nn0qRJ9OvXj6FDhzJ06FAOHTrE+PHjufvuu4tNTvTo0YMmTZpw3333MXXqVIKCgnj77bcJCAhwKTd27FjmzZtHx44defrpp6lSpQoJCQls2bKFiIgIxowZU+Rx/P39adasWanO6/nnn2fevHnce++9PP744+zdu5d33nmHt956q0Dy4XJVq1YlPDycHTt2cMcdd5TqmIqi8N577zFkyBCysrLo1asXvr6+nDx5kmXLljF58mRq1qxJt27deOKJJ3jjjTdo3bo1v/76K6tWrSrRMYKCgnj99dd54YUXOHPmDLGxsWi1Wo4fP86SJUtYuHAhPj4+tG3blv79+1OvXj20Wi3ffPMNBoPB+bDEMWvNRx99RL9+/fDx8XG+3llZWRw8eJCJEyeW6vw9Ti0jsrKy1Pnz56vz589XY2Nj1cqVKzv/vnjxoqqqqvrtt9+qiqKoEyZMUNesWaM++uijqk6nU//66y+Xfd1+++1q5cqV1R9//FFdunSpWr9+fbVhw4aqxWIpVUynT59WAfX06dNX7TyFEEKIwuw8maz2/t8Gtff/Nqgmi63Y8gcPHlT9/PxUjUajAiqg6jSo6x70Ubc94qveHaNTAVWj0ah+fn7qwYMHr8NZlJy7+LWgdvHzU4cEBam9/P3V1ytUVOdHRasLq1ZT97/yqmo3mTwdtmo+e1bN3LTZJf7L4+7i56dq/z2fG6X+P+rppW57xFf9qnWw+mNUlPpN5SrOcyhp/GsOXlB7/2+DOvCTv4osJ8St4sSJE+qJEyc8HcZVs2DBArVBgwaqwWBQK1asqD7zzDNqTk6Oc/2aNWtUQN22bVuBbU+fPq326tVL9fLyUsPDw9XJkyerTz/9tBoVFeVSLj4+Xn344YfV8PBw1WAwqJGRkeqAAQPUjRs3OstERUWpTzzxxFU7r40bN6otW7ZUjUajGhkZqb799tuq3W4vdrvRo0erbdq0cVn29ddfq4CakJDgsrxhw4bqgw8+6LJs5cqVaseOHVVfX1/V19dXrVu3rvrss8+qqampqqqqqtVqVZ999lk1LCxM9ff3VwcMGKBu3rxZBdT58+c791NUfXz33Xdq8+bNVW9vbzUgIEBt3Lix+uqrrzrvi59//nm1fv36qp+fnxoQEKC2bdtW/e2331z2MWnSJDUyMlLVaDQur9fChQtVX19fNT09vdi6+q+K+yyV5r5dUdV8fUU8JC4uztkXKT9HPy2AmTNnMmXKFE6dOkWtWrWYPHkyvXv3dimflpbG2LFjWbRoEVarle7duzNjxgxnc6KSOnPmDJUrV+b06dNERkZe0XkJIYQQJZWRa+FkUjYmq40mVYLd9nHOb926dfTu3ZusrCxUVaVJuIbPeud1hen7fTbxmXkj0P/yyy907NjxWp9CqeWPPz+DovB0eDhD69bD398frzoxlH/hBbT+/h6IFnIPHuTClKnYc7KpOGECWxMTi4xfUZQbov7vqm5idAsDGWkaErfktRKacP48h8zmEse/6VgSk389gEaBJU9e2VSbQtxM4uLiAIiOjvZoHOLa2LNnD40bN+b48eNERUV5OpzrbuDAgfj7+/PVV19d82MV91kqzX17mWmXGB0djaqqbv85kh8ADz/8MEeOHMFkMrFnz54CyQ/IG8xl5syZpKSkkJGRwcKFC0ud/BBCCCGuN38vPfUqBdI0KqREyQ/ImzZv+/btNP+32W/ryLzR7U+n2UkyGxg+fDjbt28vkzffcCn+YcOGFRjkzmg0MnT4cB764w8ihz0IQO7+A5x78UVS5s8nee48Mv74A/WyKf6uBdViIf3334l//Q3OPjMGW3o6Gr0BbLZi479R6j+8RT9QFE6bLKT+O+NLYz+/UsVv0OX9rLSrYL0OU3MKIYQnNWjQgD59+vDhhx96OpTr7sSJEyxbtoyXX37Z06GUWplpAVIWSQsQIYQQNwJrSgrLe9zBmrNnGPzyYMpl7SYnoBrhA6YUOwNaWZKcnMyGDRtIT08nICCA9u3bu8SfsWoVCZ98iuXs2bwEkaqiGI34dWhPxQkTUHRXf2gz1WIh/rXXyfj9d+yZmaAo6MqVo8qsrzHmexJVXPxlmqqSEh/H+m17yJ79DbqdO6jYoiXtf/yhxLv452waLy3aC8APo1rhY7hhhpoT4pqQFiA3vyNHjrBkyRKee+45T4dyXf3555/ExcUxdOjQ4gtfBVezBYh8MwkhhBBlRI7Zhslqw6jT4m3Qlni73D17UNLT6BoSQrPhb6Lx8gK7HTRlpqFniYSEhLgMdJ6ff5cumI4fJ3nmV2h8fdEEBGBPTydz7Toy2q0hoHu3qxqPPSeHhP/9j/Sff0a120GnQ9FowG7HfPRogQRIcfGXaYpCcERV+vatygUvb9aPGoly5gz27Gw0Pj4l2oVRd+n9ZrLY8Sl8/EAhhLgp1KhR45ZLfkDezD/Fzf5TVkkCRAghhCgjlv8Tz9cb46gU5M2n9zctfoN/pe/cSW5OLtrKVfKSH3DDJT9KSuPtA4qCJiAA5d//mo8cIfHjj8Fuw69jRzTe3lflWLaUFNKXr8jrYqPTofXzQ1s+DNv5C1jOX7gqxyiLyrVuhdFgJCcri9x9+/Bp3rxE25X392JE+6oYtBq89CVP4AkhhBDXiyRAhBBCiDLCbM0bN8GgK3nyQlVVkjZtRkXFu2GDaxVamaGrUB7FaMSeno4mIABrUiKqqmLPyiLpiy9Jmfct/l274Ne1G7n792G9cBF9xQr4xcYW6CKjWixkrF2L9cJFdBXKowsrj8bHG6+aNQHQR0TgVacO2Vu2oPj5oQsNxZ6ejmI0oq9YwROnf+0d+AXtqU3ownzJvphJzp49JU6ABPro6duo0jUOUAghhLhykgARQgghygjzvwNHGkuRALGcPUvOhfMANA/+G1a+Ak2GQbnbrkWIHucfG0vW+g1kbtiANT4exWjEv3Nn9FWqkL11K/bsbFKXLCXh08/AZAKtBo2vH37r11NxwgSsSclYL5xHtVpJmjmTnN1/o+bmotpsKN7e+HfvRsRrrzmPV+n997jw5lsux/Pr0B6/ywZov6kcXAYX9xPYIIhX5xyhdYcOno5ICCGEuGokASKEEEKUESbLvwkQfckTIDl//012djYavUJwSC6c2ABNh1+rED1O0eupOHECmWvXYjl/waV1hzUpifTffiPl+x+wZ2SAoqBojCg6HZnrN5C5di22jExS5s7Flp6OJT4eFCWvu5DdjpqRgfnoMey5uc6uRBqjsdDj3ZQqN4eL+7mtpp01WZn8HRdHtxo1PB2VEEIIcVXcpN/eQgghxI3H0QLEoC3NAKh7yc7OQVfeiEZRwCcUQqpdqxDLBEWnw79r1wLLdaGhhAwZgmqxkPi/GahaLYqq5nWViY/Hcv4CGl9fIK/7C6oKWi2KRoPi6wsWCwF39Lg0jkoxx7spRbaAHbMJ1puJClTYtWsX3bqVbHBZm13loVnbMFvtjLujNo0qB13bWIUQQohSkgSIEEIIUUaYLDag5C1AVKuVnH/+ISc7m8pN/PMWVm6R16rhFqaPiEDj74+i06Hx93cZt8OvUycCe/UkY9UqLkyZmlcmMAB7egaq1Yq+YkVPh+9Z5WPA6I+eDO6oF8LhbdvIPXAAr5iYYjfVahRSs83YVcj9970shBBClCU35xDxQgghxA3I5BgEVVvCr2e7nZw7erAxO4PKla15yyJLNmDlzcw/Nha/9u1RrVas5/PG+3CM26FotSgGA/5du+LXoQOqzYY13rXMLU2jhUpNUYAB5UPpu/cfLr7zLqqqlmhzoy6v9ZLjvSyEEEKUJZIAEUIIIcoIUylngVEMBnZpNOz2SSEgLG96WCKbXcsQbwiOcUIqvvIy5Z54goqvvEzFCRNcxu0oSZlbVuUWAFSromLOzcWSkoLl1KkSbepovWSWBIgQohjPPPMM0dHRHo1h+/btDB8+nJiYGDQaDb179y7V9h999BHNL5spa9asWSiKQmJiIgBxcXEoisKCBQuuatxXQ0ZGBiEhIWzcuNHToVxX8i0vhBBClBF9G0XQqloIkcE+Jd5m165dtKmix9vbG8Jqg1fgNYzwxlGScTtuqbE9SiMyLwESUMGIojORnZNNzp69GKKiit3U0XrJZJUuMEKIsm/jxo1s2LCBli1bkpOTU6pts7OzefPNN/m///u/QsuEh4ezadMmav47vXpZ4u/vz+jRoxk/fjzr1q3zdDjXjbQAEUIIIcqIxlWC6VEvnHqVik9i2M1mrAkJ7Nq1k661A/IGQP33yb0Q/4lfGES1xV6nP/+YcsjOziHn779LtKmjBYhjRiMhxK2ttEmFK2EymbDbr+yaM3r0aI4ePcq8efNK3Rrlhx9+wGKx0Ldv30LLGI1GWrVqRUhIyBXFd604XpeHHnqI9evX83cJr/E3A0mACCGEEDeg3D17OP3oY9x97DgbrE2g3l0Q1c7TYYmbRY/JhN45iW25KtnZ2eTu3583c04xLrUAkQSIEFedzQIHfoYtn8OBX8Bmva6HX7RoEY0aNcLLy4uIiAjGjh1Lbm6uc/3atWtRFIVly5YxYMAAAgICGDhwIADnzp2jT58++Pj4UKlSJaZNm+b2GGfOnGHo0KGUK1cOb29vOnTowI4dO1zKREdH8+STTzJt2jSioqLw9vYmOTn5is5Jo7ny2+HZs2fTt29fdEV0nXTXBcYR/0cffURUVBSBgYH069ePhIQEl21TU1N5/PHHCQ8Px2g00rRpU1auXOlSZtmyZXTr1o3y5csTEBBAy5YtWbFihUsZR7ecTZs20a1bN3x9fXn++ecBiIqKokWLFsyaNeuK6+FGI11ghBBCiBtQzt97MJvNZJpM+NbtBm2f9nRI4iaj0Wiw31aD7LQ0VJOJ3MOH8a5bt8htHIOgmqULjBBFSz1d9HqvQPAKuPR3yilYNQniNoI1F3ResG8xdH4FNDow+ILPZa0MMhPyyuUXVPmKwl26dCkDBgxg8ODBTJkyhYMHDzJ+/HhOnTpVYHyLkSNHMnToUBYvXoz232nd+/bty5kzZ/jkk08ICgpiypQpnD592iV5kJKSQrt27fDz82PGjBkEBgYyY8YMOnfuzJEjRyhfvryz7MKFC6lRowYffvghWq0WX19fVFXFZiv+2qPValH+42xpOTk5/PXXXzzwwANXtP3SpUs5cuQIH330EYmJiYwZM4bRo0fz/fffA2A2m+nWrRsXLlzgrbfeolKlSsydO5devXqxc+dO6tevD8CJEye48847ee6559BoNCxfvpyePXuyevVqYvMN6j1kyBBGjhzJ+PHj8fG51NW2TZs2/P7771dWETcgSYAIIYQQZcSI2dvJNFkY1aE6nWqXL7Jszt69ZGdnsycnl4caN75OEYpbTbVmTTi7dCkxqkrunj3FJkDa3BZKjQp+1ImQsWiEKNIPQ4te33wENLn/0t8LhkH8HlAARQuWLNi/BM5uB68gqNkDOr10qfyGd+HU5oL7HXVlYz1MmjSJVq1a8e233wLQo0cPfHx8GDVqFHv37nXekAP06dOHqVOnOv9esWIF27dvZ9WqVXTu3BmA2NhYKleu7NI15IMPPiA1NZWtW7c6kx1dunShZs2avPvuuy6tRiwWC8uXL8fX19e5bO3atXTq1KnYc1mzZk2B5EBp7d69G4vFQoMGDa5oe1VVWbp0KUajEchrKTJ58mTsdjsajYZ58+axe/du/v77b+rUqQPA7bffzpEjR3jjjTf48ccfAXjyySed+7Tb7XTq1Il9+/bx+eefFzjHRx99lHHjxhWIpWHDhnz44YdkZGTg7+9/RedzI5EEiBBCCFFGZJmsZJlsqBQ+5ahqsZD288/k7N6NJSODNIOJRg0bXscoxS1jz3xerLSFLRVM5CYlkb7iN3RhYXnTCRfS5Ltvo0rXOUghbhHWXFDtoNHnzfiFFuyWvG4x11hmZia7d+/m3XffdVk+aNAgRo0axZ9//umSAOnVq5dLuS1bthAYGOhMfgAEBgbStWtXdu7c6Vy2cuVKOnXqREhICFZrXvcerVZLx44d2bZtm8s+Y2NjXZIfAE2bNi1Qzp1atWoVW6Y48fHxAISFhV3R9h07dnQmPwDq1KmDxWLh4sWLVKxYkZUrV1K/fn1q1qzprAuAbt26MXfuXOffZ86c4eWXX+aPP/4gPj7eOWV506ZNCxwz/+viUK5cOVRV5cKFC5IAEUIIIcT145g5w/Bvk+H8VIuF86+/QcYff2BLT8fHbmNy3XIE/fwwDJ4DRr/rGa642SkKQTqVaL0RS2YmpsOHOf/mW/itXy9TBgvxXw2aW/T6/DN6tXgU1rwFGi0YA8CUDnYbdHgBbuuS1wXmcu2fc98F5gqkpqaiqioVKlRwWR4YGIjRaCww/kb+cvHx8W4TBfnLJSYmsnnzZvR6fYGy1atXL3JbAD8/Pxo1alTkuQDObjn/hWPsk8uTGKURFBTk8rfBYHDZb2JiIrt27XJbF4747XY7ffr0IS0tjddff53bbrsNX19fJkyYwCk3U5e7q7PLz+F6DFhbFsg3lxBCCFEG2O0qFlvekxvHTBr5ZaxdS+aGDahWK+h02MwWDMleZMbZ8Jfkh7jaIptjPa/FmGkkR2PBPzwKe3o6mes3kLl2rUwhLMR/UdqxOBrdm9fd5egfkHUxbwyQWj2g8VDQurml87uylgnuBAUFoSgKFy9edFmelpaGyWQqMMNJ/vE1wsPDCwzwCXDhwgWXv0NCQujRowdvvPFGgbL5Ew3uxvBYt27ddesC4zjn1NRUKlas+J/2Vdj+GzRowMyZMwstc/ToUXbt2sVPP/3kMhNNYYmMwsY9SU1NBSA0NPTKA76BSAJECCGEKAPMtkuzZjhm0sjPeuEiqsmE6pjuT2tDseuwaMKvR4jiVhNUBZvVD8WeilUxoygKmoAArPHxWM5fcLvJ0r/PseFwAtXL+/Fox+puywghroBWD73eg8MrIP0cBETkjfvhLvlxlTlaVixYsIAxY8Y4lzvGoWjXrugZyFq0aEFaWhqrV692doNJS0vjjz/+cEmedO3alblz5xITE1Oge0tJXM8uMI59nDhxgtq1a//n/eXXtWtXfv31VyIiIoiIiHBbxpHocLQeATh58iQbN26kZs2aJT5WXFwcgYGB1ySRUxZJAkQIIYQoA1wSIDr3CRBdhfIoBgNqZiZ2VUWnKCh6BX0NGQRVXAOKgq5qDBrdGbysVqwZGahZWShGI/qK7ptSJ2aYOHg+A532v82wIIRwQ6uDmN4eOfSkSZPo168fQ4cOZejQoRw6dIjx48dz9913u4z/4U6PHj1o0qQJ9913H1OnTiUoKIi3336bgIAAl3Jjx45l3rx5dOzYkaeffpoqVaqQkJDAli1biIiIcEm+uOPv70+zZs1KdV4JCQmsW7fO+f+ZmZnOWW169uzpMlvK5apWrUp4eDg7duzgjjvuKNUxS+KBBx7gs88+IzY2lueee46aNWuSmprKrl27MJvNvP3229SuXZvIyEhefPFFbDYbmZmZTJw4kUqVSjcW0/bt22nTps1/mhL4RnJrnKUQQghRxpmtlxIgxkISIP6xsfi2b482KAhVUUEB32gv/Ppd2TR8QhTHv+fd6Ctp0KsK1jNnsGdk4Nu+PX6FNB93JO9MFrvb9UKIG1OfPn2YP38+e/fupW/fvkyZMoWRI0e6DMhZGEVRWLJkCU2bNmXUqFE8+uij9OnThwEDBriUCw0NZfPmzTRq1Ihx48bRvXt3xowZQ1xcHC1btrwm57Vv3z4GDhzIwIED2b9/Pzt27HD+nb/LT34DBgxg+fLl1yQuo9HI6tWr6d27N2+99Rbdu3fn8ccfZ/v27c4WN0ajkUWLFmE0Ghk4cCATJkzg5ZdfpmPHjiU+jsVi4Y8//ijwWtzMFNUxVKwo4MyZM1SuXJnTp08TGRnp6XCEEELcxM6m5vDonB0AfHp/UyoFebstp1qtZK5dy67/G0uQ/gL1HhiK5s7p1zNUcSsxZZI+oyPH15xBd7ESXkHlqDJ7FoZCmmT/uP00czadpEqoDx8NaXKdgxWibImLiwMgOjrao3GIa2PPnj00btyY48ePExUV5elwrsiyZcsYMmQIZ8+exc+v7I4lVtxnqTT37dICRAghhCgDfA1a7mkWSd9GEQR4Fd5DVdHp8O/cCWNEPF5RWjTRra9jlOKWY/TDK7oZ1vAsbHob2oAALGfOFF5cWoAIIW4RDRo0oE+fPnz44YeeDuWKTZ8+nWeffbZMJz+uNkmACCGEEGVAkI+B+1tHM6J9Nfy9Ck5755Cz52+yV0yngj6XEB8tRMj4H+LaMjS9j03J/qQrFshNw3zsWKFlHQmQy8e0EUKIm9W0adMKHaS0rMvMzKRjx47Fjq1ys5EEiBBCCHGDUHOyOf/sSOLfmokhw4if3g4b/wc2q6dDEzcrmwX2LuDeGDtVQtIh7QzmNbMLfc8ZdVoAzFbb9YxSCCE8okaNGjz33HOeDuOK+Pn5MXHiRPz9/T0dynUlCRAhhBDiBmH+8zvISUdVId5mQeMVAEd/z5sWUYhr4fAKOPoHWr2RFI0ZFTDHnSz0PefsAmOVFiBCCCHKHpkGVwghhCgDdpxMZtZfJ/Ez6nj7LvdTCpqPHgbVjk1RUbxU9P5hkH4G0s9d52jFLSM9Hqy5aHyC0fqexp4I1iw7tgtxaGMKFg/1M9I0KhijToOqqiiKTIcrhBCi7JAEiBBCCFEGpOVYiEvMws9Y+FezOcUKioLB14TO34iSmwo6Lwi4MfsfixtAQDjovPAzpxEVYSPxhAWNjx6r1Retm+K1KvozqU/d6x6mEEIIURLSBUYIIYQoAxyzZhj1hX81m7O8UHVe+ASYifa1gN0KNbpBzR7XK0xxq6nZA27rilajw8cHItonU+XJThg73e/pyIQQQohSkwSIEEIIUQY4Zs1wjKGQn2q3Yzp5EqvGmzStmSRDZbhjGvScDlpp0CmuEa0eer0H3V8n2WLgglVFafGwvOeEEELckCQBIoQQQpQBjhYgBp27jgVgTUhAzcnFZs4mQ2fFXL07xPSWG1Fx7Wl10PBe0vQVSMi0kHPuQKFF07ItfPDHYaatOEhipuk6BimEEEIUTxIgQgghRBlg+nfaUIPW/Vez+cQJABSbCbytVKjT9rrFJgSKglKuBlgV4n/5meRvvkG1WAoUs9jtrDpwkQ1HEknLKbheCCEcnnnmGaKjoz0aw+zZs2nVqhUhISF4eXlRq1Yt3njjDUymkiVwly1bRmRkJGaz+arGFRcXh6IoLFiwoMhys2bNQlEUEhMTS7zvRx55hEceeeS/hnjDkgSIEEIIUQY4pg0tbAwQnxYtiHz7ZaidiZePN/qKda5neEIQWL0ZilWD6Y/9pC1ZivnMmQJlLu/CZZapcIUQZVxycjI9evTgq6++Yvny5QwfPpzJkyczevToYrdVVZWXX36ZMWPGYDAYrkO0BfXq1YtNmzYRFBRU4m3GjRvHN998w5EjR65dYGWYtJsVQgghygDHGCCFtQBRNBp0ujRyvDII9AmGkGrXMzwhCK3ZijM+oGACVcUcF4exalWXMsbLunCZJAEixC0vJycHb2/va3oMk8mEXq9Hoyn9s/0xY8a4/N2pUycyMjJ4//33+eSTT9Bq3XdLBVi7di3//PMPDzzwQKmPe7WEhYURFhZWqm1uu+022rZty0cffcQHH3xwbQIrw6QFiBBCCFEGVCvnR5vqodQJDyi0TPLhLdhsNqx+lUDnmadN4talCauJt483di8L2MyY404WKKPXKihK3v+bLLbrHKEQNzfVYiH9999JnjuPjD/+QLVar+vxFy1aRKNGjfDy8iIiIoKxY8eSm5vrXL927VoURWHZsmUMGDCAgIAABg4cCMC5c+fo06cPPj4+VKpUiWnTprk9xpkzZxg6dCjlypXD29ubDh06sGPHDpcy0dHRPPnkk0ybNo2oqCi8vb1JTk6+aucZGhqKxWLBbi86iTt79mw6duxYIAGRmprK6NGjiYyMxGg0UrVqVV566aUC8V/up59+QlEU4uLiXJZnZWXx8MMPExgYSEhICGPHjsV62evurguMyWTilVdeoVq1ahiNRiIjIxk2bJjLfgcOHMi8efNc9nWrkBYgQgghRBnQo15FetSr6HadPTubnD17ubh3F6hgrFT3OkcnBBBQiZVKLCcPruaJlgbnuDSXUxQFg1aDyWqXFiBCFMFy7lyR6zUBAWj9/Jx/m8+eI+G96WRv3YbdZEJjNOKzYgVhTz+NotWieHujCw52lrcmJaG6GcdCHxFxRfEuXbqUAQMGMHjwYKZMmcLBgwcZP348p06dKjBOxciRIxk6dCiLFy92tqDo27cvZ86c4ZNPPiEoKIgpU6Zw+vRpdLpLt6MpKSm0a9cOPz8/ZsyYQWBgIDNmzKBz584cOXKE8uXLO8suXLiQGjVq8OGHH6LVavH19UVVVWy24hOvWq0WxZGp/ZfVasVsNrNjxw4++OADHn/8cfR6fZH7+eOPP3jooYdclplMJjp37kxcXBwTJ06kfv36nD59mj///LPYuNwZP3483bt358cff2Tnzp1MmDABg8HAlClTCt3m7rvvZvXq1YwfP55WrVqRkJDAokWLXMq0adOGxMREdu/eTbNmza4othuVJECEEEKIMs507BgX33mHpHPnuGd3DgdfH+fpkMStSKMhoH4P9ny+jJzcHLRxcaiqWuBGwqDLS4DIGCBCFO7M6KeKXB885F6C7r7b+ffZMc+Qu/8AKApoNNhzckhf8Rs5f+9BGxCAX2wsYaMvtSpI/PQzcnbuLLDfqguLHlSzMJMmTaJVq1Z8++23APTo0QMfHx9GjRrF3r17qV+/vrNsnz59mDp1qvPvFStWsH37dlatWkXnzp0BiI2NpXLlyoSEhDjLffDBB6SmprJ161ZnsqNLly7UrFmTd99916XViMViYfny5fj6+jqXrV27lk6dOhV7LmvWrCE2Ntb5t9VqdUl2PPjgg7z//vtF7iM+Pp6zZ8/SoEEDl+XffPMNu3bt4q+//qJ169Yu+7wS1atX5+uvvwbg9ttvJycnh+nTpzNu3DiCL0t4Ofz+++8sW7aMb7/9lnvvvde5/PL/B6hbty5arZYtW7bccgmQG64LzNKlS2nZsiX+/v6Eh4dzzz33cPz48QLlZs6cSc2aNfHy8qJhw4b88ssvHohWCCGE+O/M/zaJTTCZ8I6IJiC8umcDEresxo0bE2c2k52djT0rC+vFhAJlDP8OhCotQIS4euymvLF30Gjyko4aDaiq29mYrrbMzEx2797NgAEDXJYPGjQIoEDrhl69ern8vWXLFgIDA53JD4DAwEC6du3qUm7lypV06tSJkJAQrFYrVqsVrVZLx44d2bZtm0vZ2NhYl+QHQNOmTdm2bVux/5o2beqynU6nY9u2bWzYsIH333+fX375heHDhxdZJ/Hx8QAFur+sWrWKmJgYl+THf9G/f3+XvwcMGEB2djZ79+51W37VqlX4+PgwePDgIver0+kICgpynset5IZqAbJ27Vr69+/PAw88wFtvvUVSUhITJkyge/fu7N271znAzvfff88jjzzCyy+/TOfOnfnhhx/o378/GzZsoFWrVh4+CyGEEKKgrzee4GKGiXa3laPtbeVc1jm6GuxLTaVxk8aeCE8IAOrE1MYYqMGekw6UwxwXh75CeZcykcHe+Bp0+BgKHzxQiFtd5Iz/FbleE+A6HlTI0PtJ/N//QKdD4+eHPTMTrFbKPf4Yfu3aoeQbaLTco6PcdoG5EqmpqaiqSoUKFVyWBwYGYjQaC4y/kb9cfHy824E685dLTExk8+bNbrueVK/umvjPvy2An58fjRo1KvJcALcDmzpaQbRr146qVavSr18/Ro8eXWjrCMfYJ0aj0WV5UlISEVfYzcidy7v9wKXzLixxkZSURHh4eIGWee4YjUZycnL+e5A3mBsqAfL9998TFRXFV1995XxRy5cvT+fOndm+fTvt27cHYOLEiQwePJg33ngDyBvNd8+ePbz++uv8+uuvHotfCCGEKMyuU6mcSMwiKsSnwDpzXBzWnHR0hlQ6N4ryQHRC5NGnn+LHIf4ou9PQ+nuj5hb88fxmv/puthRCXK60Y3EE9etL7p49ZG7YgC0xEcVoxK9TLEF33YWiK3hLpwsNvUqRQlBQEIqicPHiRZflaWlpmEwml24sQIGb7/DwcBISCrYWu3DhgsvfISEh9OjRw3kPd7n8iQZ3N/jr1q27oi4w+TlaiBw9erTQBIjjnFNTU12Wh4aGsmfPniKP7+XlhdlsdlmWkpLitmz+OnfUWXh4uNvyoaGhxMfHu+2emF9qaiqhV/F9cqO4oRIgFosFf39/lxczMDAQyJuHGeD48eMcPnzYpd8ZwODBg3n++ecxmUwFPkBCCCGEpznGS3B0H3BQzWbMZ85iy0qme30ILHfeE+EJkSc4GqO3L2k1Eqn1woNoanT0dERC3BIUvZ6KEyeQuXYtlvMX0FesgF9srNvkx9XmaFmxYMECl2ljf/zxRyCv1URRWrRoQVpaGqtXr3Z2g0lLS+OPP/5wSZ507dqVuXPnEhMTU6B7S0k4usAUp1atWkWud3TpqVat8Onmo6OjMRgMnMg3GHTXrl354Ycf2LJlCy1btnS7bWRkJAcOHHBZtnLlSrdlFy9e7FLnCxYswMfHx2XMlfzHnzp1Kj/++KOzi5I7CQkJZGdnF1sXN6MbKgEybNgwvvnmGz7++GPuu+8+kpKSGD9+PI0bN6Zt27YAHDx4EIDatWu7bBsTE4PZbObEiRMF1gkhhBCeZrLmjVxv1Lk2zTWfPg02G6olB9XHSmhN9z+ohLgutHpsAZHYkxJIOryFsBpdi99GCHFVKDod/l0985mbNGkS/fr1Y+jQoQwdOpRDhw4xfvx47r777kJvxh169OhBkyZNuO+++5g6dSpBQUG8/fbbBOTr5jN27FjmzZtHx44defrpp6lSpQoJCQls2bKFiIgIl0SAO/7+/qUe0LNDhw7079+fmJgYNBoNW7Zs4d1336VHjx60aNGi0O28vLxo2rRpgSl677//fj7++GN69erFxIkTqVevHmfPnmX9+vV8/vnnQN44Ho899hivvfYabdq04ddff2XTpk1uj3Ps2DGGDx/O4MGD2blzJ2+//TZjxoxxOwAq5CVAevbsyUMPPcSxY8do2bIlycnJLFiwgB9++MFZbvv27UDxyaub0Q2VAGnfvj2LFy9myJAhPPHEEwA0atSIFStWOPtyOZoPBQUFuWzreJMUNUd0eno66enpzr9vxUFhhBBCeIbZ5r4FiDkuDlQ7imJB56MQVP3WGq1dlD1ekQ1IP7GL1GPbKdirH/46msiJpCyqhvrSJt94NkKIG1OfPn2YP38+r7/+On379iUkJISRI0fy9ttvF7utoigsWbKERx99lFGjRhEcHMzo0aO5cOECP/30k7NcaGgomzdv5pVXXmHcuHEkJSVRvnx5WrVqVWAw0KulWbNmfPHFF5w8eRK9Xk/VqlWZNGkSjz/+eLHbDhgwgPfff9+lu4nRaGTVqlW8/PLLTJ48meTkZCIjI11mYRkxYgTHjh3jk08+4f3332fw4MG8/fbbDBkypMAx3nrrLdauXcvAgQPRarU88cQTvPXWW0XGtXDhQl577TU+++wzJk2aRIUKFejevbtLmeXLl9O+fXu3Y6nc7BTV0XfkBvDXX3/Rq1cvHnroIXr37k1SUhJvvPEGer2eDRs24O3tzbx58xg6dCjx8fFUrFjRue327dtp3rw5GzdupE2bNm73P2nSJF577bUCy0+fPk1kZOQ1Oy8hhBBi4Kd/kWux8/zttehQ89JtZdKsWaQvmk921j70jc3UnPQ3+Lm77RTi+sjdPo9/PhuFvxpFubbP4dcxFmO1qs71U5YfZOPRRDrVCmNs91uvebUQDnH/zuAVHR3t0TjEtZGQkEDlypVZuXIlHTp08HQ4JWa1WqlSpQpTpkzhgQce8HQ4JVLcZ+nMmTNUrly5RPftN9Q0uE899RSdO3dm+vTpdOrUiQEDBrBs2TJ27tzJnDlzgEstPdLS0ly2dbQMyT9Iz+XGjh3L6dOnnf+2bt16jc5ECCGEuERVVeeUocZ8LUBCHnyQsNF3khuRiuITDL7yRF14llelenh5e2E/ZCJ96RJy9+1zWe+cBtcm0+AKIW5eYWFhPPbYY3zwwQeeDqVUvv32W/z8/Ny2OLkV3FAJkP379xeY2igyMpJy5cpx7Ngx4NLYH46xQBwOHjyIwWAocjCbgIAAIiMjnf8KG11XCCGEuJosNhVHe8z8XWAURSH5/F5UbyuE1oASTG0nxDUVehve3t7YjGaw5uZ107qMI4nnGNhXCCFuVuPHj6dRo0YFZnUpyzQaDV999RW66zCAbll0QyVAoqKi2Llzp8uykydPkpiY6GwOU61aNWrWrMn8+fNdyv3www906dIFg8FwvcIVQgghSsRmV6lR3o8qoT74exX8QZJ7Jm9KvcDqTa93aEIUZPDF5lsRq5cZmzlHEiBCiFtWWFgYEyZMuKHuMYcOHXpLDn7qcEOlfR599FGeeeYZnn76ae68806SkpJ48803KV++PPfcc4+z3KRJk7jvvvuoXr06nTp1ck5FtH79eg9GL4QQQrjnbdDy3qBGBZabT53Ccuo0GeeS0Gg0lKvV+voHJ4QbFxs+wRvvP8nUpga0Z06jWiwoej1wKQFikgSIEEKIMuaGSoA89dRTGI1GPvnkE2bOnIm/vz+tW7dm/vz5hIaGOsvde++9ZGdnM2XKFKZMmUKtWrVYvHgxrVvLD0chhBA3jqyNG0ldsJC/D2n4LrQ+v0ffuk9sRNlSq00v9mY+QnZONoHWQMxnzmCsmjcQqmMqZ2kBIoQQoqy5oRIgiqLw6KOP8uijjxZb9uGHH+bhhx++DlEJIYQQ14Y5Lg5VVdmTkEhM586g9/J0SEIAec2+tRUqkJ6TSzhgPnHCmQBxDoJqtXkwQiE8T6vV3lBjQwhRVtlstqvWzeiGGgNECCGEuBldSM/lqz9PMHfzSXItl24aTSdOkJOby9GcHBo3buzBCIXIR1W5o1VtMuxpYDNjPhHnXGXQadAooCAD9opbm5eXF2azmaSkJE+HIsQNKykpCbPZjJfX1XkIdEO1ABFCCCFuRhfTTSzedRaAu5vkzV9vS0/HlpSMPSOB6pE2WtSu5MkQhXClKDxf9yLZWVkoRjuK96UfpnfUq0jP+jKTnhDlypXDZDJx8eJFUlNT0Wq1ng5JiBuKzWbDbDbj7+9PuXLlrso+JQEihBBCeJjZdqnVh3MGjX9n1tBb03mgtYaa/rmeCE2IQilhNbFEHkdpW4mQIUMuLZepmoUA8j4LlSpVIjExkdzcXGw26RYmRGkYDAYCAgIoV67cVftukQSIEEII4WEmS95gkVqNgkaT9wVvPnECbGZUnQVvfyP6ijGeDFGIAoKqNyN1zwpyz/7j6VCEKLMURSEsLMzTYQgh/iVjgAghhBAe5pgu1NH6A8AUF4dqzcVqNGP09oPgaA9FJ4R7obVaodVq0WeeBeulgR7Tsi2sPXSRlfvOY7XJTDBCCCHKDkmACCGEEB7mSIAYLkuAWC9exJabhc3LjNU/ErR6T4UnhFtKuZr4+PiQc9pM0v9NJ2P1agDOpeUwfeVhZqw+So5FmvwLIYQoOyQBIoQQQniY2eZoAXJpgLzwN9+EbqFYw3LwiqzvqdCEKJx/OFrvAGwXIW3lH2Rv2Qrka8lklRYgQgghyg5JgAghhBAeZvr3KfnlN46KoqBkHQe9nfIxbTwVmhCFUxTU4GrYva1YcrOcA/caJAEihBCijJIEiBBCCOFhGkXB26DFx3DZFIlZSag5KRiNRrylBYgoo/yqNsHubcVmzsWamIgtM9OlJZNZEiBCCCHKEJkFRgghhPCwu5tGcnfTSOffWVu2oibGcfS0iRpRvhB6mwejE6JwYV2fpv3DHzDzNgNVAPOJOAy31XKuN1llDBAhhBBlh7QAEUIIIcqYtKVLOPf5POavVFkcNBIMvp4OSQi3dAHlCalRlwu5uQCY4+JcunJJCxAhhBBliSRAhBBCiDJEtdsxnzxJdnY2cWYz9Rs383RIQhSpUaNG/JOcjAqYT5zAoJUEiBBCiLJJusAIIYQQHrbjZAqJmSaqhPhwG1moOblkZ+dwwmymcePGng5PiCJ1aBDF6fU5WDKTMcfFodEo6LUKFpsqg6AKIYQoUyQBIoQQQnjY8r3xbDmRTLc6FajikwiqHaMlmZ4tAqkQ6O3p8IQoUsfgCyTUBzUjHX1kJKqq8vF9TdFrFfy99J4OTwghhHCSLjBCCCGEh5lteU/JjToNphMnwJqLl3cOz7TWg93q4eiEKFr5mLbYg0xom2dTfswzKIpCxUAvQv2MLlPiCiGEEJ4mLUCEEEIID3OMk2DETub69VgSE7FpbKjGYPAJ8XB0QhTNGFEXL28v7FmppP+yCGtaLvqKFfCLjUXRyU9NIYQQZYd8KwkhhBAeZrLa0disVP/2E7I3b0I1m9FqvbDv90e1WuUmUpRtIdXw8vIhdxtc2DYd1Qp2vQH7ilWEjH+ZiiF+no5QCCGEAKQLjBBCCOFxZqudmJN7CNy7DVBAARQV5ZyZzLVrPRydEMUw+GBLLYeS6IUtMwv0etIsdtLWrmPbdz97OjohhBDCSRIgQgghhIeZrDYCM1NRLGYM1aqh+NvBYEexK1jOX/B0eEIUS6uvgGJXUM1m1KwszF5+6KwWNEkJng5NCCGEcJIEiBBCCOFhJqudNL8gMBixpyZjt9vQ2LUoXj7oK1bwdHhCFCugVn1UjQp2sFuteOVkYtXpyQoI9nRoQgghhJMkQIQQQggPM1nsHIhqgLlpS1RzLuRoAA1+HWPxi431dHhCFCusz12o5cyoqGC1orOaOVilHvExzTwdmhBCCOEko6oJIYQQHvb18OaYrHbsq9JJz9pL9tmTBFYNp+Ir42UAVHFDUCKbMCWwNo8kHCciwJvsWtVZ2nAwrVXF06EJIYQQTtICRAghhPAwX6OOEC+F7C+nYT9wnNBQGxHRGSgrx4HN6unwhCieovBMowwiwnPQKulUNW9nZM5nmC1mT0cmhBBCOEkCRAghhCgDbLt/wpachKpCgt2KzuAFR36Hwys8HZoQxTu8gjr6c6heVuyKFkuGhmaW7VRN2uDpyIQQQggnSYAIIYQQHmS22tl5KoX4PXtAtWO1qRiD9Wi8g8GaC+nnPB2iEMVLj8eo2MDbCnYrliwdBtWMr0lmMRJCCFF2SAJECCGE8KCUbDMTl+zj9x3JqIDBYKNcsAZyU0HnBQERng5RiOIFhKPR6akYZsfgY8Yv1IaXly9tGjfwdGRCCCGEk4ysJoQQQniQyWIHICk7GLtGj5dvDiF6E9itUKMb1Ozh4QiFKIGaPVCqdcI7cwE+bVLQ+euhdk/KN+3n6ciEEEIIJ2kBIoQQQniQ2WYDICgjGYuqI0tnIb1cE7hjGvScDlp5ViFuAFo99P+ERDWIs+l2LPXukfevEEKIMkcSIEIIIYQH5f7bAiQ0LQFsJrJ1NnxaPQQxveXmUdxYtHoyg+uSkK1yPiWbNLNKYqbJ01EJIYQQTpIAEUIIITzIbLOjtVnRqxawW9EHaPCKrO/psIS4Iv5Vm6BJN5C85C8+f+J1Hpu7w9MhCSGEEE6SABFCCCE8yGy1Y9Pq2NizB+aGiXhVMEBIdU+HJcQVCYtpi9akw3AyjRpnDmC22lFV1dNhCSGEEIAkQIQQQgiPMlnzusBUspzGggV7QEUw+Hg4KiGujLZ8TQxBOlTVTmBOCnpTLla7JECEEEKUDZIAEUIIITzI/G8CpKLpBAD68DqeDEeI/yYoCl2IDyarika1E5ye6EzyCSGEEJ4mCRAhhBDCg1pUDeHdiskEnErhRLxCuZj2ng5JiCun0bKuxhj2pirkoickPdGZ5BNCCCE87f/Zu+8wqar7j+PvO317A3YXli69CQqIEUFQsFdEo4kFY2KJJtZo1AhW7InRmORnjUqs0cQOKigWsIEisCB9YZelbC9T7/n9MezAwtKWgWV3P6/n4dG9c+6Z78ydc++Z75x7jhIgIiIiTSgtwU3ix+/j+Ho97yxoQ8rPLmnqkET2yaDDhrE2FMa2bbIqNioBIiIiBw0lQERERJqQXVtLeMMGampqSD5Ek59K89e/f38KIxHsSN0tMJGmDklERAQAV1MHICIi0pqVLF9NIBQmEArRfvCQpg5HZJ8lOA19uieQFSgjUlGkESAiInLQUAJERESkCc2cNZ+Om4po3zaJnP6pTR2OyL6zHIzrEyCwNERC31zaJnmaOiIRERFgH26BOffcc/nwww/jGcsee+655xg8eDA+n482bdpwwgknUFtbG3v8rbfeYtCgQfh8Pnr27MkzzzzTJHGKiIjsjru4iARTS1qKn77Z+qIoLYDbh+mYg79HMR1P7E56srepIxIREQH2IQGycuVKxo0bR5cuXZgyZQqrV6+OZ1w7dffdd3PVVVdxzjnn8MEHH/CPf/yDrl27EolE7y/97LPPOOOMMxgxYgTvvfce55xzDpdccgmvvfbaAYlPRERkb3g3rMNNGBINmT2HNXU4InHhad8PgNKf5jZxJCIiIltZxhjT2J0XLlzI008/zYsvvsimTZs45phjuOSSSzjzzDPxeOL/K9aSJUvo378///vf/zjhhBMaLDN+/Hiqqqr4/PPPY9vOO+885s+fz6JFi/bq+dauXUvHjh0pKCggLy9vn2IXERFpyGenTyBz/ULoFqbv3z+F1NymDklkn1V/8RSLn/0dqe0Poefk+U0djoiItGB78719n1aB6devHw899BDr1q3jtddeIzExkQsvvJDc3Fyuuuoq5s+fvy/V7+CZZ56ha9euO01+BAIBZs6cydlnn11v+7nnnsvixYtZtWpVXOMRERHZFyYcxhWuxgCRVB+k5DR1SCJxkdTpULymPaHvA8y9+8GmDkdERASI0zK4TqeTU089lUmTJnH44YdTWlrKM888w2GHHcaoUaNYunRpPJ6GOXPmMGDAAO666y7atWuHx+PhZz/7GXPnRodXLl++nFAoRO/evevt16dPHwDy8/PjEoeIiEg8WC4X647pRngklHXoDJbV1CGJxEebHjhqnVAE3u91G4yIiBwc9jkBsmTJEv7whz+Ql5fHxIkTyc7O5p133qGiooIZM2ZQXV3NL37xi3jEyvr165k+fTr/+te/+Nvf/sabb76JZVmMGzeODRs2UFpaCkB6enq9/TIyMgAoKSnZZf0VFRWsXbs29q+oqCgucYuIiOxMWtUKcEGoXe/dFxZpLnypVKekAODctB47EGjigERERPZhGdynnnqKp59+mjlz5tC1a1euvvpqLr74YrKzs2NlxowZw8MPP8yYMWPiEqxt21RVVfHaa68xcOBAAI444gi6dOnCY489xvjx4/ep/ocffpgpU6bEI1QREZHds23ahgoBcLYf1MTBiMTXhszOdDCLscMRQuvW4e3WralDEhGRVq7RI0CuvPJKOnXqxIwZM1i2bBk33XRTveRHnR49enDbbbftU5B1MjIyyMrKiiU/ADIzMxk8eDALFy6MjfQoLy+vt1/dyJDMzMxd1n/ttddSUFAQ+/fVV1/FJW4REZGGVHzwLkt/gMJi6N73sKYORySupve4mmWRNpSHPYQKCpo6HBERkcaPAFm3bh1ZWVm7LZebm8vtt9/e2Kepp1+/fixfvrzBx/x+P927d8ftdpOfn19vNEjd3B/b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3LLp+LY8uxv5UUeToIqIiIiIiIhIi6cEiIiIiIiIiIi0eEqAtDCpqancfvvtpKamNnUosp/oGLdsOr4tn45xy6bj27Lp+LZ8OsYtm46vaBJUEREREREREWnxNAJERERERERERFo8JUBEREREREREpMVTAkREREREREREWjwlQERERERERESkxVMCpBnJz8/nuOOOIykpiZycHG688UaCweBu9zPGMHXqVDp16kRCQgIjRoxgzpw5ByBi2Ruvvvoqp512Gnl5eSQlJXHooYfy9NNPs7t5irt06YJlWTv88/v9Byhy2RPPPvtsg8fppptu2uV+ar/Nx+jRoxs8xpZl8dJLL+10P7Xhg9OyZcu47LLLOPTQQ3G5XPTv37/Bck899RQ9e/bE5/MxaNAg3n777T2qv7CwkLPOOouUlBQyMzP51a9+RUVFRTxfguzC7o5vRUUFkydPZtiwYaSnp5Odnc0pp5zCggULdlv3rFmzGmzT55577v56ObKdPWm/Oztn5+fn77Z+td+mt7tjvGrVqp1ek30+3y7rVhtu2VxNHYDsmdLSUsaMGUOPHj34z3/+w7p167j22mupqanhscce2+W+9913H7fffjtTp05l4MCBPP7444wbN4758+fTrVu3A/QKZHcefvhhunTpwkMPPUTbtm2ZMWMGl156KQUFBdx+++273HfChAlcd9119bZ5vd79Ga400vvvv09aWlrs7w4dOuyyvNpv8/G3v/1thw7wn//8Z15//XWOPfbYXe6rNnzwWbhwIe+88w7Dhw/Htm1s296hzEsvvcSll17KLbfcwpgxY3j55Zc544wzmD17NkccccRO6w6FQowfPx6AadOmUVNTw/XXX8955523xwkU2Te7O75r1qzhH//4B5dccgl33XUXfr+fBx98kCOOOIJvvvmGPn367PY5nnnmGXr37h37u02bNnF/HdKwPWm/AD/72c948MEH623r0qXLLutW+z047O4Y5+bm8uWXX9bbZozh+OOPZ8yYMXv0HGrDLZSRZuGee+4xSUlJZvPmzbFt//jHP4zT6TTr1q3b6X61tbUmNTXV3HzzzbFtgUDAdO7c2Vx++eX7NWbZOxs3btxh26WXXmpSU1NNJBLZ6X6dO3c2V1555f4MTeLgmWeeMUCDx3ln1H6bv65du5oTTzxxl2XUhg9O2553L7zwQtOvX78dyvTs2dP8/Oc/r7dtxIgR5oQTTthl3dOmTTOWZZn8/PzYtg8++MAAZu7cufsYueyJ3R3fqqoqU11dXW9bZWWlyczMNL/97W93WffMmTMNYL7++uv4BSx7ZU/a76hRo8xJJ52013Wr/R4c9uQYb6+ubb7yyit7VE5tuGXSLTDNxHvvvcexxx5LZmZmbNvEiROxbZvp06fvdL8vvviCiooKJk6cGNvm8Xg488wzeffdd/drzLJ3GsoqDx48mIqKCqqrq5sgImlqar/N2xdffMHKlSs5//zzmzoUaQSHY9ddpBUrVrB06dJ67RPg3HPP5aOPPiIQCOx03/fee4+BAwfSq1ev2LbjjjuOzMxMte0DZHfHNykpicTExHrbkpOTOeSQQygsLNyfoUkc7O747gu134NDY47xtGnTSE1N5ZRTTtkPEUlzoQRIM5Gfn19vCBZAeno6ubm5u7xXse6x7fft06cPa9asoba2Nv7BStx89tlndOjQgZSUlF2We/HFF/F6vSQnJ3PiiSfu0T3K0jT69euH0+mkW7du3HvvvUQikZ2WVftt3qZNm0ZSUhKnnXbabsuqDTc/u2qfwWCQlStX7nLf7fezLIvevXvv0fwD0jTKysr48ccf9+j2F4ATTzwRp9NJXl4eN9xwg87ZB6FPPvmEpKQkfD4fo0aN4tNPP93tPmq/zVMoFOL111/njDPO2O0cIHXUhlsmzQHSTJSWlpKenr7D9oyMDEpKSna5n9fr3aGhZ2RkYIyhtLSUhISEeIcrcfDZZ5/x0ksv8dBDD+2y3Kmnnsrw4cPp1KkTK1as4O677+aoo45i3rx5miPiIJKbm8uUKVMYPnw4lmXxv//9j1tvvZV169btdB4ftd/mKxwO88orr3DqqaeSlJS0y7Jqw81TaWkpwA7X5oyMDIDdXpsbc02XpnXjjTdiWRaXXXbZLsulpaVx4403cvTRR5OQkMDHH3/Mgw8+yOLFizVHxEFk1KhRXHDBBfTo0YPCwkIefPBBjj32WD755BNGjBix0/3Ufpun9957j5KSEs4777zdllUbbtmUABE5CK1du5ZzzjmHY445hquvvnqXZR999NHY/48cOZJx48bRu3dvHnzwQf72t7/t71BlD40fPz42aRrAuHHjSEhI4JFHHuGWW24hNze3CaOTeJsxYwYbN27co46W2rDIwe+ZZ57h//7v/3j22WfJy8vbZdnBgwczePDg2N9jxowhNzeX3/72t3z11VcMGzZsf4cre2DKlCn1/j755JPp168fd955p25laYFefPFFsrOzGTt27G7Lqg23bLoFppnIyMigvLx8h+2lpaX15gVpaL9AILDDcoqlpaVYlhX7pUoOHmVlZZxwwglkZWXx+uuv7/U9jrm5uRx11FF8++23+ylCiZeJEycSiUSYP39+g4+r/TZf06ZNIysrq17Sa0+pDTcPde1v+2tz3ciQ3V2bG3NNl6bx3nvv8etf/5rbbruNCy+8sFF11M0Vo3Z98EpKSuKkk07a7TFS+21+qqqqeOuttzjnnHNwOp2NqkNtuOVQAqSZaOi+wvLycoqKina4D3H7/QCWLFlSb3t+fj6dOnXS8PmDTG1tLSeffDLl5eW899579ZZLldZH7bd5qq2t5c033+Tss8/G7XY3dTiyn9S1z+2vzfn5+Xg8nl3evtTQNd0Yw5IlS3Z5TZcDb86cOUyYMIELL7yQO+64o6nDkYOA2m/z88Ybb1BbW7tHozKl5VMCpJk44YQT+PDDDykrK4tte/XVV3E4HIwbN26n+x155JGkpqby6quvxraFQiH+85//cOKJJ+7PkGUvhcNhJk6cyOLFi3n//ffp0KFDo+opLCzks88+Y+jQoXGOUOLtpZdewul01htmuS213+bpf//7H1VVVY3uaKkNNw/dunWjZ8+e9donwMsvv8zYsWPxeDw73feEE07g+++/56effopt++ijj9i8ebPa9kFk0aJFnHTSSYwZM4a///3v+1TXSy+9BKB2fRCrrq7m7bff3u0xUvttfqZNm0b37t0ZPnx4o+tQG245NAdIM3HZZZfx17/+ldNPP50//vGPrFu3jhtuuIHLLruM9u3bx8qNHTuW1atXs2zZMgB8Ph8333wzkydPpm3btgwYMIC//e1vbN68meuvv76pXo404IorruDtt9/moYceoqKigjlz5sQeGzx4MF6vd4fj++9//5u3336bE088kfbt27NixQruvfdenE4n1113XVO9FGnA+PHjGTNmDAMGDACiX5L/+c9/8rvf/Y6cnBxA7belmDZtGp06deKoo47a4TG14eajpqYmNg/A6tWrqaio4LXXXgOikye2bduWyZMnc/7559O9e3eOOeYYXn75ZebOnVtvJYnVq1fTvXt3/vSnP/GnP/0JgAkTJnDPPfdw1llncc8991BTU8P111/PSSedpHvLD5DdHV9jDOPHjychIYFrrrmGb775JrZvamoqffv2je27/fH9xS9+wSGHHMKQIUPw+Xx8/PHHPPLII5x++ukcfvjhB/iVtk67O775+fk88MADnHHGGXTp0oXCwkIeeugh1q9fXy+pqfZ78NqTczTAxo0b+fDDD7npppsarEdtuBUy0mwsWrTIjB071iQkJJh27dqZ66+/3gQCgXplRo0aZTp37lxvm23b5p577jF5eXnG6/Wa4cOHmy+++OIARi57onPnzgZo8N/KlSuNMTse3y+//NKMHj3atGnTxrhcLtOmTRszceJEk5+f3zQvQnbq6quvNj169DAJCQnG6/WaAQMGmL/85S/Gtu1YGbXf5q+kpMR4PB5z4403Nvi42nDzsXLlyp2ek2fOnBkr9+STT5pDDjnEeDweM2DAAPPWW281WM/tt99eb/vatWvNmWeeaZKTk016erqZNGmSKS8vPwCvTIzZ/fGdOXPmTh8fNWrUDvVse3zvuece069fP5OcnGzcbrfp2bOnmTx58g59Ntl/dnd8f/rpJzN+/HiTk5Nj3G63SU9PNyeeeKKZO3dug/Wo/R589vQc/dhjjxnALFq0aJf1qA23HpYxxuy37IqIiIiIiIiIyEFAc4CIiIiIiIiISIunBIiIiIiIiIiItHhKgIiIiIiIiIhIi6cEiIiIiIiIiIi0eEqAiIiIiIiIiEiLpwSIiIiIiIiIiLR4SoCIiIiIiIiISIunBIiIiIiIiIiItHhKgIiIiDRTkydPJjk5Ofb3qlWrmDx5MoWFhfXKzZo1C8uy+Oabbw5ofO+88w55eXkEg8G41Lf9693f++2JA/XePvvss1iWxaZNm3ZZ7ve//z1dunTZr7Fsq6HXP3nyZL744ou9qqeyspLMzEw+//zzeIcoIiISowSIiIhIM/WrX/2KmTNnxv5etWoVU6ZM2SEBMmTIEL788kv69OlzwGIzxnDLLbdwzTXX4PF44lLn9q93f+93MDnppJP48ssvSU9Pb+pQ6mnoszVlypS9ToCkpKRw1VVX8cc//jHeIYqIiMS4mjoAERERaZy8vDzy8vJ2Wy41NZUjjjjiAES01axZs/jxxx+54IIL9rmuQCCA2+3e49e7vcbudzCIRCLYtk3btm1p27ZtU4ezg3h+tiZNmsQdd9zB999/z6BBg+JSp4iIyLY0AkRERCSOLrroIvr37897771H//798fl8HHbYYcyZM6deOdu2ueuuu+jSpQter5fevXvzj3/8o16ZtWvXMnHiRLKzs/H5fHTt2pVrrrkm9vi2t3bMmjWLY445BoChQ4diWRaWZcUe2/42Bb/fz7XXXkv79u3x+XwceuihvPHGGw2+llmzZjF48GCSkpIYNmwY33777W7fh+eee45Ro0bt8KV99erVTJgwgbS0NJKSkhg/fjwLFiyoV6ZLly789re/5f7776dz584kJCRQUlLS4K0sCxcu5Oijj8bn89GjRw9efPFFTj/9dEaPHt3g+7Tt+zFjxgzOO+88UlJS6Ny5M/fff3+9ur/88ktOPfVU2rdvT1JSEoceeijPP//8bl/7zrzxxhv06tULn8/HEUccwXfffUd6ejqTJ0+OlRk9ejQnn3wyzz33HL169cLr9fL99983eAtMYWEhp556KomJiXTo0GGH+Hem7rhuq6ysDMuyePbZZ2Pb6o7D448/TufOnUlLS+P0009n48aNsTLbf7bqPnM33HBD7DM4a9YsAJ5++mn69etHQkICWVlZHHXUUXz99dexujp37sywYcPqxSAiIhJPGgEiIiISZ0VFRVxxxRVMnjyZjIwMpk6dyvjx4/npp59o164dEP2C+Je//IVbb72VI488krfffpvLLruMUCjEb3/7WwAuuOACCgsLefTRR8nOzmbNmjU7nWtiyJAhPP7441x55ZU888wz9O7de5cxnn/++bz//vvcfffd9O7dm3/961+cddZZvPnmm5x66qmxcuvXr+fqq6/mpptuIi0tjZtvvpkzzjiD5cuX43a7d1r/hx9+yKRJk+ptq6ysZPTo0TgcDv7+97/j8/m4++67Ofroo/nhhx/o2LFjrOzrr79Ojx49+Mtf/oLT6SQpKWmH56itrWXcuHGkp6fzwgsvANHbL8rKyujevfsuXz/AZZddxi9/+UveeOMN3nzzTf7whz8wcOBAjj/+eCCarPnZz37GZZddhs/n4/PPP+eSSy7Btm0uvPDC3da/rXnz5nH22Wdzyimn8Mgjj7B69WrOOeccAoHADmW/+eYbVq1axR133EFGRgYdO3bkxx9/3KHcaaedxtq1a3niiSdIT09n6tSpFBQU4HLFr3v3v//9j59++onHH3+cTZs2cc0113DVVVfx0ksvNVj+yy+/ZMSIEVx11VWcd955APTt25dPP/2USy65hOuvv54TTzyRmpoavvrqK8rKyurtf+SRRzJjxoy4xS8iIlKPERERkbi58MILDWA++uij2LaysjKTkpJibrrpJmOMMRs3bjRutzv2d52f//znpm3btiYcDhtjjElKSjKPPvroTp/r9ttvN0lJSbG/Z86caQDz9ddf1yu3/fbvv//eAObvf/97vXIjRowwQ4YMqfdaLMsyP/744w51zZ49e6dxFRYWGsC8+uqr9bb/5S9/MZZlmUWLFsW2bd682SQlJZlrr702tq1z584mKyvLVFVV7fL1Pv7448bpdJqVK1fGtq1cudI4nU4zatSo3b5PN9xwQ2ybbdumS5cu5pJLLmnwNdm2bUKhkPn1r39tRowYsUNd27/n2zv77LPNIYccYiKRSGzb888/bwBz++23x7aNGjXKuN1us2bNmnr7P/PMMwYwGzduNMYY89577+30c9a5c+ddxnLhhReafv361dtWWlpqAPPMM8/EtnXu3Nnk5eUZv98f23b77bcbt9sdex0NvX7APPDAA/Xqf+CBB0xmZuYu46p7nZZlmYqKit2WFRER2Vu6BUZERCTO0tLSGDNmTL2/jz32WObOnQvA3LlzCYVCnH322fX2O+ecc9i4cSNLly4FoqM6HnzwQZ544gmWLVsWt/hmz54N0ODzz5s3j+rq6ti29u3b069fv9jfffv2BaK35+xMUVERwA63v8yePZv+/fvXmzAzMzOT4447js8++6xe2dGjRzc46mNbX3/9NQMGDKi36kmXLl32eP6IcePGxf7fsiz69OlT73WVlpZy9dVX07lzZ9xuN263m3/+85+x49MQ27YJh8Oxf8aYWKwnn3wyDsfWrtdpp53WYB0DBw6sNxqmIXPnzt3p5yyeRo0ahdfrjf3dt29fQqEQGzZs2Kt6hgwZQklJCRdddBEzZsygpqamwXJt2rTBGENxcfE+xS0iItIQJUBERETirKHJKrOzs2OJgdLS0ti27csAlJSUAPDyyy8zduxYbrnlFnr06EHv3r35z3/+s8/xlZaW4na7yczM3OH5jTH1bkvYftWRuhVd/H7/Tuuve2zbL851z7v9a6573rrXvO223SkqKmrwva67zWh3Gnpt276uiy66iH//+99cf/31TJ8+na+//ppJkybt8rVPmjQplixxu90899xzO401JSUFn8+3Qx378tr3ZN+90Zjj35AxY8bw/PPPs3DhQsaPH0+bNm244IILdjjudZ+Z2traxgctIiKyE0qAiIiIxNm2k0TWKS4uJjc3FyCWeNj+V/S6X73rHs/NzeXpp59m06ZNfPXVV/Tq1YtzzjmHFStW7FN8mZmZhEKhWCJm2+e3LGufl1qti3/7+R0yMzMbHDlQXFy8QzKmbjLNXcnNzW3wvd7b0QkN8fv9vP3229x6661cddVVjBkzhsMPPxzbtne53+TJk/n6669j/0455ZSdxlpZWdlgImFfXvuejJzw+XwEg8F627b/LOwPv/jFL/j666/ZsGEDf/3rX3nzzTe54YYb6pWp+8xkZWXt93hERKT1UQJEREQkzsrLy/n444/r/f3hhx8yfPhwAIYNG4bb7ebVV1+tt98rr7xCu3bt6NmzZ73tDoeDoUOHctdddxEOh3d6O8ye/jp/1FFHAezw/K+++mpstZd90aVLFzweDytXrtzheRcsWMCSJUti20pLS/nwww9jMe2NoUOH8sMPP9R7nlWrVvH99983PvgtAoEAtm3H3lOIJiz+97//7XK/Ll26cPjhh8f+1X2RHzp0KG+//Xa9BMqbb77Z6PiGDRu208/Z7uTl5bF27Vqqqqpi26ZPn97oWLbndrt3+Rls06YNl1xyCccddxyLFy+u99iqVatIS0sjJycnbvGIiIjU0SowIiIicZaZmckll1zClClTYqtzGGP4/e9/D0S/AF511VU88MADsSVR3333XaZNm8Zf//pXnE4n5eXljB8/nl/+8pf06tWLYDDIX//6V9LT0xkyZEiDz9uzZ0+cTidPP/00LpcLl8vF4YcfvkO5gQMHcuaZZ3LttddSW1tLr169eOGFF/jiiy/473//u8+vv27p3+2Xy7344ot55JFHOOmkk7jrrrtiq8C4XK7Ye7M3Lr74Yu6++25OPvlkpkyZAkRHYOTk5NSba6Mx0tLSGDp0KFOnTqVt27a4XC6mTp1KWlpao0aY3HzzzQwdOpSzzjqLX//616xevZoHH3wQn8/XqFiPP/54hgwZwvnnn899991Heno69957L6mpqbvd98wzz+RPf/oTkyZN4tJLL2XhwoU8+eSTe7E3Cv4AAANlSURBVB3DzvTp04f//ve/jBw5kqSkJHr16sWDDz7I5s2bGT16NO3atWPBggW8//77XHvttfX2/eabbzjyyCP3+fiJiIg0RFcXERGROMvNzeWxxx5j6tSpnH322fj9fj744IN68zM88MAD/OlPf+Kpp57i5JNP5t133+Xvf/97bAlcn8/HgAED+Otf/8qpp57KL3/5S2zbZvr06bRp06bB523Tpg2PP/44n3zyCSNHjmTo0KE7jfGFF17g0ksvZerUqZx22mksWLCA1157LXbLxr6aMGECH3zwQWwSUIjOeTFr1iwGDRrEr3/9a84//3wyMjL49NNPdzvpZ0MSEhKYPn06mZmZnH/++dx4441cd9119OjRg7S0tH1+DdOmTeOQQw7hwgsv5Oqrr2bChAlccMEFjapr8ODBvPLKKyxatIgzzjiDJ598kueee45wONyoWC3L4r///S+HHXYYv/nNb7jssss49dRTmTBhwm737du3L8899xzz5s3jtNNO49133+XFF19szMtq0OOPP45t25xwwgkMHTqUb7/9lqFDh5Kfn88VV1zBuHHjeOSRR7jhhhu4/fbbY/uFQiE+/PDDPXoNIiIijWGZbXsmIiIisk8uuugivvnmG3788cemDqVJbdy4kY4dOzJ9+nSOPvroA/a8JSUldOvWjWuuuabel+uD0UcffcSxxx7LrFmzGDVqVFOH0+TeeecdzjvvPNatW0dycnJThyMiIi2QboERERGRuGvbti2XX345f/7zn/drAuS+++4jOzubLl26UFRUxIMPPkgkEmHSpEn77Tkb64orrmDs2LFkZWWxcOFC7rzzTgYPHszIkSObOrSDwkMPPcR1112n5IeIiOw3SoCIiIjIfvHHP/6RJ554gmAwWG8y0XhyOBzcddddrFu3DpfLxfDhw/n4448bdUvN/lZaWspVV13Fpk2bSEtL4/jjj+fBBx/UfBdAVVUVo0aN4pprrmnqUEREpAXTLTAiIiIiIiIi0uLpJwcRERERERERafGUABERERERERGRFk8JEBERERERERFp8ZQAEREREREREZEWTwkQEREREREREWnxlAARERERERERkRZPCRAREZH/b8cOZAAAAAAG+Vvf4yuMAADYEyAAAADAngABAAAA9gQIAAAAsBfnsEc5OHxf4QAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "signal = np.zeros(20)\n", + "signal[8:12] = 100.0 # \"object\" block, hard edges at index 8 and 12\n", + "\n", + "zoom_factor = 5.0 # e.g. z-spacing 5x coarser than x/y -> upsample z by 5x\n", + "\n", + "out0 = scipy.ndimage.zoom(signal, zoom_factor, order=0)\n", + "out1 = scipy.ndimage.zoom(signal, zoom_factor, order=1)\n", + "out3 = scipy.ndimage.zoom(signal, zoom_factor, order=3)\n", + "\n", + "fig, ax = plt.subplots(figsize=(10, 4))\n", + "x_orig = np.linspace(0, len(signal) - 1, len(signal))\n", + "x_new = np.linspace(0, len(signal) - 1, len(out0))\n", + "\n", + "ax.plot(\n", + " x_orig,\n", + " signal,\n", + " \"o-\",\n", + " color=\"black\",\n", + " label=\"original (native grid)\",\n", + " markersize=8,\n", + " linewidth=1,\n", + ")\n", + "ax.plot(x_new, out0, \".--\", color=\"tab:blue\", label=\"order=0 (nearest)\", alpha=0.8)\n", + "ax.plot(x_new, out1, \".--\", color=\"tab:orange\", label=\"order=1 (linear)\", alpha=0.8)\n", + "ax.plot(x_new, out3, \".--\", color=\"tab:red\", label=\"order=3 (cubic)\", alpha=0.8)\n", + "ax.axhline(0, color=\"gray\", linewidth=0.8)\n", + "ax.set_title(\"Upsampling a hard-edged step: values appear BETWEEN 0 and 100\")\n", + "ax.set_xlabel(\"position (original-grid units)\")\n", + "ax.set_ylabel(\"intensity\")\n", + "ax.legend()\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "ae2d2a11", + "metadata": {}, + "source": [ + "**What you're seeing:** at `order=0` the edge stays perfectly sharp — every\n", + "output sample is a copy of one input sample, so it's either exactly `0` or\n", + "exactly `100`, nothing in between.\n", + "\n", + "At `order=1` and `order=3`, new samples appear *between* the object and\n", + "background samples that are blends: 20, 43, 67, 81... These are the \"leaked\"\n", + "voxels. In the real 3D case, these sit physically between the object and\n", + "background, still inside what should be pure background once you cross the\n", + "object's true edge.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "bd9a78da", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-26T19:55:00.625542Z", + "iopub.status.busy": "2026-08-26T19:55:00.624915Z", + "iopub.status.idle": "2026-08-26T19:55:00.631386Z", + "shell.execute_reply": "2026-08-26T19:55:00.630479Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "order=0: 0 of 80 background-mapped samples are nonzero (leaked). Example leaked values: []\n", + "order=1: 6 of 80 background-mapped samples are nonzero (leaked). Example leaked values: [10.1 29.29 48.48 48.48 29.29 10.1 ]\n", + "order=3: 80 of 80 background-mapped samples are nonzero (leaked). Example leaked values: [ 0. -0. -0. -0. -0. -0.]\n" + ] + } + ], + "source": [ + "# Quantify: how many of the \"should be background\" output samples are nonzero?\n", + "orig_is_bg = signal == 0\n", + "# nearest-neighbor mapping of each output sample back to its source index,\n", + "# to know which output samples \"belong\" to a background input sample\n", + "src_idx = np.clip(np.round(x_new).astype(int), 0, len(signal) - 1)\n", + "should_be_bg = orig_is_bg[src_idx]\n", + "\n", + "for name, out in [(\"order=0\", out0), (\"order=1\", out1), (\"order=3\", out3)]:\n", + " leaked = should_be_bg & (out != 0)\n", + " print(\n", + " f\"{name}: {leaked.sum()} of {should_be_bg.sum()} background-mapped samples are nonzero \"\n", + " f\"(leaked). Example leaked values: {np.round(out[leaked][:6], 2)}\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "196c84e5", + "metadata": {}, + "source": [ + "## 2. Why `ignore_zeros=True` cares\n", + "\n", + "`mahotas.features.haralick(image, ignore_zeros=True)` builds a gray-level\n", + "co-occurrence matrix and explicitly **excludes voxels equal to exactly 0**\n", + "from the statistics, on the assumption that `0` means \"not part of the\n", + "object.\" That's a real assumption baked into the function, not a heuristic —\n", + "it does a literal equality check.\n", + "\n", + "The leaked values above are nonzero (20, 43, 67, 81, ...) even though they\n", + "sit in what should be pure background. `ignore_zeros=True` will **not**\n", + "exclude them — they get treated as legitimate object texture, pulling the\n", + "co-occurrence statistics toward whatever gradient shape the interpolation\n", + "happened to produce at the boundary, rather than reflecting the object's\n", + "actual internal texture.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "8c57c31f", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-26T19:55:00.632770Z", + "iopub.status.busy": "2026-08-26T19:55:00.632615Z", + "iopub.status.idle": "2026-08-26T19:55:00.760086Z", + "shell.execute_reply": "2026-08-26T19:55:00.758806Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABEAAAAF2CAYAAABu5O1YAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAQ6wAAEOsBUJTofAAAjFNJREFUeJzs3Xd4U9UbB/Bv0jbdu6UUChQKpYyyt6wWBFmyNzJEFBVQEVREZQiIPwW3iMgQBEGmgCxZArIRkVX2psxO6G7u74/TpE2b1ZL2JuH7eZ4+TW5O7n2T3HPPzZtzz1FIkiSBiIiIiIiIiMiOKeUOgIiIiIiIiIiouDEBQkRERERERER2jwkQIiIiIiIiIrJ7TIAQERERERERkd1jAoSIiIiIiIiI7B4TIERERERERERk95gAISIiIiIiIiK7xwQIEREREREREdk9JkCIiIiIiIiIyO4xAUJEREREREREdo8JEKKnyNWrV6FQKDB58mS5Q7FboaGhaN26tWzbHzp0KBQKRYlsq6T3J2vYf60hBktp3bo1QkND5Q5DqyT3XSJro1AoMHToUJ1l+toTa6u3ZFpJnhfo248shfse2QsmQIjIahw+fBhvvPEGWrZsCS8vLygUCkybNk3usIhs1pdffolFixaV+HYXLVqEL7/8ssS3S7ZPkwgz50/OZLO1a9GiBZRKJeLi4go89sYbb0ChUKBt27Z6nxsSEoKAgABIkgSg4Gfi4OAAf39/tGvXDn/88YfROLZu3Yru3bsjODgYKpUKgYGBaN++PZYvX65df16TJ0+GQqGAUqnEsWPHCjx+8+ZNo1/yDxw4gCFDhqBy5cpwd3eHi4sLQkND0aNHDyxevBgZGRk65Vu3bg1HR8cC6/nwww+hUCjwzTff6N1OVlYWGjduDFdXV5w+fdroe0BE1qVgjSciksmmTZvw7bffIjw8HPXq1cNff/0ld0hENu3LL79EaGhosf0iaMiiRYtw9epVvPnmm2Y/Z968efjhhx+KLyiyCa+88kqBL+ZvvfUWHjx4gCVLlugsDwoKKsnQilVqaiocHBwstr7o6Gjs27cPu3fvRo8ePXQe27VrF5ycnLB//36kp6fD2dlZ+9i5c+dw69Yt9OzZs0CPrK+//hq+vr7IzMzExYsX8eOPP6Jz585YtmwZ+vfvr1NWrVZj5MiRmDdvHsLCwvDyyy+jQoUKuHv3LlauXIn+/ftj2bJlWLFiBVxdXQvEL0kSxo8fj507d5r1eiVJwptvvomvv/4aZcqUQe/evREREQEnJydcv34dO3bswJAhQ7Bjxw78/PPPJtf30UcfYfPmzXj33XfRtm1bVKtWTefxadOm4fDhw5g9ezZq1KhhdF3nzp1j7zYiK8IECJEdSUpKgpeXl81u99VXX8W4cePg4eGB3bt3IyoqygLRGSfXe0ZEupycnODk5CR3GIVi68eP7OxspKenw83NTe5QtJo2bYqmTZvqLPvggw/w4MEDDBo0yOhzJUnC48eP4eHhUZwhFgsXFxeLri86OhpTp07Fzp07dRIgDx48wKlTpzB8+HD89NNPOHjwIFq1aqV9fNeuXdrn59e9e3eEhIRo7/fu3Rt169bFjBkzCiRApk2bhnnz5qFHjx5YtmyZTpLlvffew7hx4zB79myMGjUK8+fPL7Cthg0bYteuXfjjjz/QqVMnk6932rRp+Prrr9G3b18sWrSowPs5ZcoUnDhxQvv6THFycsKSJUtQv359DBw4EIcOHdIenw4fPozp06cjOjrarCRv3tdORPLjJTBEViQhIQFjx45FxYoV4ezsjKCgIPTv3x8XLlzQKZd3HILVq1ejUaNGcHNzw/PPP68t8+uvv6J27dpwcXFB2bJlMXbsWKSkpOjdriRJmDdvHho1agR3d3e4u7ujWbNmWLduXYGymq6nu3fvRuvWreHl5YXatWtb5PUHBQUV6sQ1NjYWMTExBl9XXua8Z8ePH0evXr1QqlQpqFQqVKpUCe+9957e9R87dgxt27aFu7s7fH190bNnT1y9etXs2Eva3bt3MXr0aISGhkKlUiEoKAiDBg0qEHNycjI+/PBDNGnSBIGBgVCpVAgNDcWoUaP0dqXWZ//+/QgMDET16tVx7do17fLVq1ejVatW8PLygqurK+rWrYuffvpJ7zoKs//mt337digUCkyfPl3v4y+99BIUCgUuXrwIALh9+zbGjRuHevXqwc/PD87OzggPD8fEiRORmppqcnu7d++GQqHQe6mJpjt3/vfZ3M8jPT0dH3/8MapXrw53d3d4eXmhatWqePHFF43Gptnfr127hr/++kun+3r+bdy5cwcvvPAC/P394erqipYtW+Lo0aMF1jlnzhy0b98eISEhUKlUKFWqFHr27IlTp07plFMoFPjrr79w7do1ne3u3r3b2NtocAyQw4cPIzo6WlvX+vTpg+vXr+u9rl5zfNI8x8PDAz4+PujXrx/u3btXYN2WPOYW5vhhirHLPvJfg3/p0iUMHToUZcqUgUqlQkhICF577TU8ePBAp5xmXzxz5gzeeecdVKhQAc7Ozvjtt98AAGlpaZgyZQoiIiLg4uICPz8/dOnSRe++sGXLFkRHR6NUqVJwcXFBSEgIOnTogL179xb6tRbVokWLoFAosH37dnzyyScIDw+Hs7MzPv/8cwCGx10wNI5PYdpBfcLDw1G/fn2dZb/99hsUCgXCwsJ0lm/btg0KhQKLFy/WLrP02A1NmzaFq6trgR4Uu3fvhiRJePvtt+Hp6Vngcc19fQmQ/OrUqQN/f/8C9eXBgweYOXMmypYti8WLFxdIACgUCnz22WeoX78+Fi5cqPcSkokTJ8Lb2xvvvvsusrOzjcZx//59fPLJJwgNDcXPP/9sMJlUu3btQvVKq1atGmbOnInjx4/jww8/BACkpKTghRdegIeHh3YfNEXfvqhZdv78eXTt2hXe3t7w8PBAx44dtW1TXpIkYdGiRXjmmWfg5eUFNzc3REREYMyYMQUu68nL2LhVmvjzH5svXryI7t27w9vbG56enmjXrh1OnDhhcBuWPPYRlQT2ACGyEsnJyXjmmWdw5swZ9O/fH82bN8elS5fw/fffY8uWLfj7779RvXp1nef8/vvv+PLLLzFy5EiMGDFCez3tDz/8gFdffRVVqlTBRx99BJVKhaVLl2LPnj16tz1s2DAsXrwYXbt2xcCBAwEAa9asQffu3TFnzhyMHDlSp/zRo0exatUqvPjiixgwYACSk5O1j+U/6TbGzc3tiX55nDBhAn7++Wfs2rXL7GvBDb1nW7ZsQbdu3VCuXDmMHj0aQUFBOHHiBGbPno2///4bu3bt0l4n/M8//6Bly5ZwcHDA6NGjUa5cOWzbtg2tW7fG48ePzY4/MTERmZmZZpV1cnKCt7e32evO68aNG2jWrBkePXqE4cOHIzw8HLdu3cKcOXOwbds2HD16FOXLlwcA3Lp1Cz/++CN69OiBvn37wsXFBYcPH8bcuXOxb98+HDlyxOiv9KtXr8agQYPQqFEjrFu3Dr6+vgCASZMmYerUqYiKisKkSZPg6uqKrVu3YsSIEbh48SJmzpypXUdh99/8oqOjUa5cOfz888+YOHGizmMpKSlYuXIlmjdvjsqVKwMA/vvvP6xatQrdunXDiy++CEmSsHv3bnzyySc4fvw4Nm3aVKj325TCfB6jRo3CTz/9hIEDB2LMmDEAgCtXrmDjxo14/Pix3q7jABAYGIglS5bgrbfeQkBAgM77EBgYqL39+PFjtGjRAvXr18fHH3+Mu3fv4osvvkCHDh1w+fJleHp6asv+73//Q+PGjfH6668jICAAFy5cwE8//YQ///wTx48f137JW7JkCaZPn44HDx7giy++0D4/fxdycxw5cgStW7eGSqXCG2+8gZCQEOzYsQOtWrUyWNdOnDiBDh06YPDgwejbty+OHTuGn376CQkJCdiyZYu2nCWPuYU5fpgj/6UeAHD69GnMnDkTpUuX1i77999/0bp1a7i5ueHFF19EhQoVcOHCBcyZMwc7duzA4cOHCxw3Bg4cCEdHR7z++uvw8PBA1apVkZ2djY4dO2LXrl3o2LEjRo0ahTt37mDOnDlo3rw5Nm/erO2Rt2fPHnTu3BnVq1fH+PHj4e/vjzt37mD//v04fvw4WrRoAUBcAmFu0hQAPD09i/RL+fjx45GSkoIhQ4YgMDAQ5cqVK/Q6gMK3g/m1adMGP/74Ix4+fAh/f38AIhmrVCpx+fJlXL16VZu82r59OwAYHIPDElQqFZ555hls374dd+7c0e43u3btQkhICCIiItC8eXPs2rULU6ZMAQDtsa9MmTKIiIgwuY24uDjEx8fr7JMA8McffyA1NRUvvPAC3N3d9T5XqVTi5ZdfxiuvvILVq1cXuIzE398fEyZMwHvvvYeFCxfipZdeMhhH3u1ZurfF6NGjsWHDBnz22Wfo2LEjli9fjvPnz+OXX34p8r6mcevWLbRs2RLPP/88Pv30U1y4cAHffPMNunbtipMnT0KpzP2deujQoVi8eDHq1q2L8ePHo1SpUrh06RLWrFmDqVOnQqVSPelLBZDbPiUkJGDkyJGoVq0aDh48iNatW2v367wsfewjKhESEVmFDz/8UAIgTZ8+XWf57t27JQBSmzZttMuuXLkiAZAcHR2lkydP6pRPSEiQPDw8pPLly0sJCQna5SkpKVKdOnUkANKkSZO0y9etWycBkGbPnl0gpi5dukheXl5SUlKSdhkACYC0efNmva9D87g5f3njyG/Xrl0SAOnjjz82WGbIkCESAGnXrl0Gy2gYe89SU1Ol0qVLS40aNZLS0tJ0Hlu1apUEQFq0aJF2WYsWLSSlUikdPXpUp+wrr7wiAZBatWplMh5JkqRWrVqZ/V6Zu07Ne5JXt27dJF9fX+nSpUs6y69cuSJ5eHhIQ4cO1S5LT0+XMjIyCqx33rx5EgDpt99+03l+3s/xiy++kJRKpdSvXz+d9/Gff/6RFAqFNGbMmALrHTVqlKRUKrWxFXb/NeSDDz6QAEj79u3TWb5kyRIJgDR//nyddWdnZxdYx8SJEyUA0uHDhw2+ZknK3VcXLlxYYB2TJk2SAEhXrlzRLivM5+Hr6ys999xzJl+vIRUqVDC472j2vxkzZugs//XXXyUA0ty5c3WWP3r0qMA6Tp06JTk5OUmvvfZagXVXqFChULHq23ebNWsmOTg4SP/995/O8tGjR+utFwAkhUIh/f333zrLNXXz3Llz2mWWOuYW9vhRFDdv3pTKlSsnBQUFSZcvX9Yur1OnjlSxYkXp4cOHOuUPHTokOTg4SJMnT9Yu0+yLzZs3L1DH58+fLwGQRowYobP83LlzkrOzs1SlShVtHXnrrbckANKdO3eMxqx5z8z901d/NCpUqFBg31i4cKEEQAoLC5OSk5P1Pkffvq+vDhe2HdRH81nnPUZWrFhRGjhwoOTg4CD9+OOP2uV169aVIiIidJ4PQBoyZIjJ11CYujVjxgwJgLR06VLtsoiICGnQoEGSJEnSp59+KqlUKunx48eSJEnSf//9JwGQBg4cqLMeTd3877//pPv370uxsbHSnj17pJYtW0oApPfee0+n/Ntvvy0BkFavXm00vqNHj0oApJ49e2qXafbTvXv3SqmpqVL58uWlMmXKaGO8ceNGgfdKs701a9YU2EZiYqJ0//597d+DBw90Hm/VqpXk4OBgNM6bN29Kvr6+UkBAgARA6tOnj9Hy+en7HDX79LJly3SWf/LJJxIAaevWrdplK1eulABIPXr0kDIzM3XKq9VqSa1Wa+/nf2/07e8amjqU9xzqhRdekABIa9eu1RtX3n2vJI59RMWBl8AQWYnVq1fDy8sLY8eO1VneqlUrREVFYefOnYiPj9d5rFOnTqhZs6bOsm3btuHRo0cYNWqUzi9/rq6uGDduXIHtLlmyBK6urujbty8ePHig89etWzckJSXhwIEDOs+pXbs2nnvuOb2v488//zT7b/DgwYV6j/JbtGgRJEkq1EwA+t4zzS9kQ4cORXJyss570LJlS7i5uWHr1q0ARFfbvXv34rnnnivQ3VnTRdZcs2bNMvu9mjVrVqHWrZGYmIj169ejY8eO8PLy0nltHh4eaNKkifa1AeJXQ00Pj6ysLCQkJODBgwfa7tCHDh0qsA21Wo0333wTb731FsaNG1fgeu+lS5dCkiQMHz68wD72/PPPQ61Wa38RLez+a4imK3n+y1IWLVoENzc39O7dW2fdml/aMjMzERcXhwcPHuDZZ581+JqLqrCfh4+PD06fPm20+/GTUCqVeOutt3SWaV73+fPndZZrfsmVJAlJSUl48OABgoKCULVqVYu+Rxr37t3D/v370aFDB0RGRuo8NmHCBIPPa9q0KZo1a6azTN9rstQxtzDHj6JISkpCx44dERcXh40bN6JixYoAgFOnTuHff/9Fv379oFardbZbqVIlVK5cWe9233777QK9uFavXg0A2p4AGuHh4RgwYAAuXLiAkydPAhD7JACsXLnSaA+20qVLF6o9aN++fZHen1GjRj3xmB9FaQfzi4qKglKpxI4dOwCInlpXrlxBr169UL9+fe3yhw8f4t9//0WbNm2eKGZzaLahuazlzp07iImJ0baZrVu3RkZGBv7++28AueN/GIqtVq1aCAwMRHBwsPZSuYkTJxaYrS0xMREATPZa1DyuKZ+fi4sLPv74Y9y+fdtoG6h5vr7xePr06YPAwEDtX1EGzi1btiy+/fZb7TFvzpw5hV6HPmXKlCkwdoq+Y9Uvv/wCQJwz5O9Nobk0zhLUajXWrVuH6tWro1u3bjqPvfnmmwXqWXEf+4iKC/skEVmJy5cvo0aNGnqvXY2MjMSuXbtw5coV7SUFgDg5ze/SpUsAUKDrNgC9I5WfPXsWqampKFu2rMHY7t69q3Nf33Y1irNLryXoi/3s2bMAgNdeew2vvfaa3udp3gNj72/ZsmULdZlK/gRKcTh//jzUajWWLl2KpUuX6i2Tt5stIGbj+P7773Hq1ClkZWXpPKavS/tXX32FpKQkvSfCQO77a2ysGHPeX1Mj7ecVFhaGFi1a4LfffsPXX38NV1dX3LhxA7t27cLAgQN1Lu3Izs7G559/jkWLFmnfr7wK043flMJ+Hl999RVeeOEF1KlTB+XLl0eLFi3Qvn179O7d2yKDJpYpU6bAejTdnB8+fKizfM+ePZg6dSr2799fYPwRzZdyS7p8+TIA6O2KHxwcbLCuVapUqcAyfa/JUsfcwhw/CiszMxM9evTA6dOn8fvvv6NBgwYFtvvJJ5/gk08+0ft8fe+Fvtdw+fJl+Pv7Izg4uMBjmuTTpUuXULt2bYwaNQobNmzA6NGj8d5776Fp06Zo3bo1BgwYoLMfuLi4lEh7YKw9MldR2sH8/Pz8ULduXW0yd/v27XBwcEBUVBSOHDmCefPmQZIk7Ny5E5IklUgCpH79+vD29tYmQDQJDs3lTPXr14eXlxd27tyJZ5991uT4H7/++isCAgLw6NEjbNu2DT/88AOSk5MLzF6jSUQYSmxomJMoGTRoEL744gt89tlneOWVV/SW0Tw/KSmpwGMzZ87UJs/ffvvtIk9Zq0mqRkREwM/Pr0jryM/cY9X58+fh6+tbYPwfS7t37x6Sk5P1tr8uLi4ICwtDQkKCdllxHvuIihMTIEQ2zBIj96vVanh7e2PVqlUGy+T/4mlsu3fu3DF72x4eHiU+Wr++2DVfeKdPn45GjRrpfV7eL0GWEhcXZ3TwsrxUKlWRTro0r61Pnz4YMWKEyfJfffUV3nzzTbRt2xbff/89ypQpA2dnZ2RlZaFDhw4FkgOA+MVq7969WLBgAQYOHFhgrAfNczZu3Gjw+mx9J4JPaujQoRg+fDjWrl2LAQMGYPHixVCr1Rg2bJhOuXHjxuHLL79Er1698O6772oHcrt16xaGDh2q9zXnZezXt/wJpMJ+Hl26dMHVq1exdetW7N69G7t378bSpUsxZcoUHDhwQGc8j6IwNu2mlDO+BSAG/W3Tpg0qVaqE6dOno1KlSnBzc4NCocAbb7xRqLFvipu5r6koSvL4IUkSXnzxRezYsQNz584tMBOGZrujR4/WGYw1L31jxDxpu+Hn54dDhw5h//792L59O/bu3YspU6ZgypQpWLJkCfr27QtAJBbv379v9nq9vb0NjmljjKHXY6he5q+TQNHaQX3atm2LTz/9FNeuXcP27dvRoEEDeHt7o23btpgxYwZOnDihHRekJGY5c3BwQMuWLbFhwwZcu3YNu3btQvny5bXHWwcHB+04IGq1Gnv27EGlSpVQoUIFvetr3ry5dhaYbt26ITAwEFOnTkVkZKTOGB2apNnRo0cLTMGb17FjxwCIniWGKJVK/O9//0O7du0wefJkvP/++wXKaHplHT9+HN27d9d5rE6dOtrbxdGOP4niPFZpFKZ9Kiy5zp2InhQTIERWIiwsDBcvXkR6enqBL4mnTp2CQqEw61dWzUCEZ86cKXDCrO+Xj/DwcMTExKBu3bp6B7gqLH2/IBoyadIkvSOTlzTNL4jm/GKZ9/3N79atWyZ/8cqrR48e+Ouvv8wq26pVK5OzaOhTuXJlKJVKpKammvVr7M8//4zQ0FBs3bpVpyeC5pcefWrWrInp06ejTZs2aNWqFbZt26Zz0hkeHo4tW7YgODgY9erVM7r9wu6/xvTu3RujR4/GokWLMGDAAO1ry3/J1M8//4wWLVpg5cqVOss3b95s1nY0iSl9PUU0vRg0Cvt5AOKSg759+2q/WGoGif3uu+9M1h9LdY1eunQpsrKysHnz5gLJqocPHxboRWGJ7Wq2ExMTU+Cx2NjYQtU1fSx1zC3M8aMw3n//ffzyyy94//338fLLLxvcLvDkPe/CwsIQExODu3fvFrhEQDPLT96ZTJRKJZo3b47mzZsDEAMn1qtXD++++652P71x40ahegYtXLjQorOg+Pn5mVUnAcu1g23atMGnn36Kbdu2YefOndrPrVmzZnB1dcX27duxfft21K9fX3spUXGLjo7Ghg0bsGPHDr0Dhrdu3Rrvv/8+9uzZg/j4ePTs2dPsdU+YMAGLFi3ChAkT0KdPH23Pj06dOsHV1RWLFy/GBx98YDBxOG/ePCgUCpPbfPbZZ9G+fXvMmzcPvXr1KvC4ZntLlizBxIkT7W7a2fDwcJw9exbXrl0zmJwypDDtU6lSpeDp6an3/CYtLQ2XLl3SqR/FdewjKm4cA4TISvTo0QOJiYn45ptvdJbv3bsXO3fuRHR0tFmZ9Hbt2sHd3R3ffvutzheEtLQ07fSAeWnG4XjnnXf0/uJQ2O6LJTkGSGGmwTWmffv2CAoKwmeffaa3B0tWVpb25CEwMBDNmzfHli1b8M8//+iU03f5hzElMQaIv78/OnbsiD/++EPb/Tm/vJ+x5hepvL0eJEnC1KlTjW6natWq2LNnD9zd3REVFaUzJsQLL7wAQJws6xszIDExEenp6QAKv/8a4+npiV69emHHjh1YsWIFLly4gCFDhhT4cu7g4FBg38/MzDR4WUF+FStWhJOTk7bru8aFCxewdu1anWWF+Tyys7MLjEEB5F46lf8SFX08PDwscgmPZr/I/z798MMPeo8RHh4eiI+Pf6JfMUuVKoWmTZti8+bN2vEnNPLOGlRUljrmFub4Ya4ffvgBM2fOxKBBgwxO51ynTh1ERkZi/vz5ehOUkiSZ3QND8yv9xx9/rLP84sWLWLZsGapUqaL9lV7fOsuVK4egoCCdfbKkxgAxpGrVqoiJicGtW7e0y9Rqtd5jqaXawebNm8PZ2RlffvklHjx4oP1S6OzsjObNm2PhwoW4fPlyiVz+oqG5nGXx4sW4ePGi3gRIVlaWNplqzvS3Gi4uLnj//fcLzPgUGBiI8ePH49atWxg2bFiBno6SJOG9997D0aNHMWzYMLN61/zvf/+DWq3Ge++9V+CxwMBAvPfee7h69SqGDBmCtLQ0veuwVK+KkjZo0CAAoreivimBjb0uT09PBAcHay+90nj48CEWLFigU1apVKJr1644c+ZMgemfv/zySzx69EhnWXEc+4hKAnuAEFmJ8ePHY/Xq1Rg/fjxOnDiBZs2aaadk9Pb2xtdff23Wery9vfHpp59i1KhRaNiwIYYNGwaVSoVffvlFb3fLnj17YsSIEZg3bx5OnDiBbt26oXTp0rh9+zaOHTuGTZs2mT1VK/Bkv0Reu3ZNO/3jlStXAECnh0TLli3RsmVL7f2iTIOrj5ubG5YsWYKuXbuiWrVqGDZsGCIiIpCcnKydZm7mzJnaXye/+OILtGzZEq1bt8brr7+unQb3+PHjCAgIMHu7JTEGCCC+TDVv3hzPPvssBgwYgIYNG0KpVOLatWvYtGkTGjRooB0stHfv3nj33XfRvn179OrVCykpKVi7dq1Zl+pUqlQJe/fuRZs2bdC2bVts3LgRrVq1QoMGDTBt2jR88MEHqFmzJvr374+QkBDcu3cPJ0+exO+//44zZ84gNDS00PuvKZqpA19++WUoFAoMGTKkQJnevXtjzpw56NWrF9q1a4e4uDgsXbrU7O74Hh4eePHFFzF37lz07dsX0dHRuH79On744QfUqlULhw8f1ilv7ueRnJyM4OBgdOnSBXXq1EFwcDBu376NefPmwdHRUTtVpzFNmjTB/Pnz8eGHH6JatWpQKpXo0qWLwakpDenRowdmz56NDh064OWXX4abmxv27duHrVu3IiwsrEBX6iZNmmDjxo0YNWoUmjVrBgcHB0RHR6NUqVKF2u4XX3yB1q1bo0WLFnjttde00+Bq6tqT9DSx1DG3sMcPU06dOoVRo0bBz88PUVFR2gEQNTw8PNCtWzcoFAr88ssviI6ORr169TB06FBERkYiMzMTV69exbp16zBkyBCzetkNHjwYv/zyC7777jtcv34d7du3106DK0kS5s6dq32vX375ZVy/fh3t2rVDaGgosrKysHHjRpw+fRqjRo3SrlPuX4XHjBmDX3/9FdHR0Rg5ciQkScJvv/2md5+xVDvo6uqKZs2aYdeuXXBzc9MZjLdt27Z49913ARgeZLQ4REZGIjAwUNuW5r/0pl69evDy8tI+XpgECCCmD54xYwa++OILjBkzRmfq85s3b2LBggX4559/MHDgQFSoUAH37t3DypUrcezYMXTu3BnffvutWdupVasWBg8eXGBga40PP/wQDx48wDfffIO9e/eid+/eqFatGhwcHBAbG4utW7fi77//1k5/npckSQZ/wGjRogVatWpl3ptRTHr16oWBAwdi6dKlaNSoEXr06IFSpUrhypUrWLlyJY4cOWK0R9GYMWMwYcIEtG/fHt27d8f9+/cxb948VKxYsUByb9q0adiyZQv69OmDV199FRERETh48CDWr19f4Fhv6WMfUYkpwRlniMiEuLg46c0335QqVKggOTk5SQEBAVK/fv10pm6UJOPTmmn88ssvUmRkpKRSqaTg4GDprbfekk6fPm3wecuWLZNat24teXt7SyqVSipXrpzUoUMHac6cOTrloGeqPkvRTCdq6C9/3EWZBtfYe3b27FlpyJAhUkhIiPb9r1+/vjRhwgTp+vXrOmUPHz4sRUVFSW5ubpK3t7fUo0cP6cqVK0anHS0J+qYSlSSxb7333ntSRESE5OzsLHl6ekoRERHSiBEjpIMHD2rLZWdnS59++qlUpUoVydnZWSpTpoz06quvSnFxcWZPr3fnzh0pMjJScnV1lbZs2aJdvmXLFqljx46Sv7+/5OTkJJUpU0aKioqSZs2aJaWmpuqso7D7ryFqtVoKDQ01OpVwSkqK9O6770oVKlSQVCqVFBoaKk2YMEE6e/Zsge0Zes2PHj2SRo4cKQUEBEguLi5SgwYNpA0bNuidBleSzPs80tPTpQkTJkiNGzeWAgICJJVKJYWEhEi9evWSDh06ZNbrv3v3rtSjRw/J19dXUigUOrEYm05TXz1fv3691KBBA8nNzU3y9fWVunTpIp0+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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(10, 3.5))\n", + "ax.scatter(\n", + " x_new,\n", + " out1,\n", + " c=np.where(should_be_bg & (out1 != 0), \"red\", \"tab:orange\"),\n", + " s=40,\n", + " zorder=3,\n", + ")\n", + "ax.plot(x_new, out1, \"--\", color=\"tab:orange\", alpha=0.4, zorder=1)\n", + "ax.axhline(0, color=\"gray\", linewidth=0.8)\n", + "ax.set_title(\"order=1: red = leaked values that ignore_zeros=True will WRONGLY include\")\n", + "ax.set_xlabel(\"position\")\n", + "ax.set_ylabel(\"intensity\")\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "38d571f5", + "metadata": {}, + "source": [ + "## 3. `order=3` overshoot / ringing\n", + "\n", + "Cubic interpolation (`order=3`) fits a smooth spline through the samples. At\n", + "a hard step edge, that fit can overshoot past the true min/max — including\n", + "going **negative**, even though the original data was all `>= 0`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "11b47140", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-26T19:55:00.762508Z", + "iopub.status.busy": "2026-08-26T19:55:00.761829Z", + "iopub.status.idle": "2026-08-26T19:55:00.925223Z", + "shell.execute_reply": "2026-08-26T19:55:00.924193Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Min value in original signal: 0.0\n", + "Min value after order=3 zoom: -10.26154014557967\n", + "Max value in original signal: 100.0\n", + "Max value after order=3 zoom: 111.2274784225626\n" + ] + }, + { + "data": { + "image/png": "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ft4QEQUWJkCIiKjZyVOd357Y6tUp6Hj4EDrm/oLEqa853zct1ZOhEVEAqe+zJvH16eiY+wuuPfATMvbsRvzEic735+cNEVFAYQKEiIianXroUIR1725XFpaZieiRIyEpFJAkqd466qFDmzFSIvJnDX2OSEFBCAoNhUytRuzoUfy8ISJqATgJKhEReYUwmaBdtw6mwiLI01Jrv5BcNrmpK3WIiBri6ucIP2+IiPwTV4FhAoSIiIiIiIgo4F1JLoCPwBARERERERFRwGMChIiIiIiIiIgCHhMgRERERERERBTwmAAhIiIiIiIiooDHBAgRERERERERBTwmQIiIiIiIiIgo4DEBQkREREREREQBjwkQIiIiIiIiIgp4TIAQERERERERUcBjAoSIiIiIiIiIAl6wtwNwF7PZDAAoKyvzciRERERERERE1BzqcgB1OYGGBEwCpLy8HACQmZnp5UiIiIiIiIiIqDmVl5cjPT29wTqSEEI0TzieVV1djSNHjiA+Ph7Bwf6T1ykrK0NmZib27duHpKQkb4dDHsS+bjnY1y0H+7rlYF+3HOzrloN93XKwrwOb2WxGeXk5unTpgpCQkAbr+k+moBEhISHo3r27t8NosqSkJKSkpHg7DGoG7OuWg33dcrCvWw72dcvBvm452NctB/s6cDV250cdToJKRERERERERAGPCRAiIiIiIiIiCnhMgHhZZGQkpk6disjISG+HQh7Gvm452NctB/u65WBftxzs65aDfd1ysK+pTsBMgkpEREREREREVB/eAUJEREREREREAY8JECIiIiIiIiIKeEyAEBEREREREVHAYwKEiIiIiIiIiAIeEyAelJeXhzvvvBMqlQqJiYmYNGkSjEZjo/sJITB79mykpaUhNDQUPXr0wJ49e5ohYmqKlStX4r777kNKSgpUKhVuvPFGLFmyBI3NL5yeng5Jkhz+VVdXN1PkdKU+/fRTp302efLkBvfjmPY/ffr0cdrXkiRh2bJl9e7Hce37Tpw4gfHjx+PGG29EcHAwrr/+eqf1Fi9ejIyMDISEhOCGG27A+vXrXWq/tLQU999/PyIiIhATE4OxY8dCr9e78y2Qixrra71ej2nTpiEzMxNqtRqtWrXCPffcgyNHjjTa9tatW52O9ZEjR3rq7VA9XBnT9X2m5+XlNdo+x7TvaKyvT548We+5OyQkpMG2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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print(\"Min value in original signal:\", signal.min())\n", + "print(\"Min value after order=3 zoom: \", out3.min())\n", + "print(\"Max value in original signal:\", signal.max())\n", + "print(\"Max value after order=3 zoom: \", out3.max())\n", + "\n", + "fig, ax = plt.subplots(figsize=(10, 4))\n", + "ax.plot(x_new, out3, \".-\", color=\"tab:red\", label=\"order=3\")\n", + "ax.axhline(0, color=\"gray\", linewidth=0.8)\n", + "ax.axhline(\n", + " signal.max(), color=\"gray\", linestyle=\":\", linewidth=0.8, label=\"original max (100)\"\n", + ")\n", + "ax.fill_between(\n", + " x_new, out3, 0, where=(out3 < 0), color=\"red\", alpha=0.3, label=\"negative overshoot\"\n", + ")\n", + "ax.set_title(\"order=3 can overshoot below 0 and above the original max (ringing)\")\n", + "ax.legend()\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "69340459", + "metadata": {}, + "source": [ + "## 4. 2D example: visualize leakage spatially\n", + "\n", + "Now a small 2D \"object\" (a filled disk) on a zero background, upsampled\n", + "anisotropically along one axis (mimicking the z-axis correction). We look at\n", + "a single slice through the boundary to see the leaked halo directly.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "7d0a0db8", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-26T19:55:00.926841Z", + "iopub.status.busy": "2026-08-26T19:55:00.926683Z", + "iopub.status.idle": "2026-08-26T19:55:01.350491Z", + "shell.execute_reply": "2026-08-26T19:55:01.349194Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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r7zyiu666y4NHTpUS5Ys0b/+9S/ZbDZNnz7dUW/v3r26+uqrdeTIEY0aNUoJCQlas2aNOnfurOrVq7u0O3fuXN1xxx0aN26cR4v3Fec8r7vuOlWvXl2PPfaYCgsLVadOHeXm5qpDhw7avn27hgwZosTERG3atEk9e/ZU48aNXdpYv369OnfurCpVqmjYsGFq0KCBfv75Z02bNk1LlixRZmam0x9gknTbbbepYsWKuueee1S1alXFx8dLOvvHhTejUmrUqOH499q1ayVJV199tUu9q6++Wu+++67+85//qH79+h63L539o/+GG27QL7/84uik8va8c3Nzde211zpe05YtWyo7O1tvvPGGkpKStHLlSl155ZVOz/vKK69o3759GjVqlKKjo/XJJ59owoQJ2rFjh+M6lJ+fr27dumnv3r26++671axZMx07dkxZWVn6+uuv9fjjj5/33E6fPq3nn39eN998s2688UZFRERow4YNeuutt7RkyRJt2LBB0dHRHr1Onr4PNmzYoNmzZ6tPnz4aNmyYDMPQsmXL9Nxzz+mHH37QggULXNr+v//7P/3+++8aOXKkYmNjVa1aNUlnr2fPP/+84w+/U6dOKT09XZ988olHMUve/Wzy8/OVkpKib775Rn379lXXrl21Z88eDRs2TE2bNnVp+z//+Y86d+6s4OBg3X///YqNjdWSJUvUqVMn09z81ltvacSIEWrdurUee+wxRUZG6ptvvtHf/vY3/fDDDx7/oW1m6NChmjFjhq655ho9++yzOnbsmN5880316NFD//73v/WXv/zFqb67nOTt5w1vz+nYsWPq0KGD2rZtqwkTJujo0aOqWrWqpLOdsOnp6ZoxY4Zee+01xcXFadCgQbr11lt1+eWXn/f8z5w5o5ycHI9fr4iICMs6TYq6/fbbZRiGxo4dq1OnTumdd97RoEGDdOzYMY0YMcLy5zN7/1zstaOohIQEzZgxQ4MHD1aHDh105513Wn4eAFDmGF56++23DUnGuHHj3NaRZDRo0MCprEGDBoYk48UXX3QqnzNnjiHJGDJkiKOsdevWRkJCwgVjOXbsmEtZQUGB0aFDByMiIsI4ffq0o3zcuHGGJCMlJcUoKChwlM+dO9eQZFSoUMFYs2aNU1utWrUyYmJinMqGDBliSDJ69erl1M6ePXuMqlWrGo0aNXIqb9CggdGpUyfH7RMnThh16tQxEhMTjZMnTzq1PXv2bEOS8c477zjKOnToYAQFBRnr1q1zqnvXXXcZkpzadmfJkiWGJKNv375GYWGho3znzp1G5cqVDUnG0qVLHeX2n/G5ZVFRUcb1119/wec693yXLVtmREZGGi1atDD27t17wcfapaenG5KMkSNHOpVv3brVCAkJMZo0aeL0GksybDab8c033zjVt79GW7du9fi5z/Xuu+8akoyBAwc6Xrfvv//esNlsxn333edS/9577zWCgoKMHTt2OMrsv/fTpk1zqd+hQwfDZrMZq1atciqfMGGCIcmYNGmSR3Haf16xsbFGdna2o/zkyZNGYmKiERQUZGzfvt1R7s375p577jEkGWlpaaaPKRrD0qVLjZMnTxqpqalGUFCQ8Y9//MPpMfn5+cYll1xiREREGPv373eUFxYWGr1793a5FuzatcuQZFSsWNHYuHGjU1tHjhwxqlatasTExBh//PGHo/zMmTNGt27dDEnGypUrHeWdOnVyuS7ZuXveypUrO/08DcMwevToYVSqVMnpdRw8eLAhyZg7d65T3eeee870eujJdbS452m/RqWmpjq93w3DMJ566ilDksvP5cMPPzQkGUVTQqtWrYyGDRsahw4dcipfu3atUaFCBWP8+PGOMvs19tprr3X6HSp6v6fHuXr27GlIMjZv3uzS7ueff25IMv7v//7PzSv4P+f+DmzcuNGoX7++Ub9+fZffLW/O+4EHHjAqVarkkj+ys7ON2NhYo3Pnzo6ypUuXGpKMKlWqGL/88oujvKCgwOjTp4/TdffHH380JBmTJ0++4HmZKSwsNI4fP+5S/uWXXxqSjBdeeOGCbXj7PsjLy3O6Ltg98cQThiQjMzPTUWZ/LSIjI40DBw441f/555+NoKAglzx56NAhIyYmxpBkvP322xeM35ufjT3v3H///U51v/32W8NmsxmSjF27djnKr776aqNChQrGhg0bnOqPGTPGJTcfOHDACA0NNfr06ePynnzppZcMScayZcsueD5m7Pk9JSXFyM/Pd5QfPHjQqFWrlhEZGWkcPXrUUX6hnOTp5w1vz6lTp06GJOPRRx897/nk5eUZH330kdG3b18jNDTUkGS0aNHCeO6555zeM+ey/y55epz72aYo+3Xq3GuqJ+yPa9OmjdPv7JEjR4xLLrnEqFatmpGTk+P0eph9Tjb7TGd/H56bL873/rnYa4fZ8xmGa54EgPKsVBe9qFatmtNQXUnq27evEhISNHfuXBUWFkqSIiMj9euvv2r58uXnbS8sLMzx7xMnTujQoUM6fPiwrr/+euXk5Gjr1q0uj3nwwQed1vro1KmTJKldu3Zq166dU92OHTvqwIEDOnbsmEs7f/vb35zaqV+/vgYPHqydO3fqhx9+cBvzV199pd9++01Dhw7V0aNH9eeffzqOjh07qkqVKlq8eLEk6Y8//tDKlSt1/fXXq02bNk7tPPXUU+d7aZx8/PHHjpjPHX7ZsGFD3XbbbR61ERkZqU2bNrmdnlDUhx9+qO7du+uqq67SqlWrFBsb63W8EyZMcCpv2rSpbr31Vv38888uC0kmJSW5fEvdrVs3SdK2bds8fm67L7/8UiNGjFDHjh0dw1cl6f3335dhGBo+fLjTz+7PP//UTTfdpMLCQpcpS9HR0Ro5cqRTmf1n261bN11zzTVO9z388MMKCwtzvA6eGj16tCIjIx23Q0JC9NBDD6mwsNBpMThP3zeFhYX64IMP1KhRIz3wwAMuz2e2Zk52dra6d++uefPmadasWS6P++6777Rnzx4NHjzYMaJMOjud5tFHH3V7bjfeeKPLt5FffPGFjh07pjFjxjiNWqhYsaJjQTxvX8Oi+vbtq0aNGjmVdevWTWfOnNGuXbskyfH6Nm/eXH369HGq+8ADDzi+aT3X0KFDZRiGR6NQinuejz76qMtw648//liRkZEaPXq0U3lqaqqaNGniVPbTTz9p/fr1Sk1NVWFhodPveqNGjXTppZc6rlXneuihh0y/5b399tv15Zdfenycyz6CJSQkxKXd0NBQpzqe+Prrr3XttdeqevXqWrNmjdPvljfnbRiG3nvvPSUlJalx48ZOdfPz89W9e3etXLnSZSrLX/7yFzVo0MBxOygoyDHi0f6ztI90Wbp0qWOkgDdsNptjJFthYaGOHDmiP//8U61atVJERIRjdI8nPHkfSFLlypUd14UzZ87o8OHD+vPPPx3XYrPnHDJkiNNIP0mOzwMPP/yw0888Ojpa99xzj0cxe/uzsb/uRb+lT0pKUteuXZ3KDh48qG+//VYpKSlq0aKF031mI1dnz56tkydPasSIETp06JBTLD179pQk0/eSJ+xxP/XUU6pQoYKjvGbNmrrnnnt05MgRl6nG58tJnn7eKO45ne86L539Herfv7/mzJmj33//Xe+8847q1q2rp556Sg0bNtS1117rMsKlZcuWXl1bWrZsed4YLsZDDz3k9DsbERGhe+65R0ePHjWdXnWxzN4/F3vtAABcWIlN5zGbK9m4cWPTD8HNmzfXli1b9Mcff6h27dp67rnn1LdvX3Xu3Fm1a9dWhw4d1LVrVw0aNMhp6Piff/6pv//975o3b57TWil2hw8fdikr+kEwKirKtPzc+w4dOuTyh1Dz5s1Nz0M6uzZC0Q8hdlu2bJF09g/eon/I2P3++++S5Fgrxuy56tWr5zKM3p3ztXPZZZd51Mb//d//afDgwWrVqpUuueQSdejQQT169FD//v0df8TYfffdd7rtttvUuXNnLViwwPQPqqKJvUKFCqpZs6YkaefOnapevbrTH9l29g+sO3bscPogZPbzs0+jOHTokKSz04T++OMPpzrBwcEuQ9rXr1+vW265RZdeeqnmzZvn9Dtr//md70OY/edn17hxY6cPt/ZzPPd8zlWlShU1btzYaa2gw4cP6/Tp0071atas6dTuhX4n7Tx93/z555/Kzs5W586dPV5keOjQocrNzdWXX36p6667zuV++3mb7YCQkJDgtl2z4fTnew3P/T25GJ78Xh08eFBHjx41ff1DQ0PVuHFjHTlypNgxFPc8zV6zHTt2qEWLFgoODna5r3nz5vr5558dt+2/688995yee+4509jMXh+z57XXNavvCXtnwKlTp1zusy+Y6+nUt99//13XX3+9GjdurBUrVjimj9h5c972PxpXrFjhuH6Z+fPPP52mGnnyXm3QoIHGjRunSZMmqW7dumrRooWuvfZa9enTx9EpcSHz5s3TCy+8oO+++87l+mGWH93x5H0gnb3GvvTSS3rnnXe0bds2xxcj53tOd7+n0sXlLG9/Njt27FCNGjVUq1Yt0+c8t3P8fNexmJgYl9xs/52ydy6YKZo3PFWc64NZTvL280ZxzqlmzZqOz1WeCA8P15AhQzR48GDNnj3bsV5KxYoVlZqa6qgXFRVlmm98wdM8bBWz948V1w4AwPl53YliX/vC3bd+9nmz7tbI8ES7du20fft2ffXVV1q6dKmWL1+u2bNn6+9//7tWrFihZs2ayTAM9ejRQxs3btSYMWPUtm1bRUVFqUKFClqwYIH+8Y9/uHyAk+TyweFC5ZIsXeDMHtMzzzyjxMRE0zrefMgoLb169dIvv/yixYsXa9myZVq2bJnef/99TZgwQatXr3b6kNqkSROFhIRo1apVmjdvnvr37+/SXtEOkgYNGni9WO65PPn57d27Vw0bNnS6r1OnTk4L6O7Zs0c33HCDwsLCtHDhQpefhf3nN3/+fNMOQcn1Dw5v1jVx5+abb3YZmbVr1y63C6W6U9z3jacGDhyot956SxMnTlS7du1c/kAtLiteQ3eL4J1vocrSui6UhIt9zey/B2PGjHFayPdcZtd5d8977Ngx01F97pz77ap9JNu+fftcOtvsC1N6OtotOjpabdu21SeffKL09HSX0VLenLe9bseOHc87OvB8f8Sfz/jx43XHHXdo4cKFWrlypT7++GO99tpr6t27t+bOnXvehR0/+eQT9e3bV1dddZWmTJmiSy65xBG3fZSNpzx9Hzz88MOaOnWq+vXrp0cffdSxcPqvv/6qoUOHmj6nFe9tMyX9sylOLG+++abTCKRz1a1bt8TjsLPiNS/OOXn7vGvXrtWHH36ojz76SAcOHFDt2rV13333OS0CLp1d/8ebTsHo6GjTjmRfK06OcveaXsy1AwBwYV53otj/QLR/C1GUvdzsm6sdO3bo1KlTLn98bt68WeHh4U4fZuw7cNg/xC5atEgpKSmaPHmy3nnnHW3cuFHff/+9nnrqKU2cONGpvZIYMlnU5s2blZSU5FImSZdeeqnbx9m/NQgNDb3gNyf2hR7t7Z7r119/9XghtXPbadu2rdN9mzZt8qgN6eyUnoEDB2rgwIGSpOnTp+vuu+/Wq6++6jQtITw8XPPnz1fPnj01aNAgnThxQrfffrtTW0V/Ruf+Mda4cWNlZWXp999/V+3atZ3q/fTTT07n5I06deq4PO+5nSTZ2dlKSUnR0aNHtXz5ctMPhk2bNtWiRYsUExPjslikN+zvD7PX/8SJE9q5c6fT71FaWpqys7NdzudcmzdvVu/evV3KpP/9TnrzvqlRo4aioqL0448/qrCw0KPRKLfeequuv/56DRo0SNddd50WLVrk9BrbzzsrK8vlse6uKe7YfwfsC6Oey+z3JDo6Wt99951LO/ZvcourVq1aqlatmun79OTJk9qxY4fp4rKe8vY8L9TW9u3bdfr0aZc/IorGf+43nFZ8y/vSSy+5TNE7n3P/OE9MTNT06dO1evVql29SV69eLUku1zZ3KlWqpNmzZ2vw4MF68MEHdfz4cT3xxBOO+70575o1ayoyMlLZ2dlevUZmvyvu8keDBg00atQojRo1Svn5+Ro6dKjef/99LV++3HQnD7t3331XoaGhWr58udMfWsePH3e5lljl3XffVYcOHVx2tFm4cKFX7Zybs4qOPPE0Z3n7s2ncuLG2bt2qgwcPuoxGKfqc57uOHThwwCU323+nSmLExLnXh6JTkr25Pnj7eaOkzmnDhg368MMPlZGRoV27dqlatWq6+eabdeutt6pr166mHXrffvuty2Lz57N06dLzvncuxubNm11Gqnry2VA6m6PMOoOKm6OKe+0AAFyY12uiXHnllWrQoIG++OILl3UpCgsLNXXqVElnvzkv6ujRoy5brs6dO1dbtmxRnz59HH+kFZ1yIckxPcY+dNieSIt+G7x//37TrWat9txzzzl9q7Z3717NmDFDDRs2VOvWrd0+rkePHqpdu7ZefPFF07mq+fn5jiRas2ZNXXvttVq0aJG+//57p3rn7rZyIfafxXPPPef0eu3atUvvv//+BR9fUFBg+qG76M/kXFWrVtXChQvVrVs3DR061GU75euuu87pOHddEHu8kyZNcnrM9u3b9cEHH6hJkyYe7fJTlL3j6tzDfg6nTp1Snz59tG3bNs2aNcttB8ngwYMlnZ33fubMGZf7c3JyTKccFFWzZk116NBBixcvdmyxbZeWlqZjx47plltucZS1adPGJfai06hee+01p2kjp06dUlpamoKCghydK968b4KCgnTrrbdq586dplslu/sm++abb9bcuXO1YcMGde7c2Wmb6TZt2qh+/fqaMWOG01QiwzD0wgsvmLbnTrdu3VS1alW98sorTr+fBQUFeuaZZyTJ6TWMj4/X0aNHXV7vF1980avnLcr++m7evNlp7RlJmjp1qunoC2+2OPb2PM/n5ptv1pEjR/Taa685lc+cOdNpKo8ktWrVSi1atFB6erppB5dhGKbXancuZk2UPn36qFq1anrjjTectv/es2ePZs2apc6dO3u1M0/FihX1/vvv64477tCTTz7ptA6GN+cdFBSkv/zlL9q4caPeffdd0+cym6bx3nvvaffu3Y7bhYWFjqlD9utfTk6OyzWmYsWKjj/QzK6756pQoYJsNpvL+3TSpEkXNdrsQs9Z9Npy5swZt9Oi3OnTp49sNpteeuklp+vp4cOH9eqrr3rUhrc/G/vrXnQL2NWrV7usKVKrVi0lJSVp4cKFLp+Diu7OJkkDBgxQaGioxo8fb3o9OHHihI4ePerReRV1btzn/lz//PNPvfrqq4qMjHRZ08WMt583rD6nf/3rX2revLlatmypKVOm6IorrtBHH32kgwcP6p133lH37t3djojypzVR0tLSnH5nc3Jy9Oqrr6pq1aoXnEoTHx+vrKws/frrr46ywsJCpaWleRXDxV473KlatapXI34AIJB5PRKlQoUK+te//qVevXqpffv2GjFihBISEnTkyBF9+umnjm8Ki448kM5+0/Hss886vjHZsmWLpk2bppo1azol6YSEBLVr106JiYmKjY3V4cOHHR+ChgwZIunsXOTLL79cL7zwgo4dO6bLLrtMu3bt0uuvv67GjRuX+IV+//79uu6669S3b18dPnxY06dP14kTJ/TKK6+c9xv7KlWqaMaMGerdu7cSEhJ0xx13qFmzZjp69Kh27NihOXPmaPLkyY7hqv/4xz/UsWNHde7cWffcc49jy8EffvjBaZHJ8+natav69eun2bNn67rrrlPv3r11+PBhTZs2Tc2bNzf9dv5cR48eVUxMjHr16qVWrVopJiZG+/fv1xtvvKGKFSu6XZy2cuXK+uSTTzRw4ECNHj1aJ06c0NixYy8Y7+2336733ntPr776qvbs2aMePXo4tjg2DEOvv/665UNRx40bpxUrVuiGG27Qn3/+qffee8/p/iuuuEJXXHGFrrrqKj399NN68skndfnll2vQoEGKjY3VwYMHtXHjRn3yySfavHmzR9Ns/vnPf6pjx47q0qWL7r77bscWxx988IFatmzp0Wt1rtq1a6tt27YaNmyYgoOD9eGHH+q7777TY4895vgGzNv3zdNPP61ly5bpgQce0NKlS9WpUycFBwdr06ZN2rp1q8sfF3Y33HCDFixYoF69eqlTp05asmSJ6tatqwoVKuif//ynbrnlFl111VW66667FBUVpXnz5jk+iHv6s42IiNDUqVM1cuRIXXXVVRo2bJjCwsI0e/ZsffPNNxo5cqSuvfZaR/277rpLaWlp6tOnj+6//35VqVJFn3/+uVdbY7rz9NNPa9GiRRowYIBjS8k1a9bo008/VePGjV2GY3uzxbG353k+Dz/8sD788EONHTtWGzZsUNu2bbV582a99dZbatGihdMfhDabTe+99566dOmiK6+8UkOHDlWLFi105swZ/fLLL5o3b56GDBni0eK40sWtiRIVFaUXX3xRo0aN0jXXXKO77rpLp06d0ssvvyybzebovPdGUFCQ0tPTVaVKFT333HM6fvy4pk6d6vV5P/PMM/r22281dOhQzZs3Tx06dFBYWJj27NmjJUuWqHLlylq6dKnTc9tz3N13363o6GjNmzdPX3/9tVJTUx3fqC9dulQjR45U3759FR8fr8jISG3evFnTp09XvXr1Lvjtf//+/TV79mx16tTJsZDx4sWLtXnzZo9zh7f69++vadOmqV+/furevbsOHz6s999/3+vpvU2aNNFDDz2kl156Sddcc40GDRqk06dP680331TdunVN13Iy483PZsiQIUpPT9f//d//ae/evY4tjl999VW1bt3apWPhH//4hzp37qwOHTpo9OjRji2O7bn53OtYvXr19Prrr2vYsGGKj4/XkCFD1KhRIx0+fFhZWVmaM2eO5s2b5xgdsGzZMiUnJ2vIkCF65513znuOXbp00eDBgzVjxgwlJyerb9++ji2ODx48qH//+9+mi1ub8ebzhrfndCEZGRmqXbu2HnzwQfXr18+rac0XOxpmxYoVWrFihePfkvTvf//bMdV38ODBbqcsmbn66qt166236vTp03r77be1Z88eTZ8+XeHh4ed93H333acPP/xQXbp00ahRo2QYhj766COvP+9c7LXDnfbt2+urr77S888/r0suuUQ2m81pbRoAKFeKu63P+vXrjVtvvdWoV6+eUbFiRaNq1arGVVddZUyZMsV0e0v71m3r1683unXrZlStWtWoVq2a0bt3b+Pnn392qvvcc88ZnTp1MmrVqmVUqlTJqFOnjnH99dcbX3zxhVO93bt3G6mpqUatWrWM0NBQo2XLlkZ6errpFr327efO3aLQTm62bTN7jH370D///NMYOnSoUaNGDSMkJMRo166dsXjxYrfnXdSWLVuMIUOGGLGxsUalSpWMGjVqGG3atDH+9re/GXv27HGqm5mZaSQnJxtVqlQxIiIijJtvvtnYtWuX27bNnDp1ynjyySeN+vXrG8HBwUZ8fLzx6quvmr5WRctOnTpl/O1vfzPatWtn1KhRwwgODjZiY2ONfv36GWvXrr3g+Z45c8a49dZbDUnGxIkTPYr3xIkTxrhx44ymTZsawcHBRmRkpNGzZ0+nLTLt3P387FsAerIVpv3n6u4outXfokWLjBtuuMGoXr26UalSJaNu3bpGcnKykZaWZpw4ccJR70I/o82bNxsDBgwwatSoYVSqVMlo0KCBMXbsWOPIkSMXjNnO/vP68ssvjYkTJxpxcXFGpUqVjCZNmhhTp051qe/N+8YwDCMnJ8d4/PHHnX4WiYmJxmuvveYSQ9HHfvPNN0ZERITRqFEjp/fR559/brRt29YICQkxatasaYwYMcL45ZdfDEnG3Xff7ajnbqvFcy1YsMDo1KmTUbVqVSMkJMS44oorjJdfftll203DMIzFixcbbdq0MYKDg42aNWsao0aNMo4cOeJ2i2Oz53V3rlu3bjV69+5tVKtWzahatarRrVs344cffjDdytKbLY69PU/777I7+/fvN/7yl78YUVFRRuXKlY2rr77a+Prrr90+bu/evcY999xjNGrUyPHzb9GihXH//fcbmzZtctQ73zXWKrNmzTISExONypUrGxEREUbPnj2NH3/80ePHu9vm+pFHHjEkGSNGjHBs0evpeRvG2W1Zn332WaNly5ZG5cqVjbCwMOPSSy81brvtNqe8cO416dVXXzXi4+ON4OBgo379+sZTTz3llDt37txpjBo1ymjevLkRHh5uVK5c2bj00kuNMWPGeLxlfHp6unH55ZcboaGhRs2aNY1bb73V2Lt3r8e5w9v3QV5envHoo48aDRo0MIKDg424uDjjb3/7m7Flyxa3W7S6uz4XFhYa//jHP4xLL73UqFSpkhEXF2dMnDjRsUWzJ9d1e0ye/GwM4+y17t577zVq165thISEGK1atTI++ugjt7/bq1evNjp37mxUrlzZiIyMNPr372/s2bPHiI6ONlJSUlxiWbNmjdGvXz+jdu3aRqVKlYzatWsbSUlJxqRJk5y20/70008NScbjjz/u0TkWFBQYU6dONVq0aGGEhIQYVatWNZKTk736TGLn7ecNT8/pfFvMG4bhtA1zabvQ9uvn2xK5aBubNm0yHnzwQSMmJsYIDg42WrRoYbz//vsu9d29Hu+//76RkJBgVKpUyahXr57xt7/9zcjKyvLq/XOx1w537/tt27YZ3bp1M6pVq+Z4bQCgvLIZRumsjhgXF6e4uDinRTzLoqFDh+rdd9/1+0UlgbLmP//5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krRv3z7Tuvv27XPUAQD4j0DKRQCAsqe85KEhQ4bo4Ycf1r/+9S86UQIInSgXoXHjxtq+fbtOnTrlMqXlp59+ks1mU8OGDT1qR5I2b96sG2+80em+TZs2udRv2rSpsrKy1Lp1a1WvXv0izuCsmJgYj+uOGzdO48ePl3R2N4RLLrlE69ev14kTJ5wWl929e7cOHDigG2644aLjAwC4V95zEQDAt8hD7p04cUKSmNITYOhEuQg333yzJk2apJdfflkPP/ywo3zlypX6+uuv1bVrV6dha+50795dYWFheuWVV3TnnXc65gCePHlSL730kkv922+/XZ9++qkeeeQRvfnmm7LZbE73//7776pdu7bH53Ex8/8GDx6sZ555RtOmTXOaB5mWlua4HwBQcshFAABfKu95KD8/Xzk5OaYdOVOnTpUkJSUledw2/B+dKBfhr3/9qz7++GP99a9/1Y8//qirr77asZ1XRESE/vnPf3rUTkREhJ5//nnde++9atu2re644w4FBwfrvffeU4UKFVzq33LLLRo5cqTeeOMN/fjjj+rTp4/q1Kmj/fv367vvvtOCBQt05swZj8/jYub/PfLII5o9e7YeeeQR/fLLL2rZsqWWL1+uGTNmaPDgwerUqVOx2wYAXBi56OzoxxkzZkiSdu3aJUlavny54/6OHTuqY8eOxW4fAOBeec9Dx44dU2xsrPr06aPLL79cderU0cGDB/X555/rm2++UevWrTVmzJhitQ0/5evtgcq6w4cPGw888IDRoEEDo1KlSkaNGjWM1NRUY+vWrU717Nt5nW9bxvfee89o0aKFERwcbMTExBgPPvigsWnTJreP++CDD4zOnTsbERERRnBwsFG/fn0jJSXFmDZtmlM9ScaQIUMsOFtzBw8eNO68806jTp06RnBwsNGkSRPjueeeM86cOVNizwkA+J/ynovs2xq7O853vgCAi1ee89CpU6eMhx9+2EhMTDRq1KhhVKxY0QgPDzfatWtnvPjii0ZeXp7lzwnfshmGYZR+1w0AAAAAAEDZEuTrAAAAAAAAAMoCOlEAAAAAAAA8QCcKAAAAAACAB+hEAQAAAAAA8ECZ60TJyspSt27dFBYWpjp16uiRRx7R6dOnfR0WAKCcIA8BAHyJPAT4VkVfB+CN7OxsdenSRU2aNNGcOXP066+/auzYscrLy9Mrr7zi6/AA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "size = 24\n", + "yy, xx = np.mgrid[0:size, 0:size]\n", + "cy, cx = size // 2, size // 2\n", + "radius = 6\n", + "mask2d = ((yy - cy) ** 2 + (xx - cx) ** 2) <= radius**2\n", + "\n", + "image2d = np.zeros((size, size), dtype=np.float32)\n", + "image2d[mask2d] = 150.0 # object intensity, hard edge, zero background\n", + "\n", + "zoom_factor_2d = (4.0, 1.0) # upsample axis 0 by 4x, mimicking anisotropic z\n", + "\n", + "img_order0 = scipy.ndimage.zoom(image2d, zoom_factor_2d, order=0)\n", + "img_order1 = scipy.ndimage.zoom(image2d, zoom_factor_2d, order=1)\n", + "img_order3 = scipy.ndimage.zoom(image2d, zoom_factor_2d, order=3)\n", + "\n", + "fig, axes = plt.subplots(1, 3, figsize=(13, 5))\n", + "for ax, img, name in zip(\n", + " axes, [img_order0, img_order1, img_order3], [\"order=0\", \"order=1\", \"order=3\"]\n", + "):\n", + " im = ax.imshow(\n", + " img, cmap=\"viridis\", vmin=min(0, img.min()), vmax=max(150, img.max())\n", + " )\n", + " ax.set_title(name)\n", + " plt.colorbar(im, ax=ax, fraction=0.046)\n", + "plt.suptitle(\n", + " \"Upsampled disk-on-zero-background: order=0 keeps a hard edge, order>=1 blurs it\"\n", + ")\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "a41c6549", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-26T19:55:01.352814Z", + "iopub.status.busy": "2026-08-26T19:55:01.352106Z", + "iopub.status.idle": "2026-08-26T19:55:01.523110Z", + "shell.execute_reply": "2026-08-26T19:55:01.522113Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzIAAAIbCAYAAAAw4atnAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAQ6wAAEOsBUJTofAAAVhdJREFUeJzt3Wl4FFX69/FfB7JDSNiXICFACCpCRECQLSwiEWRRCYuyGgVGUFEZdVQWZZlxQGd0AEVEBREEBUcMi2AQEIUBBv4oRATCKiqQkICEQMh5XvCkh053IGlCOtV8P9eVS/v06dN3VVf3zV1Vp8pmjDECAAAAAAvx8XQAAAAAAFBYFDIAAAAALIdCBgAAAIDlUMgAAAAAsBwKGQAAAACWQyEDAAAAwHIoZAAAAABYDoUMAAAAAMuhkAEAAABgORQyAAAAACzHqwuZAwcOyGazady4cZ4OxWtFRESoXbt2Hnv/QYMGyWazFct7Fff2xPZbchXXdr927VrZbDa9//771/29ULT4/l5/5B/veT8UHPnHkVcXMiXd5s2b9cQTT6hNmzYKCQmRzWbTq6++6umwAABebt68ebrnnntUs2ZNBQYGqnz58mrSpIneeOMNZWZmejo8ACiQ0p4O4EaWmJiot956S1FRUbr99tv1zTffeDokAAXw008/FdueWOB62LZtm8qVK6fhw4ercuXKyszM1DfffKOnnnpKS5cu1ddffy0fH/Z1AiUN+ceRpQuZjIwMhYSEWPZ9hw8frmeeeUZlypTR2rVrFRsbWwTRXZmn1hlQ1Dy5Lfv7+3vkfVFyWD3/TJs2zalt5MiRGjFihGbMmKENGzaoTZs21/w+lyP/wFuQf0oOj+5uOXXqlEaPHq3atWvL399fVapUUd++ffXzzz879Lv8XM1PP/1UzZo1U1BQkO677z57n48//liNGjVSQECAatSoodGjR+vs2bMu39cYo1mzZqlZs2YKDg5WcHCwWrZsqaVLlzr1tdlsGjRokNauXat27dopJCREjRo1KpLlr1KlisqUKVPg/seOHVNycnK+y3W5gqyz//73v3rggQdUuXJl+fn5KTIyUs8995zL8bdu3aqOHTsqODhYYWFhuv/++3XgwIECx17cfvvtN40cOVIRERHy8/NTlSpV9NBDDznFfPr0ab300ku68847ValSJfn5+SkiIkKPP/64UlNTC/ReGzduVKVKlXTzzTfr4MGD9vZPP/1Ubdu2VUhIiAIDAxUTE6N3333X5RiF2X5def/992Wz2ZSUlKQ33nhDUVFR8vf3V+3atV3+g0WSNm3apK5du6p8+fIKCAhQdHS0XnnlFZ0/f96h37hx42Sz2bRnzx69/PLLqlWrlvz9/dWgQQN99NFHLvvm93f5ubZF+T0s6LLkJ/dc95MnT2rIkCGqVKmSAgMD1aJFC61Zs8apf95zlFetWqVSpUqpV69eDv1ycnLUuXNn+fr66rvvvrO3F3T7dMUYozfffFMxMTEqV66cypQpozp16qhfv346duxYgZYX5J/8RERESLq0fi5H/ik48g/5h/xTfDx2ROb06dO66667tGvXLvXt21etWrXSvn37NH36dK1YsULffvutbr75ZofXfP7553rjjTc0bNgwJSQkyBgjSZo5c6aGDx+uevXq6eWXX5afn58++ugjrVu3zuV7Dx48WB9++KG6d++u/v37S5I+++wz9ezZUzNmzNCwYcMc+m/ZskWLFy/WkCFD1K9fP50+fdr+3IkTJwq8zEFBQQoKCipw/7yef/55ffDBB0pKSirwRK/81tmKFSvUo0cP1axZUyNHjlSVKlW0Y8cOTZs2Td9++62SkpJUuvSlzWPbtm1q06aNSpUqpZEjR6pmzZpatWqV2rVrpz/++KPA8aenp+vChQsF6uvr66ty5coVeOzLHT58WC1bttSZM2c0dOhQRUVF6ejRo5oxY4ZWrVqlLVu26KabbpIkHT16VO+884569eql+Ph4BQQEaPPmzXr77be1YcMG/ec//5Gvr2++7/Xpp5/qoYceUrNmzbR06VKFhYVJksaOHasJEyYoNjZWY8eOVWBgoFauXKmEhATt3btXU6ZMsY9R2O33Sl544QVlZGRo8ODBKlOmjD788EM9/fTTql69uvr06WPvt2LFCt13330KCQnRiBEjVLVqVSUmJurll1/Wxo0b9eWXXzqdVjJw4EDZbDaNGjVKPj4+mj59uh566CHVqVNHd955pySpV69eqlu3rlNcr7zyivbs2aMqVarY24rqe+jOsuSnc+fOCgkJ0UsvvaTU1FS9/fbbuueee/TFF1/onnvuyfd1d999t55//nlNnDhRb775pkaOHClJmjRpklatWqW//e1vatGihaTCbZ+uTJo0SS+++KLi4uL0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/fry9/dX+fLl1aNHD/3f//2fQz9jjN58803FxMSoXLlyKlOmjOrUqaN+/frp2LFjDn337dunQYMGqXr16vLz81N4eLhGjBihEydOOL1/uXLl1KpVKy1atEgl/Yr85J+rI/8UDPmH/EP+sX7+KfQuh+PHj+vHH3/UI488UuDXjBkzRn//+9/VrFkzDR8+XFlZWZozZ46WLFmS72teeOEFZWRkaPDgwSpTpow+/PBDPf3006pevbr69Olj77dixQrdd999CgkJ0YgRI1S1alUlJibq5Zdf1saNG/Xll1/Kx8exXuvfv79Kly6tP/3pTypTpozq168v6dJG8eGHH6p79+7q37+/JOmzzz5Tz549NWPGDA0bNqzAy9ymTRunw9uSNGPGDG3cuFFVq1a1t40dO1YTJkxQbGysxo4dq8DAQK1cuVIJCQnau3ev04TWw4cPq23bturZs6cmT56sX3/9VZK0fft2tWnTRtnZ2RoxYoQiIyO1YcMGTZ06VWvWrNG3335r3zPz+OOP691331X//v3t55mnpKRo2bJl+uOPPxQYGChJOnv2rMsvd34qVqxY4L65zpw5o9atW6tp06YaP368Tp8+rTJlyhR6nMOHD6tly5Y6c+aMhg4dqqioKB09elQzZszQqlWrtGXLFt100035vr5Zs2YqW7asVq9erZEjR0qSLly4oHXr1snHx0erV6/WSy+9JOnSF/rrr79Wq1at5O/v7zCOq+3r4sWLiouLU1JSkuLi4vT444/bT5Fp1aqVli9fbv9xyrVjxw516dJFAwYMUHx8vLZu3ap3331Xp06d0ooVK+z90tPT1bp1a+3fv19DhgxRkyZNlJycrHvvvVd16tS56nobNGiQXnzxRb377ruKi4tzeG7Tpk3auXOnnn/+efn6+l51rMvt2rVLcXFxys7O1vr163XbbbdJuvSd7dGjh2rWrKmRI0eqSpUq2rFjh6ZNm6Zvv/1WSUlJ9r2h7nymzz33nNLT05WQkCB/f399/PHHGjVqlH777Te9+uqrkqSTJ08qNjZWOTk5euyxx1S7dm2lpaVp586d+uabb674+9arVy9duHBBkyZN0qOPPqrWrVtLkqpUqeLQb/ny5Xrrrbf02GOPadCgQVqzZo3eeecd2Ww2zZw5094vIyNDrVq10t69ezVw4EA1atRIaWlpmjVrllq0aKH169fr9ttvlyRNmjRJL774ouLi4vTII4/Iz89Phw4d0ooVK/TLL7+oWrVqki79FrRr105BQUEaMmSIatWqpZ9//lkzZszQmjVrtHnzZod/gEqXTrFZvXq1du7caf+sShryT8GQfwqO/EP+If9YPP+YQkpKSjKSzJQpU1w+L8kMHDjQ/vinn34yNpvN3HXXXeb8+fP29lOnTpmaNWsaSWbOnDn29jlz5hhJ5rbbbjPnzp2zt585c8ZUqFDBtGjRwt6WnZ1tIiIiTGBgoPn5558d4hg8eLCRZObOnWtvGzt2rJFkWrVq5RCLMcYsXbrUSDLTpk1zWqZu3bqZkJAQk5GRceWVcxUffPCBkWTi4+NNTk6OMcaYbdu2GZvNZkaNGuXU//HHHzc+Pj5m37599rZatWoZSWbGjBlO/Vu3bm1sNpvZsGGDQ/v48eONJPPKK6/Y28LCwsw999xz1Zhz11lB//KTu91cvm0YY0zbtm2NJPPnP/8539dcvn3kjSslJcXe1qNHDxMWFuawvowxJiUlxZQpU8YMGjToqsvbtWtXExISYrKzs40xxnzzzTdGkhkwYIDx8/MzZ86cMcYYs2PHDqfvwZW2r9mzZxtJJiEhwaH9p59+Mv7+/qZevXrm4sWL9nZJxmazmW+//dah/2OPPWYkmZ9++sne9sILLxhJ5l//+pdD388++8zl5zJw4ECntn79+pnSpUubY8eOObQPHTrU2Gw2s3///vxX2v9Xq1Yt07ZtW2OMMWvXrjWhoaGmYcOG5vDhw/Y+mZmZpmrVqqZZs2YO329jjFm8eLGRZN5//317W2E+09zfjvDwcJOWlmZvP3funGnWrJnx8fExe/fuNcYY8/nnnxtJZsGCBVddLleutG2mpKQYSSYwMNAp7s6dOxtfX1/7dmSMMU8++aTx9fU133//vUPftLQ0Ex4ebtq1a2dvi4mJMQ0aNLhqfI0bNza1a9c2J0+edGjftGmTKVWqlBk3bpzTa+bOnWskmXnz5l11fE8h/7iP/EP+If+Qf7wx/xT61LLjx49LkipUqFCg/kuXLpUxRk899ZRDRV2uXDkNHz4839c9/vjjDnsagoOD1aJFC+3Zs8fetm3bNh04cEAPP/yw6tat6/D63EPnn376qdPYTz/9tFN1P3fuXAUGBio+Pl4nTpxw+OvRo4cyMjL03XffFWiZXfnqq6/0yCOPqE2bNvrggw/sh1s/+ugjGWM0dOhQp/e97777lJOT43BIVJLKly+vhIQEh7bjx49r/fr16tSpk+666y6H55555hkFBwc7rIvQ0FD9+OOP2rFjxxXjHjBggL766qsC/7nrz3/+s9uvlS7tFfr3v/+tuLg4hYSEOKzHMmXK6M4779TKlSuvOk6HDh2UkZGh//znP5KkNWvWqHz58hozZozOnz+v9evX29tz++flavvKXffjx493aI+KilK/fv30888/a+fOnQ7PtWjRwmkiaqdOnSTJ4XuwZMkShYWFOW0TPXv2tO/tvZphw4YpOzvb4TSK06dPa8GCBerYsaNq165doHEk6eOPP9bdd9+tO+64Qxs2bFB4eLj9udWrV+vXX3/VoEGDdPr0aYfPqU2bNgoKCrJ/Tu5+piNGjFBoaKj9sb+/v55++mnl5OTYT9PJfT4xMVGnTp0q8LIVRs+ePRUZGenQ1qlTJ124cEEpKSmSLu1ZnTdvnlq0aKE6deo4LGN2drbuvvturV+/3n66TWhoqI4ePapvvvkm3/f94YcftH37dvXp00c5OTkOY0ZGRqpu3bou11vub7qrU0dKCvKPe8g/V0b+If+Qf6ybf9yezWYKeB7b/v37JUnR0dFOzzVo0CDf1+X9AKRLC3ry5EmnsRs2bOjU96abblJISIj27dvn9FxUVJRT2+7du5WZmakaNWrkG9Nvv/2W73NXsn37dt1///2qW7euli5d6pAgd+/eLUlq1KhRgd+3Tp06TlfmudK6CAoKUp06dRzWxT/+8Q89/PDDaty4sW666Sa1bt1anTt31oMPPugwYTYyMtLlZ1GUKlWqpLCwsGsaY8+ePcrJydFHH32kjz76yGWfvKd4uNKxY0dJl37w7rzzTq1evVqxsbG65ZZbVKNGDa1evVr33HOPVq9erbCwMPsh18u52r7279+vChUq2A+9Xi73M9u3b5/DdpDfd0CS0/egYcOGLg+9R0dH66effrraYqt169a65ZZb9O677+rPf/6zbDabPv74Y/3xxx9OV/m5kq1bt6p///5q166dEhMTnWLK3d5HjBihESNGuBwjd3t39zO9+eab823bu3evpEun3gwZMkTvvfee5s+fr9tvv12tWrXSAw88oBYtWhRwaa+sIJ9f7g/8unXrVKlSpXzHOnHihGrWrKnJkyerZ8+eateunapUqaLWrVurQ4cO6tu3r/1Qfe46njx5siZPnlzg2HJ/06/HPR6KGvmn4Mg/V0b+If9cjvzjrKTnn0IXMrkLe/mGfD0UxSU081shrq7gkZOTo3Llymnx4sX5jnfLLbcUOoZDhw4pLi5OwcHBWr58udMPZk5OjiRp2bJlTue65sr7oRfFFUi6deumAwcOaOXKlVq7dq3Wrl2rjz76SOPHj9d3331n/5zPnDmjM2fOFHjcy8+9Lqj8ludKG3R2drbD49z12Lt3b6c9Q4Vx6623qmrVqlq9erWeeOIJbd682T5Rr0OHDlq9erX9vOVOnTq5/CErqivEXOk7UNB/yBXGY489plGjRikpKUnt27fXrFmzVKVKFXXv3r3AY+ROqN6wYYOWLl2qBx980OH53M9p4sSJatasmcsxcr8jRfWZ5mf27Nl69tlntXz5cm3YsEHvvfeepk2bppEjR+qf//znNY9fkM8vdxnbtGljP//dldzvY/PmzbV3716tXr1aSUlJ+uabb7R48WK9/PLLWrdunaKjo+1jjhw5Uvfdd5/L8XLnIFwu9ze9cuXKBVg6zyD/FA755+rIP66Rf8g/uUp6/il0IZP7Y/rzzz8XqH/uj2BycrLTD3Fu5eau3IlkP/74o9Nzhw8fVnp6eoEmm0mX9mIkJycrJiamwKctXE1aWpq6dOmi06dP65tvvnF5lZ2oqCitWLFC1apVc7l3paBy17OrdZGZman9+/c7nf4QGhqq+Ph4xcfHS5Jmzpyp4cOH61//+pf91Ii///3vToejr6Qof+DKly8vSUpNTXV6LncPYK66devKx8dHmZmZ9r1a7mrfvr0WL16sxMREZWdn2w/fd+jQQXPnztUXX3yhM2fOFOp96tSpo+TkZP32229Ok/J++OEHex93REZGat++fcrOzna6ZGhycnKBxxkwYICee+45zZo1S+XLl9eWLVv03HPPFWqSZUhIiJYtW6auXbuqb9++yszM1IABA+zP5+4tDAgIuOr6c/cz3bVrl1Py27Vrl33My0VHRys6OlpPPfWUMjMzFRcXpzfffFOjR49WREREvu9RVEctKlWqpNDQUKWlpRV4GYOCgnTffffZk8SKFSvUpUsXTZkyRe+//77DHtnCrLfc33RXe9VLCvJPwZF/rg35p2DIP47IP8Wffwo9R6ZSpUq65ZZbtHHjxgL17969u2w2m15//XWHy+elp6drxowZhX17BzExMYqIiNDcuXN18OBBh+cmTJggSbr//vsLNFbuxj5mzBiXP4aFPayflZWlHj16aM+ePVq0aFG+SeLhhx+WJD3//PMuLy+Ynp5uv7zilVSqVEmtW7fWypUrtXnzZofnpk6dqjNnztjXxcWLF5WWluY0RpMmTSQ57u0srnOUXaldu7Z8fX2dztH++eefna44VKFCBcXFxenLL79UUlKSy/EK+hl27NhR58+f14QJE3TTTTepXr169nZjjH3Phavzk/PTq1cvSXK6hObevXs1f/581atXz+0rRfXo0UNpaWl65513HNqXLFlSoMP6ucqVK6f4+HgtWbJEU6ZMkc1mc2tPVJkyZbR8+XJ16tRJgwYNcvied+7cWVWqVNFrr71mv9rR5bKzs+3/cHD3M50+fbrDecdZWVmaOnWqfHx87AkmNTXVvucoV2BgoP0UgKvt8c+9qpGrf+QUho+Pjx566CHt3LlTH3zwgcs+ly9j7hyRy+X93jZu3FgNGzbU7NmzXf5j3RjjcpzvvvtOFStWLNE3xCT/FAz559qRfwqG/OOI/FP8+cetOTLx8fF6+eWXtXfvXqcKM6/69evrySef1Ouvv65WrVopPj5e58+f15w5c1StWjUdPnzY7eqyVKlSmjFjhu677z41bdpUw4YNU+XKlbV8+XIlJiaqc+fO6tevX4HGuv/++5WQkKBZs2Zpx44d6tGjh6pWrapffvlFW7duVWJiYqGuYz527FitW7dOcXFxOnHihObNm+fw/G233abbbrtNd9xxh1599VW9+OKLuvXWW9W3b1+Fh4fr999/186dO/X5559r165dV6zOc/3zn/9UmzZt1L59ew0fPtx++cv58+erUaNGGj16tKRLk+iqVaumbt26qXHjxqpWrZp++eUXzZo1S6VLl7Zf+lMqnnOU81OmTBkNGTJEb7/9tuLj49W+fXsdOnRIM2fO1G233eaUMGfOnKlWrVqpU6dO6tevn5o2bSofHx8dPHhQiYmJuuOOO1zeEyCv3ASxa9cuDRkyxN5evXp1NWjQQLt27VKNGjUKPJFRupSQ582bp3/96186dOiQOnfubL/8pTFGb7/9ttvfgzFjxmjBggUaOXKktm3bpjvuuEO7d+/We++9p0aNGl11Qu3lhg0bpjlz5mjhwoXq2LGj2599YGCg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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Highlight exactly which pixels are \"leaked\": nonzero, but nearest-neighbor\n", + "# source pixel in the ORIGINAL image was background (0).\n", + "src_y = np.clip(\n", + " np.round(np.linspace(0, size - 1, img_order1.shape[0])).astype(int), 0, size - 1\n", + ")\n", + "src_x = np.clip(\n", + " np.round(np.linspace(0, size - 1, img_order1.shape[1])).astype(int), 0, size - 1\n", + ")\n", + "src_was_bg = ~mask2d[np.ix_(src_y, src_x)]\n", + "\n", + "fig, axes = plt.subplots(1, 2, figsize=(10, 5))\n", + "for ax, img, name in zip(axes, [img_order1, img_order3], [\"order=1\", \"order=3\"]):\n", + " leaked = src_was_bg & (img != 0)\n", + " rgb = plt.cm.viridis((img - img.min()) / (img.max() - img.min() + 1e-9))[..., :3]\n", + " rgb[leaked] = [1, 0, 0] # paint leaked voxels red\n", + " ax.imshow(rgb)\n", + " ax.set_title(\n", + " f\"{name}: red = leaked nonzero pixels\\n(ignore_zeros=True wrongly keeps these)\"\n", + " )\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "50f735ea", + "metadata": {}, + "source": [ + "## 5. The bug: masking *before* resampling still leaks\n", + "\n", + "This is the case from the conversation:\n", + "\n", + "```python\n", + "image_object[~object_mask] = 0\n", + "image_object = resample_to_isotropic(image_object, anisotropy_factor=...)\n", + "```\n", + "\n", + "Zeroing first doesn't avoid the leakage — it just means the *image itself*\n", + "now has the hard edge that gets interpolated across, same as before.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "87641b5a", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-26T19:55:01.525592Z", + "iopub.status.busy": "2026-08-26T19:55:01.524818Z", + "iopub.status.idle": "2026-08-26T19:55:01.530359Z", + "shell.execute_reply": "2026-08-26T19:55:01.529536Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'mask-before-resample' leaked pixel count (order=1): 52\n", + "-> identical bug: zeroing before resampling does NOT prevent leakage,\n", + " because zoom still interpolates across the 0 / nonzero edge.\n" + ] + } + ], + "source": [ + "# Simulate: zero the raw image first (this is already what image2d is:\n", + "# object intensity surrounded by exact zeros), THEN resample -> same leakage.\n", + "masked_then_resampled = scipy.ndimage.zoom(image2d, zoom_factor_2d, order=1)\n", + "\n", + "leaked_mask_before = src_was_bg & (masked_then_resampled != 0)\n", + "print(\n", + " f\"'mask-before-resample' leaked pixel count (order=1): {leaked_mask_before.sum()}\"\n", + ")\n", + "print(\"-> identical bug: zeroing before resampling does NOT prevent leakage,\")\n", + "print(\" because zoom still interpolates across the 0 / nonzero edge.\")" + ] + }, + { + "cell_type": "markdown", + "id": "7b3e9f06", + "metadata": {}, + "source": [ + "## 6. The fix: resample mask (`order=0`) and image separately, mask *after*\n", + "\n", + "Resample the **binary mask** with `order=0` (stays exactly `{0, 1}`, no\n", + "blending), resample the **raw image** with whatever order you want for\n", + "intensity smoothness, then zero the image using the *resampled* mask —\n", + "after both resamples are done.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "ef1fa3af", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-26T19:55:01.532379Z", + "iopub.status.busy": "2026-08-26T19:55:01.531792Z", + "iopub.status.idle": "2026-08-26T19:55:01.780776Z", + "shell.execute_reply": "2026-08-26T19:55:01.779557Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'resample-then-mask' leaked pixel count (order=1): 0\n", + "-> zero leakage: every background pixel is exactly 0 again.\n" + ] + }, + { + "data": { + "image/png": "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5S2pdtk5t61du1axsbEKDg6Wr6+v6tSpo1deeUUXL150WtfOnTvVo0cPhYeHy9fXVxUrVlSzZs2ccl1GRobGjx+vVq1aKTQ0VD4+Pqpatap69+6t/fv3u8Rns9nUp08fbdiwQdHR0QoICFClSpX09NNP6+LFizp37pyeeeYZhYeHy8/PT40bN9bmzZud1pH5PLpw4UJHHgwNDdWjjz7q8jllJbvnbenSbQyjR49WRESE/Pz8VKdOHU2bNi1b27E7evSovv76a7Vv3142m83l9RMnTmjEiBGqXr26fH19ValSJfXo0UN//vlnlvufVR755JNPVK9ePfn5+alq1aoaMWKE0tLS3MZljNH06dPVpEkTBQQEKCAgQM2aNXO6TrGzf37r1q1Tq1atFBgY6PYb8Nz46KOPVKpUKT388MNO7Y8//rjj9cvdfffdSkpK0ldffZUnMQC4pCj3A+3++usvffXVV+rTp49iY2MVGhrqtq93ratfv77KlSvnkkuykld9zZxeH6xYsUKtW7dWxYoV5efnp7CwMMXGxuqbb76xjNcYo1GjRslms2no0KHKyMiQ5H4OJHvbP//8o169eqlcuXLy9/dXixYt9P3337usO6e/e94mxyOQrLzzzjs6evSoBgwYoMDAQE2fPl29e/dWyZIlNXLkSDVv3lwvvfSSEhIS9Pbbb6t3795auXKl4/1///233n//fd17773q1q2b/Pz8tHXrVr333nvauHGj/ve//zkNmezZs6cWLlyoO++8U0888YSSk5M1evRohYeHu8SWmpqq6Oho7dq1S71791a9evWUnJys6dOnKyoqSt98840aNmyYrf188sknlZaWpt69e6tChQqO7Y0ePVrjxo1TTEyMRo8eLX9/f61cuVIDBw7Url27NHHiREnSH3/8oTZt2qhixYoaPHiwqlSpomPHjmnbtm367rvvFBcXl6vjIUlffvml3n77bT388MMaMGCA5s2bpyeffFJ+fn6aOXOmqlatqueff16HDh3SpEmTFBcXp19//VXFijnXEt966y0dOHBAgwYNUkhIiD7//HONHTtWu3fvdhlqeTXHOj09XbGxsfr222/VuXNntWnTRvv371e/fv1Uq1atbH0e0qWOjyTddtttLq/9/fffaty4sY4cOaIBAwaoXr16+vnnnzV9+nStWLFC//vf/1SpUiWn97zxxhs6fPiwBg4cqLCwMMc39M8884xeeeUVNWrUSOPHj9e5c+cUHx+vzz//3GW76enpat++vdavX68ePXpo0KBBSktL08cff6zWrVtryZIl6tChg9N7Pv/8c02dOlWDBg3SwIEDHUMsMzIy3CbPrJQpU0a+vr7ZXt6dZs2aSbp0bOvWrXtV6wIKk5EjR+rcuXN6+OGHVbx4cb3xxhu65557tHDhQvXv319du3ZVx44d9d133+nDDz+Ur6+v3nvvPcf7f/nlFy1cuFBxcXHq16+fjDFat26dJkyYoB9//FHLli1zLDt+/Hg999xzat++vQYMGCAfHx/t379fK1as0MGDBxUaGuo2xoMHD6p9+/bat2+fVqxYoZiYmGztW1bntg8++EADBgxQgwYN9MwzzygoKEjffvutRo4cqR9//FHz5s2TdGkumpiYGGVkZOjf//63qlevruTkZG3fvl3r16/XgAEDJF26uHrllVd077336u6771bZsmX1yy+/6IMPPtCaNWv0yy+/KCQkxCm2H3/8UXFxcerfv78eeOABLVu2TK+++qqKFy+u7du3KzU1VU888YROnz6tSZMmqUOHDtq7d6/LCKqlS5dq8uTJGjx4sPr37681a9bojTfe0E8//aQ1a9ZY3maQ0/N2r169NH/+fLVu3VojRozQ8ePHNXr0aF133XXZ+jwkOS403eWvkydP6vbbb9eOHTvUo0cPRUdHa/fu3XrnnXe0YsUKffvtt7rxxhud3pNVHnn33Xf18MMP64YbbtALL7wgHx8fzZkzx21hTJL69u2rjz76SPfcc4969uwp6dKtFZ07d9a0adM0aNAgp+W///57LVy4UP369dP999+vkydPOl47duxYto9HqVKlVKpUKUnS4cOH9ddff6lZs2by9/d3Wi4iIkKhoaFuR9Rmzl8dO3bM9rYB5F5R6QfGx8dLkh588EEVL15cvXr10uTJk/XPP/+ocuXKbt+TnJzs8kVu6dKlr2o017lz57I8t5YvX/6K709KSlJycnKWMWflavuaObk+2LBhgzp06KAbb7xRTz75pMqVK6d//vlHmzZt0o8//pjlqN3z58+rX79+mjt3rl577TU98cQTV9yv06dPq3nz5mrUqJFefPFFHT58WFOmTFFsbKz27NnjdK2Rk989r2RyaO3atUaSmTlzpktb5cqVTVJSkqP9n3/+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lvnuu++0Zs2abMfbqlUrSdKmTZtc4omLi1NCQoLLN6lz5szR7t27de+992ZrmHtcXJxsNptef/11p+H0SUlJevvtt12Wf/DBB5WcnKyXX37Z7fpy8jvniTmQ7PNbZPfpTgAuKV68uMu3VRcuXHCcQzNzN7LQfkHi7vasEiVKaM6cOerbt6+ee+45l/njcqNr167y8/PTmDFj3D7q/syZM468lJSU5PItsL+/v+PWKHvMxYsXl81mc1n2xRdfzPW3yNn11VdfuTyZy34etspfUs7O2/Z1TZgwwenz3rt3r8t1iBX7HBGX5y/7NlJSUvSf//zHqf2bb77R119/rdatW2frC5C2bdsqICBAb731llJSUhztZ8+edTx+OTP7PERPPfWU229ec3rNlNs5kKRL11dpaWmaNm2aU/ukSZMcr1+O/AUUPtdyP9AYo/j4eIWHh2v48OHq0qWLy79HHnlE586du+LTqq8Vfn5+evbZZ3Xs2DFNmTKlwLabk+sDd9dI4eHhqlSpkttrJEkaNmyYpk+frmXLlqlDhw5ZzpOXWzn53fNW19QIpPvuu09PP/202rVrpy5duigtLU2LFy92uTdSunQx1LlzZ3366adKTk5Wx44dlZSUpHfffVc33XSTtm7d6lQUePnll7Vp0yb16dNHS5YsUfPmzRUQEKD9+/drzZo18vf3dzwKPjduvfVWvfTSS3ruued08803q0ePHgoLC9ORI0e0fft2ff7559qxY4ciIiL00ksvacWKFerQoYOqV6+uEiVKaP369Y5fdHvVOifHI6/VqVNHTZs21cMPP6yQkBAtWbJEX3/9tbp3737FC7KcHOvevXsrPj5eb7zxhhITE9WmTRvt379fb7/9tho0aKAffvghW/E2atRI119/vZYuXaqnn37a6bXx48dr9erV6tGjh+OR9D///LOmT5+u8PDwLDsKl7vhhhv0+OOP6/XXX9ftt9+uHj166Pz585oxY4aqVKmiQ4cOOS0/fPhwrVmzRmPGjNGGDRvUtm1bhYSEKDExUZs2bdKePXsc99FeydXOgfTLL7/oiy++kHTpUdnSpSGk9ol/O3XqpFtuucXpPUuXLtWNN96Y57drAN7uvvvu07Rp09SlSxe1bdtWSUlJmjNnjtvbSu3n2iZNmigsLExJSUmOC9zevXu7XX+xYsUUHx+vUqVKacKECTp9+rSmTp2a6/leqlatqvfee0/9+vVTZGSkevfurRo1aigpKUkJCQlatGiRlixZolatWumjjz7S5MmTFRcXp5o1a6pUqVLatm2bZsyYoXr16jluGbrvvvu0cOFCtWzZUn369JExRitXrtSOHTuy9Xjhq9GgQQPdcccdGjx4sK677jqtXr1aixcvVnR0tEtx4nI5OW+3adNGXbp00cKFC3XHHXfonnvuUVJSkqZNm6Ybb7xR27Zty1a8FSpUUOvWrbVs2TKXeXuefPJJffbZZ3ryySf1888/q1mzZtq9e7feeecdlS1b1nHL4JWULVtWr7zyioYMGaLGjRurb9++8vHx0ccff+x22P6//vUvDRw4UNOnT9fPP/+suLg4Va5cWQcPHtS2bdu0bNmybE1oanc1+eupp57SwoUL9dRTT2nfvn2qV6+e1q9fr9mzZ6tXr16OAlxmS5cuVUhISIHPHQgg967lfuDq1au1d+9ePfbYY1nm2rZt26ps2bKaMWNGrm4xz6ndu3fr448/dvvarbfe6naOnsv17dtX48eP15QpUzRs2LBsfSFxtXJyffDQQw9p//79atu2rSIiIpSenq6lS5fqt99+05AhQ7LcRv/+/VWqVCk9+OCDateunb788ss8G2GV0989r5TTx7ZZPb7R3eMG3T0qL6v3XLx40bzyyivmhhtuML6+vqZKlSrm4YcfNklJSUaS6d27t9M6zp49a0aOHGnCwsKMj4+PqVOnjnn//ffNm2++aSS5PMY3LS3NjB8/3tSrV8/4+/ubgIAAc/3115uePXs6PV4wK+4e+Xu5FStWmPbt25ty5cqZkiVLmipVqpiYmBgzadIkc+bMGce+d+vWzURERBh/f38TGBhobrnlFvPKK6+YtLS0XB0P+6MVMz/+1s7++MbLuXtP5s/l7bffNpGRkcbHx8eEh4eb559/3uXxmpkfm5hZTo51SkqKGTJkiKlUqZLx9fU19evXN59++mmW687KpEmTjCSza9cul9cSExNN//79TWhoqClRooSpUqWKGThwoDl48KDTcla/y8ZcevTklClTzPXXX29KlixpIiIizLhx4xyPnrz8fenp6eadd94xTZs2NaVLlzZ+fn4mIiLC3HvvvU6PlrT6/PKC/Xc3q3+Xx/37779bPmIU8EZW5/hq1aqZli1bZus9aWlp5umnnzbVqlUzPj4+JiIiwowcOdLs3LnT5e98woQJpmXLlqZixYqmZMmSpnLlyuauu+4yq1atctpOVrn0qaeeMpLMgAEDzMWLF7Pctyud24wxZvPmzaZLly6mUqVKpmTJkqZSpUomKirKvPjii+b48ePGGGN+/PFH06dPH3PDDTeY0qVLm4CAAFO7dm0zatQop8c3G2NMfHy8ufnmm42fn5+pUKGCuf/++01iYqLbY+kuxxuTdY5x957M59FPP/3U1K9f3/j6+ppKlSqZoUOHOj123pisP+/snreNufTY6eeee86Eh4cbHx8fExkZad5+++1sXS9k9tlnnxlJZs2aNS6vJSUlmUcffdRUq1bNlCxZ0pQvX950797d6fHXl+9/Vj7++GNTt25d4+PjY0JDQ81jjz1mfvvttyzfN3fuXNOqVStTtmxZx7VAbGysmTZtmtNyWX1+eeXIkSPmoYceMpUrVzY+Pj7mhhtuMBMmTDAXLlxwWTYlJcX4+fmZxx9/PN/iAYqqotoPvO+++4wk8+2331ou16tXLyPJbNq0yRjzf32wxMREy/dlZs97WeVr+7ne6t+UKVMcy18phmnTphlJZuTIkZZx5VVf05jsXx989tln5p577jHh4eHG19fXBAcHmyZNmph3333X6Zonq2uFxYsXGx8fH3Prrbc6rmPc/U5m9XtqjPv8ltPfPW9jM8b7ZoV65JFH9M477+iff/5RpUqVPB1OobJu3TrFxMTkyRw6Be306dOqVauW4uLi3N5ShuwbNGiQli1bpt9///2qJ+MGgIKwb98+Va9e3WkOncIiIyNDjRo1UpUqVfTll196OpxCbeLEiXr55Zdd5kQEUDTQD4SnFJXfvWtqDqSccndP4/79+/XRRx+pXr16Xv3BwVVAQIAmTJigGTNmOM3fhJzZs2ePPvjgA73yyisUjwCgABQrVkxvvPGGli1b5pi/BzmXkpKiV199Vc8++yzFI8DL0Q+EpxT1371rag6knJowYYK+/fZbtWnTRhUrVtSff/6p6dOn6+zZs3rttdc8HR484MEHH7ziHBewZp/MHQBQcFq0aMGjgq9S2bJllZSU5OkwABQA+oHwlKL+u1eoC0jR0dH69ttv9cYbbyg5OVllypRRVFSUnn32Wcej/gAAAAAA3oN+IDylqP/ueeUcSAAAAAAAAMg7hXoOJAAAAAAAAOQ/CkgAAAAAAACwRAHp/xszZoxsNpv27dvnaJs1a5ZsNpvWrVvnaFu3bp1sNptmzZp1xXW6e/+1wmazqU+fPgWyLXfH9lrZXqtWrRQREZEvceTnugEAl0RERKhVq1Z5us59+/bJZrNpzJgx2Vr+Ws73AK5dOelX5AWuTYuuguz7WSnofmFWPPW3kNPri2tRkSogzZo1S1OnTvV0GAAAIJtOnDihMWPGUJwBAADwMApI/99zzz2nM2fOqFq1agUbFAAAyNKJEyc0duzYa7qA1KtXL505c0YtWrTwdCgAAOAKVq1apd9//93TYRRKJTwdwLWiRIkSKlGCwwEAAHKmePHiKl68uEdjuHjxos6dO6dSpUp5NA4A8ATOgcgJHx8fT4dQaHnFCKRz587pxRdf1I033qiAgAAFBgYqMjJS/fr105kzZyRduu9z/fr1+uuvv2Sz2Rz/7N9o5uf9mMYYTZ06VbVq1ZKvr6+qV6+uyZMnuyy3detW9evXT5GRkQoICFBAQIAaN26smTNnuiybnJysJ598UjfccIP8/f0VHBysunXr6tFHH72qWNeuXavY2FgFBwfL19dXderU0SuvvKKLFy/mOlZ3jDEaNWqUbDabhg4dqoyMDEnSyZMnNWrUKEVGRsrX11chISGKi4vTL7/84rKOkydPavjw4QoNDZW/v78aNmyoBQsW5Gq///nnH/Xq1UvlypWTv7+/WrRooe+//95luWnTpqldu3YKCwuTj4+PKlasqH/961/69ddfs72tLVu2qEOHDgoJCZGfn59q166tF198UefPn89V7ACQG+fPn9err76qW265Rf7+/goMDNQdd9yhDRs2OJY5deqUateureDgYP31119O758zZ45sNpuGDBniaEtISNAjjzyim2++WWXLlpW/v7/q1q2r119/3SWPSNKFCxc0ZcoUNWrUSAEBASpTpoxuueUWjR49WtKlkcPVq1eXJI0dO9aRu63mLejQoYP8/f2VnJzs8trhw4fl4+OjLl26ZPs4LVy4UA0bNpS/v79CQ0P16KOP6tSpU07LuJsDyd62du3aPL8GsF+z7NixQ0899ZSqVasmX19fffrpp3m+/wAKnjFG06dPV5MmTRzng2bNmmnJkiUuy86fP19xcXGqVq2a/Pz8FBISorvuuksbN27M1rZOnjypu+66S76+vvr4448lSQcPHtQTTzyhhg0bKiQkRL6+vqpVq5ZGjRrl6FtllpqaqiFDhqhy5cry9/dXo0aNtHjx4iz7V4cPH9bQoUMVEREhHx8fVapUSQ888EC2+2FW58CcHj/73EAbNmxQdHS0AgICVKlSJT399NOOotQzzzyj8PBw+fn5qXHjxtq8ebPLejIyMvTmm2+qXr16jpzaunVrffXVV07LRUdHq2zZsm6PY2JioooXL65evXo5tWe3fyZJX331lW677Tb5+/urQoUK6tevn44dO5at43ol+dlP27p1q1q3bq2AgAAFBwera9eu2r9/f5bzHObkmLjjbg6knTt3qkePHgoPD5evr68qVqyoZs2aacaMGdla55Wuaa7ks88+U8uWLRUYGCh/f381aNDA7bZXrVqlHj16qGbNmo7ftRYtWui///2vy7J9+vSRzWZTamqqhg4dqtDQUPn6+qphw4ZauXJltuK6nFcMuRkyZIhmzJihnj17atiwYZKkvXv3aunSpTp9+rT8/f01e/Zsvfzyyzp27JimTJnieG+dOnXyPb5nn31Wqamp6tu3r0qXLq2PPvpIjz/+uKpUqaLu3bs7llu8eLF+/fVXdenSRdWqVVNKSoo+/fRT9evXT0ePHtVTTz3lWLZr165au3atHnroIdWvX1/nz5/X7t27tXr16lzH+cEHH2jAgAFq0KCBnnnmGQUFBenbb7/VyJEj9eOPP2revHm5ivVy58+fV79+/TR37ly99tpreuKJJyRdSj7R0dHatWuXevfurXr16ik5OVnTp09XVFSUvvnmGzVs2FCSlJ6ertjYWH377bfq3Lmz2rRpo/3796tfv36qVatWjvb79OnTat68uRo1aqQXX3xRhw8f1pQpUxQbG6s9e/aoTJkyjmVfffVVNW3aVI888ojKly+vP//8UzNmzNBXX32lH3/8UTVr1rTc1ooVK9SpUycFBgZq8ODBqly5spYtW6YXXnhBmzZt0pdffqlixbyirgvgGpaenq727dtr/fr16tGjhwYNGqS0tDR9/PHHat26tZYsWaIOHTqodOnSWrBggZo2bapu3brpm2++UcmSJfX7779r0KBBatCggSZNmuRY77p167R27Vp16NBB1atX19mzZ7Vs2TI9+eST2rNnj9555x3HshcuXFBsbKzWrFmjli1b6oUXXlBgYKB27typBQsWaOzYsWrRooWmTJmixx57TJ07d9a9994rSSpdunSW+/bvf/9bX375pWbPnu24JrCbNWuWLly4oIceeihbx2np0qWaPHmyBg8erP79+2vNmjV644039NNPP2nNmjXZGnWUH9cAdj179lSJEiX0yCOPqHTp0oqMjMzT/QfgGX379tVHH32ke+65Rz179pQkLVq0SJ07d9a0adM0aNAgx7JvvfWWgoODNWDAAIWGhioxMVHx8fGKiYnR+vXr1axZsyy3c/DgQbVv31779u3TihUrFBMTI0n65ZdftHDhQsXFxalfv34yxmjdunWaMGGCfvzxRy1btsyxjvT0dLVr106bN29Wly5d1KpVKx04cEB9+vRxe02emJioZs2a6dSpU+rfv79q1aqlv//+W9OmTdOqVav0/fff67rrrsvWcXJ3Dszp8ZOkH3/8UXFxcerfv78eeOABLVu2TK+++qqKFy+u7du3KzU1VU888YROnz6tSZMmqUOHDtq7d69TH6FPnz6aPXu2br/9do0fP16nTp3SjBkz1K5dO3300Ud64IEHHMsNHDhQixYtcsRm9+GHHyojI8Npsuuc9M++/PJL3XPPPapQoYKefvpphYSEaNGiRbrrrruydTyt5Gc/7X//+59atWolHx8fDR8+XGFhYY5rg9OnT7ssn5Njkl3Hjx9XTEyMMjIy9O9//1vVq1dXcnKytm/frvXr12vAgAGW78/ONY2V0aNHa9y4cYqJidHo0aPl7++vlStXauDAgdq1a5cmTpzoWHbWrFk6fPiwHnjgAYWFheno0aP68MMP1alTJ82bN0/dunVzWX+7du0UFBSkkSNHKi0tTVOnTlWnTp30559/ZvvvzcF4geDgYHPXXXddcbmWLVuaatWquX1t9OjRRpLZu3evo23mzJlGklm7dq2jbe3atUaSmTlz5hW3Z3//LbfcYs6ePetoP3XqlClXrpyJiopyWv7UqVMu67h48aJp3ry5KVu2rDl//rwxxpgTJ04YSWbQoEFXjCErkkzv3r0dPx86dMj4+fmZuLg4k5GR4bTs66+/biSZdevW5ThWY5yPbXJysomJiTG+vr5m/vz5Tu9/9NFHTcmSJc3mzZud2pOTk01YWJhp1aqVoy0+Pt5IMsOHD3dadtOmTcZms7l8lllp2bKlkWTGjx/v1P7JJ58YSea9995zane337/++qspWbKkGTx4sMu6M/++paenm4iICOPv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p45WrVrl+Nm+rjlz5mjOnDlu9y0nXyC4Owfm9PhJ7s/TwcHBbl+zt2c+h1td49vbMl/j9+3bVx9//LE++ugjx5cS9nnzevfu7bQvUvb6Z/b1u8tbl/e7cio/+2n2Y1e7dm2XZUNDQ1W2bFmntpz2WbOrRYsW6tevnz744APNnTtXDRs2VHR0tLp06eJSXHTnaq5p7PtUr169LJfJvE/79u3T888/r2XLlrm9NkhOTnb5u87utUh2eEUBqWPHjtq3b59WrlypdevWad26dZozZ47Gjh2r7777zvIXvSBkp6BjjFG7du20fft2DR06VI0bN1ZwcLCKFy+uZcuWacqUKU4n74EDB6pTp05avny5NmzYoNWrVys+Pl5NmjTR+vXrc1w4s697xowZqlatmttlqlSpkqtY7Xr27Klp06Zp7NixmjNnjtM3BvblW7Rooeeffz7LOPPjs7T6fIwxjv9v27ZNbdq0UY0aNfTyyy+rRo0aKlWqlGw2m4YPH+72Ht2c4BthAAUlIyNDkZGReuutt7Jc5vJvpLdt26aDBw9Kkn799VdduHDB5Zvfnj176vPPP9eAAQPUokULlS9fXiVKlNC2bdv0zDPPuM0N+SE0NFSdOnXS/PnzNXXqVJ0/f16LFi1Sp06dVLly5QKJwS4/rgHssnra0LW0/wByJiMjQ2XLltXChQuzXMZeEDhw4ICio6NVunRpjRw50tGBLVasmCZMmKCvv/7a5b0hISFq3LixPv/8c8XHx7t9AM8TTzyhqVOnqkuXLnr66adVsWJF+fj46O+//1afPn1yfS63v69r164aOHBgrtaRmbtzYE6On53VeTqr1zL3EXIqJiZG1apVcxSQzpw5owULFqh58+ZO86nmpH+WnzzZT8sqlvw4JvHx8XryySe1fPlybdy4UR988IEmT56soUOH6s0338x1zFdi36elS5c6jVjOzF4AOnXqlFq0aKGUlBQNHz5ct9xyiwIDA1WsWDF98MEH+uSTT9z+febl77FXFJCkS8POunXr5vhG9N1339XDDz+st99+23F70LXcQd++fbt++OEHPf/88xo3bpzTa5fP3m9XqVIl9enTR3369JExRs8++6wmTpyoefPmOU2+lh32Cn5wcLDuuOOOPI9Vkp566inVrl1bjz76qONEaS90VahQQUFBQUpOTr7i9iWpZs2a+v3333XkyBGX6vZvv/12xffnxpw5c5Senq7ly5e7VHGPHz9+xaKdPSG4iy8xMVEpKSlXnIQbAPJCrVq1lJiYqFatWqlEiStfChw9elT333+/QkND9fDDD2vUqFEaOXKkXn/9dccyKSkp+vzzz/XAAw/o/fffd3r/n3/+6TaGP/74Q6dPn7b8xi63uXvQoEFatGiR5s6dqzNnzujcuXM5njx6x44dLm1HjhzR8ePHs/WNZHblNq9ayYv9B1DwatWqpYSEBDVo0MDtqJ7MFi1apJMnT2rJkiVq3bq102v2kS2XK1mypBYuXKhevXrpscce0+nTp12W/fDDD9W8eXOXp2YtX77cZX01atTQ77//ruPHj7vEax9ZYXf99derWLFiOnPmTLau93MjJ8cvr2S+xm/atKnTa/YnNWe+xrfZbHrwwQf14osvatOmTdq7d69SU1Nd+m856Z/Z1+8ub11t3yg/+2n2PlVCQoLLeg4dOqSUlBSntpwck9yoXbu2ateurccee0xnzpxR+/bt9Z///EcjRoywfAJsdq9psnrvihUrFBoa6piIPCv2Wx/j4+NdRhRPnz49R9vNrUI/B9LFixfdPqq2UaNGkpyHF5YuXVrJyclXVTHOL/aq4OWxHTx40OXxfWlpaUpLS3Nqs9lsjl+43AxF69q1q/z8/DRmzBiXxxNLl+ZjsA+LzUmslxs2bJimT5+uZcuWqUOHDo79KFasmB544AFt375dH374odv3Zh66Z38Sz/jx452W+e677xz3GOe1rPb73XffzdZQyQYNGigiIkKzZ892eRy2vcPwr3/9K4+iBYCsPfjgg0pOTtbLL7/s9vXM5zRjjHr16qXDhw/rk08+0bPPPquuXbtq8uTJWrp0qWM5+20Hl58jT5486fax9Q888IBOnz7t9tvMzN+e2Z+45m6YtpU77rhDNWvW1PTp0zVjxgxFRESobdu2OVrHV199pa1btzq12Y+ZPQ/lhavJq1nJi/0HUPAefPBBSZe+eHXXZ8l8fs7q3LF8+XKXc1dmJUqU0Jw5c9S3b18999xzLnPVFC9e3GWdFy5c0IQJE1zWFRcXJ0l65ZVXnNq3bdvmUgAvV66c2rdvry+//FJr1651G1tubj/KLCfHL69k7pdkzl/Hjh3T22+/raCgIJe5f+yPV581a5ZmzZqlgIAA3XfffU7L5KR/1rBhQ8eopsxzK2VkZLj0l3IqP/tpFStWVFRUlJYvX67t27c7vZb5yWN2OTkmOZGUlOQycsff399xS+CV+tfZvaZxp1evXpIuzfl04cIFl9dTUlJ07tw5SVn/zf/yyy9asmSJ5XbySqEfgXTy5EmFhoaqY8eOql+/vkJDQ3Xw4EHHvf6ZH4942223aenSpRoyZIiaNWum4sWLq3Xr1m7vzyxotWvX1s0336xXX31Vp06d0k033aS9e/fqvffeU82aNV3mjWjRooXi4uJ00003qUKFCtqzZ4/effddlSlTJlcXtVWrVtV7772nfv36KTIyUr1791aNGjWUlJSkhIQELVq0SEuWLFGrVq1yFKs7/fv3V6lSpfTggw+qXbt2+vLLLxUYGKiXX35ZmzZtUp8+fbRkyRI1b95cAQEB2r9/v9asWSN/f39Hsundu7fi4+P1xhtvKDEx0fF4yLffflsNGjTQDz/8kONjcCX33nuvJk+erNjYWD300EMqVaqUNm7cqJUrV6pmzZpKT0+3fH/x4sU1bdo0derUSY0bN9agQYNUsWJFLV++XMuWLVO7du10//3353ncAHC54cOHa82aNRozZow2bNigtm3bKiQkRImJidq0aZP27NnjmJdg4sSJWrlypcaPH6/o6GhJl77l2rZtm/r06aOffvpJYWFhKlOmjO666y7NmTNHvr6+atq0qQ4dOqT4+HhVqlTJbQxffvmlpkyZoh9//FGxsbEKDAzUH3/8oVWrVjm+tS1Xrpyuv/56zZs3TzVr1lSlSpUUEBCgjh07Wu6jzWbTQw895JjY9aWXXsrxaKYGDRrojjvu0ODBg3Xddddp9erVWrx4saKjox2dlLxwtXnVnbzYfwAF71//+pcGDhyo6dOn6+eff1ZcXJwqV66sgwcPatu2bVq2bJmjkxkbG6uAgAD16tVLjzzyiMqXL68ffvhBc+bMUd26dV065JkVK1ZM8fHxKlWqlCZMmKDTp09r6tSpstlsuu+++zRt2jR16dJFbdu2VVJSkubMmSN/f3+X9fTt21fx8fF67bXXtG/fPrVq1UqJiYl65513dOutt+p///uf07nn3XffVXR0tO68807df//9aty4sYoVK6a//vpLy5Yt06233qpZs2YVyPHLK61bt1avXr00e/ZsxcTEqHPnzjp16pRmzJihI0eO6KOPPnJ8GWJXo0YNNW/eXJ988onS0tLUq1cvl2Vy0j8rXry43nzzTXXu3FlNmjTRoEGDFBwcrEWLFrkttEiXilgffvih1q5dq1atWlnuY37206ZMmaJWrVqpefPmGjx4sMLCwrRmzRr9+OOPKl++vNPvT06OSU589NFHmjx5suLi4lSzZk2VKlVK27Zt04wZM1SvXj3Vr1/f8v3ZvaZx59Zbb9VLL72k5557TjfffLN69OihsLAwHTlyRNu3b9fnn3+uHTt2KCIiQrfffrtCQ0P1+OOPa8+ePYqIiNDOnTs1ffp01a1bV9u2bcvRfudKjp/bdo05d+6cGTlypGnatKkpX7688fHxMWFhYaZLly4uj949ffq06devn6lYsaIpVqyY0yN3Mz9q3s7dY3ndPW4zK+7eb2d/pF5mf/31l+nevbupWLGi8fPzM/Xq1TPx8fEu6zl27Jh57LHHTIMGDUxwcLDx9fU11apVM3369DE7d+7MzmHL8lGOmzdvNl26dDGVKlUyJUuWNJUqVTJRUVHmxRdfNMePH89xrMa4P7bGXHoMpo+Pj7n11lsd605LSzPjx4839erVM/7+/iYgIMBcf/31pmfPnmblypVO709JSTFDhgwxlSpVMr6+vqZ+/frm008/zXJ77lz+CMcrHaMvvvjC3HrrraZUqVImODjYdOzY0fz2229u15PVur/77jvTvn17ExQUZHx8fEytWrXMuHHjzLlz564YLwDklfT0dPPOO++Ypk2bmtKlSxs/Pz8TERFh7r33XjN//nxjjDHffPONKVGihGnbtq3LY2m3bdtmfH19ze23324uXLhgjDHm+PHj5t///repWrWq8fX1NZGRkebVV181q1evdps7z507Z1555RVTt25d4+fnZ8qUKWNuueUWM2bMGKfltmzZYpo1a2ZKlSplJDmdW6tVq+b0iN/Mjhw5Ynx8fEyJEiXMwYMHs31sMj9m99NPPzX169c3vr6+plKlSmbo0KFOj4A2xn2+z69rAGOyzqt5tf8ACoZVv2Lu3LmmVatWpmzZssbHx8eEh4eb2NhYM23aNKflNm7caFq0aGECAwNNmTJlTOvWrc3GjRvdnmeyujZ96qmnjCQzYMAAc/HiRZOWlmaefvppU61aNePj42MiIiLMyJEjzc6dO10eQW7MpUe5P/zww6ZixYrG19fXNGzY0CxatMiMGDHCSDKHDx92Wj4pKck8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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "mask_resampled = scipy.ndimage.zoom(\n", + " mask2d.astype(np.uint8), zoom_factor_2d, order=0\n", + ").astype(bool)\n", + "image_resampled = scipy.ndimage.zoom(\n", + " image2d, zoom_factor_2d, order=1\n", + ") # raw, unmasked image\n", + "\n", + "fixed = image_resampled.copy()\n", + "fixed[~mask_resampled] = 0\n", + "\n", + "leaked_fixed = src_was_bg & (fixed != 0)\n", + "print(f\"'resample-then-mask' leaked pixel count (order=1): {leaked_fixed.sum()}\")\n", + "print(\"-> zero leakage: every background pixel is exactly 0 again.\")\n", + "\n", + "fig, axes = plt.subplots(1, 3, figsize=(14, 5))\n", + "axes[0].imshow(image_resampled, cmap=\"viridis\")\n", + "axes[0].set_title(\"image resampled (order=1)\\nstill has leaked halo\")\n", + "axes[1].imshow(mask_resampled, cmap=\"gray\")\n", + "axes[1].set_title(\"mask resampled (order=0)\\nexactly binary\")\n", + "axes[2].imshow(fixed, cmap=\"viridis\")\n", + "axes[2].set_title(\"image AFTER masking\\nleakage removed, edge is clean\")\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "cebce400", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "| step order | background stays exactly 0? | boundary shape |\n", + "|---|---|---|\n", + "| `order=0` on the raw image alone | Yes (no interpolation blending) | blocky / stair-stepped |\n", + "| mask-then-resample (`order>=1`) | **No** — leaks nonzero values into background | smooth but wrong for `ignore_zeros` |\n", + "| resample mask (`order=0`) + resample image (`order>=1`) + mask **after** | Yes | smooth intensities inside object, exact 0 outside |\n", + "\n", + "For `mahotas.features.haralick(..., ignore_zeros=True)`, only the last row\n", + "gives you both a smooth intensity resample *and* a background that's\n", + "guaranteed to still be recognized as background.\n" + ] + }, + { + "cell_type": "markdown", + "id": "589b6832", + "metadata": {}, + "source": [ + "## 7. Test: does the actual pipeline code leak?\n", + "\n", + "This replicates the exact snippet under discussion, using a stub\n", + "`resample_to_isotropic` (a thin wrapper around `scipy.ndimage.zoom`) so the\n", + "control flow matches line-for-line:\n", + "\n", + "```python\n", + "object_mask = selected_label_object == label\n", + "if not numpy.any(object_mask):\n", + " continue\n", + "image_object[~object_mask] = 0\n", + "# resample to isotropic after getting the object,\n", + "# this avoid the need to interpolate the mask\n", + "image_object = resample_to_isotropic(image_object, anisotropy_factor=anisotropy_factor)\n", + "label_object = resample_to_isotropic(object_mask, anisotropy_factor=anisotropy_factor, order=0)\n", + "```\n", + "\n", + "Note what this code does and doesn't do:\n", + "- It masks `image_object` **before** resampling it (`order=1` by default) — this is\n", + " the mask-before-resample bug from section 5.\n", + "- It **does** separately resample the mask with `order=0` into `label_object` —\n", + " but it never uses `label_object` to re-mask `image_object` afterward. So even\n", + " though a clean, exact binary mask is computed, it's discarded / unused for\n", + " cleaning up `image_object`, and the leaked halo in `image_object` survives\n", + " all the way to feature extraction.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "af096baf", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-26T19:55:01.782891Z", + "iopub.status.busy": "2026-08-26T19:55:01.782206Z", + "iopub.status.idle": "2026-08-26T19:55:01.787825Z", + "shell.execute_reply": "2026-08-26T19:55:01.786630Z" + } + }, + "outputs": [], + "source": [ + "def resample_to_isotropic(array, anisotropy_factor, order=1):\n", + " \"\"\"Stub matching the pipeline's helper: wraps scipy.ndimage.zoom.\"\"\"\n", + " zoom = (anisotropy_factor,) + (1.0,) * (array.ndim - 1)\n", + " return scipy.ndimage.zoom(array, zoom=zoom, order=order)\n", + "\n", + "\n", + "def pipeline_as_written(image, selected_label_object, label, anisotropy_factor):\n", + " \"\"\"Exact control flow from the snippet under review.\"\"\"\n", + " image_object = image.copy()\n", + " object_mask = selected_label_object == label\n", + " assert np.any(object_mask)\n", + "\n", + " image_object[~object_mask] = 0\n", + " # resample to isotropic after getting the object,\n", + " # this avoid the need to interpolate the mask\n", + " image_object = resample_to_isotropic(\n", + " image_object, anisotropy_factor=anisotropy_factor\n", + " )\n", + " label_object = resample_to_isotropic(\n", + " object_mask,\n", + " anisotropy_factor=anisotropy_factor,\n", + " order=0, # nearest neighbor for mask\n", + " )\n", + " return image_object, label_object" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7f3ecd74", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-26T19:55:01.789675Z", + "iopub.status.busy": "2026-08-26T19:55:01.789095Z", + "iopub.status.idle": "2026-08-26T19:55:01.796717Z", + "shell.execute_reply": "2026-08-26T19:55:01.795763Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "image_object shape: (96, 24), label_object shape: (96, 24)\n", + "Leaked voxels (nonzero image_object where resampled mask says background): 52\n", + "Example leaked values: [12.632 48.947 7.895 7.895 7.895 7.895 7.895 7.895]\n", + "\n", + "CONFIRMED: the as-written pipeline leaks nonzero values outside the resampled mask.\n", + "The comment's claim (\"this avoids the need to interpolate the mask\") is false —\n", + "label_object IS interpolated (correctly, at order=0), but that clean mask is\n", + "never applied back to image_object, so the leak from masking-before-resample survives.\n" + ] + } + ], + "source": [ + "# Build a 2D \"labeled image\" scenario matching the pipeline's inputs:\n", + "# selected_label_object holds integer labels, label picks out one object.\n", + "selected_label_object = np.where(mask2d, 1, 0).astype(np.int32)\n", + "raw_image = np.zeros_like(image2d)\n", + "raw_image[mask2d] = 150.0\n", + "anisotropy_factor_test = 4.0\n", + "\n", + "image_object_out, label_object_out = pipeline_as_written(\n", + " raw_image, selected_label_object, label=1, anisotropy_factor=anisotropy_factor_test\n", + ")\n", + "\n", + "label_object_bool = label_object_out.astype(bool)\n", + "\n", + "# The claim under test: image_object_out should be exactly 0 everywhere\n", + "# label_object_bool is False (background). Does the code as written guarantee that?\n", + "leaked_voxels = (~label_object_bool) & (image_object_out != 0)\n", + "\n", + "print(\n", + " f\"image_object shape: {image_object_out.shape}, label_object shape: {label_object_out.shape}\"\n", + ")\n", + "print(\n", + " f\"Leaked voxels (nonzero image_object where resampled mask says background): {leaked_voxels.sum()}\"\n", + ")\n", + "print(f\"Example leaked values: {np.round(image_object_out[leaked_voxels][:8], 3)}\")\n", + "\n", + "assert leaked_voxels.sum() > 0, (\n", + " \"expected the as-written pipeline to leak, but it did not\"\n", + ")\n", + "print(\n", + " \"\\nCONFIRMED: the as-written pipeline leaks nonzero values outside the resampled mask.\"\n", + ")\n", + "print(\n", + " 'The comment\\'s claim (\"this avoids the need to interpolate the mask\") is false —'\n", + ")\n", + "print(\"label_object IS interpolated (correctly, at order=0), but that clean mask is\")\n", + "print(\n", + " \"never applied back to image_object, so the leak from masking-before-resample survives.\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "c0c50060", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-26T19:55:01.798698Z", + "iopub.status.busy": "2026-08-26T19:55:01.798062Z", + "iopub.status.idle": "2026-08-26T19:55:02.062839Z", + "shell.execute_reply": "2026-08-26T19:55:02.061854Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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BgxQUFCQ3N3dlT9/fnXp0iVN4xKGhYUle5tpwnmmtD+VknOtlPaj9uzZo44dO6po0aLy8PBQvnz5VLNmzSSPVxnhbudwzvYPq6TGz0xNv65evXry8vLS4sWLUx17upTOb9y4oXHjxqlNmzZ68sknlTNnTv3+++/67LPPtG7dOv3+++/KlSuX3Xt27typJUuWqHv37urSpYu2bdumOXPmaOvWrfr5559tvy7dunVLzZo108aNG9WxY0f16dNHcXFxmj9/vurVq6fly5erefPm97wOq1evVsuWLeXv76++ffuqQIECWrlypd566y39+OOP+u9//ys3N/v65zPPPCNjjAYOHKjr169r9uzZ6tixoy5fvqxevXolu7xff/1VYWFh8vb2Vo8ePVSsWDEdOHBAU6dO1bp167Rt2zbbl/rixYuqXbu2du3apRYtWqhHjx7KkSOHdu3apaVLl6p///5q06aNbt68qTFjxujZZ59V7dq1JUn58+dPNo7bt2/r+++/V9WqVR3Wz2r79u1asmSJevTooU6dOunSpUupXod27dpp/fr1evbZZ1WxYkXduHFDBw8eVFRUlN2yPvnkEwUGBqpXr14qWLCgoqOjNXPmTNWtW1cbN25UzZo17aa/cuWK6tSpoyeeeEJjxozRnj17NHnyZJ06dUqtW7fW5MmT1bt3b/n5+SkyMlI9evRQmTJlHOZz7Ngx1a1bVy1bttR7772nPXv2aNq0afrxxx+1Y8eOu96KPHz4cI0aNUp169bV8OHD5eXlpTVr1qh3797666+/9O6779qmnTZtmp5//nmVKlVKb731ltzd3bVgwYI0FaiHDBmi69ev6/nnn1e2bNn04YcfqlWrVlqyZIl69uypdu3aqUWLFvrpp580Z84ceXh4aPr06bb3//7771qyZInCw8PVo0cPGWO0YcMGjR07Vjt37tTKlStt044ZM0ZvvPGGmjVrpl69esnd3V1///23Vq9erRMnTqhgwYJOYzxx4oSaNWumI0eOaPXq1bbCc2odP35cVapU0T///KNevXqpQoUK+u233xQZGanVq1fr559/dtjfP/zwQ50+fVq9e/dWkSJFbL8YDR48WOPGjVPlypU1ZswYXb9+XTNnztSKFSsclpuWY9CKFSs0adIk9enTR71797adiMXHxzstXiTFz8/PdjXJrl27dPXqVdWoUcNh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QeKOmLP5p+cxKDo6OkVXp1jNmjXLdktJSEiIPD09nd7esWXLFhljnN6CZ/1u80AMZKU5c+YoKChIa9assctj1l8xE7KeaO7du1eVK1e2ey3x9Hnz5lVAQIBiYmLS7Rf8hH2CxMWYP/74w24aqwsXLujEiRMOHTRrnyCpwbal/+XTwMDAu66DddqdO3febTXS1Cewrq+zPkFq+3pubm6qVauWatWqJenO8e+xxx7T66+/fteCnp+fn6pWrap169apcuXKcnd3tz1Io379+powYYLtdpX0+NyT21bJvZYZfVSO4UitrOqXJvVwNGeGDx9+16duS3eOBU899ZQWLFigY8eOae7cuYqPj3d4UnjC43a1atXsXnN23D5z5ow6deqkggUL6vnnn9ewYcM0ZMgQu6cEly5dWnv37lWlSpWSHZrobh577DHb5xATE6OaNWtq6NChGjBggNzd3dM834S+++4724MrevToYfdaZGRkquaVEedjqTmfterUqZOaNGmijh07qkGDBlq9erVDPz9hzkpJQa9EiRI6ePCgbt265XDMtg7lkFap3QeTUrJkSbm5uenq1avpetXrypUr9fzzzyssLEyzZs1yyG3p2Z9KSz+qbNmyKlu2rF5++WVdvXpVzZo108cff6yBAwcqKChIklSlShWnd9o5061bN7tz03tlvQPs/PnzdneDXb16VSdPnnSoX0kp69cldODAAeXOnTtVx1JJSpd7OLNlyyaLxeJQ+R89enSSv7rv37/f4RePyZMn68KFC2rTpo2t7ZlnnlFMTIzeeecdp/NJ7lLnlKpUqZKCgoI0b948h51k1KhRkqSnnnrK4X3jx4+3u/3t4sWLmjx5snx9fW331jtTsWJFhYSEaObMmU5PZowxtqt43Nzc1KlTJx06dEgff/yxw7QJt6/1l67UPEUzW7Zsql27trZt25biindq1yEuLs5hbC+LxWJLbtZqtPUXkMS/dqxatcrp0zvT06VLlxy277Jly7Rnzx6Fh4cnm3isT9sbMmSI07GCLl68aNtPGjVqJB8fH33yySe6ePGibZpr167ZdSIyS7Zs2Ry2982bN53eRu3syjLrybazqzmyZ8+uBQsWqHv37nrjjTccxpdKDTc3N4WHh2vv3r0Ox40FCxbo4MGDatOmTYpOYMPDw2WxWPTBBx/YfX/Pnz+vyZMnO0yfnseg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VJ6enhowYIBtmvXr16tp06YKDAyUh4eHypUrp3Hjxjmt/Twosmd1ANKdTl6zZs20ceNGdezYUX369FFcXJzmz5+vevXqafny5WrevLl8fX315Zdfqlq1amrfvr2+//575ciRQ/v27VOfPn1UqVIljR8/3jbfDRs2aP369WrevLmKFy+ua9euaeXKlXr11Vd16NAhu4PszZs31bRpU61bt0516tTRW2+9JX9/f+3Zs0dffvmlRo4cqdDQUE2cOFEvv/yyWrdubduJfX19k1y35557Tv/97381b948vfDCC3avzZ49Wzdv3tSzzz6bou30zTffaMKECerbt6969uypdevW6cMPP9Svv/6qdevWKVu2bHedx9ChQxUbG6vu3bvL19dXc+fO1aBBg1SoUCF16NDBNt2yZcv0xx9/qG3btipWrJguXryoL774Qj169NCZM2f02muvOcy7c+fOyp49u/r16ydfX1+VKVMmXdc/o8ybN0/vvPOOzp49q4kTJ9raE4/B1LhxYwUEBGjIkCGKi4vTpEmT1LJlSx04cEAPPfRQkvPfv3+/6tevr3z58qlv374qVKiQzp49qx07duinn35SeHh4iuJ85plnZIzRwIEDdf36dc2ePVsdO3bU5cuX1atXL9t0s2fP1unTp9WlSxcVKVJEZ86c0Zw5c9SyZUstWrRI7du3d5h3gwYNlDt3bg0ePFjx8fGqUqWK5s2bp5dffll58uTRsGHDbNPmzZs3RfFanTt3TnXr1lV8fLyee+45FS9eXDExMdq1a5c2btxoF7szKfluSnd+lWzWrJnWr1+vZs2aqX///jp16pSmTp2qWrVqadWqVapbt67dvLdv364lS5aoR48e6tSpk90vPJcvX1bt2rVVpUoVjRw5UpcuXZKvr69iY2NVq1Yt/fXXX+rWrZsqVKigmJgYRUZGqkaNGvr+++/12GOP2eYTERGhuXPnqlKlSnr11VeVL18+HTx4UEuXLtWoUaNUrlw5zZs3T127dlXt2rWz/PuA/+nevbvmzp2rVq1aqXPnzpKkpUuXqnXr1po6dar69Oljm/aTTz5RYGCgevXqpYIFCyo6OlozZ85U3bp1tXHjRtWsWTPJ5Zw4cULNmjXTkSNHtHr1att++uuvvyosLEze3t7q0aOHihUrpgMHDmjq1Klat26dtm3bZis6REdHq2bNmrpw4YL69OmjcuXKacuWLQoLC1Pu3LlTtd6//fabmjZtqmeeeUbt27fXjh07NGPGDF24cEGrV6+2TXf8+HF9+umnatOmjdq3by9PT09t27ZN06dP1+bNm/Xzzz8rR44cyS7rrbfe0ujRoxUSEqLhw4fLGKP58+erY8eOOnTokIYOHZrke/Pmzat58+Zp6dKlWrZsmSZOnKg8efI45GRnuSktx4udO3cqPDzcdlvvypUr9d577ylbtmzatWuXYmNj9corr+jKlSsaP368mjdvrsOHD8vPzy9F233KlCk6c+aMevXqJX9/f0VGRqpbt27KkSOHhgwZotq1a+vtt9/W3r17NXnyZHXr1s3uR6XUfB4LFixQly5d9MQTT2j48OHy9fXV8ePH9d1332nfvn16+OGHncYYGxurp556Sps2bdKCBQvUsWPHFK2bJA0ePFgXL15U79695eHhoc8//1wvvPCCTp8+rbfffts2XUr3+2HDhik8PNyhT2bN3REREZo3b56eeOIJjRkzRpcvX9aMGTPUuHFjzZ07V126dLGLLzo6WnXq1FHr1q01duxYW8HU+t26fPmyevbsqdKlS+v48eOaOnWq1q5dq+3btyfbB0goPfLKmDFj9MYbb6hZs2bq1auX3N3d9ffff2v16tU6ceKEChYsKClt/bhu3brJ09NTr732mq5cuaIPPvhADRs21Lx58xQREaFevXqpQ4cOWrVqlSZOnKi8efNqyJAhDvNp3Lix/P399eabb+r8+fOaPn26mjRpoq+//lpNmjRJdhutXr1a4eHhKlq0qAYMGKD8+fPrt99+04QJE/TDDz9o/fr1yp79vjh9QQoUKlRIZcuWVVRUlF17VFSU3NzcHAq9UVFRKlWqlMN36tVXX1VcXJy6deumvHnzqmjRopJS/z0/fvy4QkND1bJlS40bN04HDhzQxx9/rFatWmnXrl22u5tu3bqlxo0ba8uWLWrbtq3CwsJ07NgxRUREqHTp0ndd71atWqlAgQKaMWOG+vbt6xDDypUr1a5dO+XJkyfJeUyaNEkTJkzQ999/r3nz5tnaE/cnnOU4KWP6MHeLqV27dlq/fr2effZZVaxYUTdu3NDBgwcdPv+kvPfee6pWrZr69eunPHny6MCBA5oxY4a+/fZb7dy5U8HBwZLu/dzq+PHjqlKliv755x/16tVLFSpU0G+//abI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dLA7gb8bZ5+/tS3h53/kyBG9+eabWrlypdPPKSYmxuEWsJTcPpBWoaGh6tGjhz777DMtXLhQjz32mGrVqqW2bdum6GmEKf1uHjp0SLlz57bdbpRQSEiIpDvjQljHyZOSX++8efPanVxLsiWGTZs2JXu8Onv2rIoWLar9+/crMDAw2XE2cX/as2ePrl69qsKFCyc5zenTp23///333/XWW2/pu+++cyiaO+vYnD59Wk2aNFFwcLA2bdrk8J3cs2ePJGns2LEaO3as0+Vbj0n//POPLl265PQY4enpqeDg4FQV05M61klyON5FRkZqypQp+uOPPxzGkbnbOHrWDr/1+5lQwu/svXL2PU/L8cLZdrEeIxK/Zm2/W35IKKn5FypUSJ6enimaf0o/j2HDhmnz5s166qmnFBgYqCeeeEL16tVTp06dnD4huHbt2nJ3d9fPP//sdJudP39eN27csGvLmzev3Ul2SnJYavb75KRl3woODnYYumT//v2Kj4/XggULtGDBAqfLshaubt++rTNnzti9lrj/kR55ZezYsWrdurXCwsKUP39+1a5dW/Xr11fHjh3txv1LSz8uqf04uX3/3LlzDoWWu33WlStXdrqO1s+/b9++DrcpWiU87sI11K1bV9myZVNUVJQ6dOigqKgoVapUSUFBQapataqioqLUp08fRUVFyWKxOAx3ICV9HJdS9z1PaX47dOiQ8uTJ43TIinLlymnt2rXJrbIkqVixYmrSpIkWLlyo8ePHy8fHR99++62OHDmi999//67vTyln2yaj+zDOuLu766OPPtKAAQMUHBys0qVLq3bt2mrWrJlatWqVoqGhNm3apFGjRunHH390KNRZx7GX7u3c6syZM7p06ZLT6SwWix555BF99dVXiomJsTt+p/Q8LDFXOXdIS/4tVKiQZs6cqZYtW0q68/mldpiXtEhqn5dkK94586Dmj/uioBcfH68yZcrok08+SXKaxF+6HTt26MSJE5LuVJRv3rzp8OtE586dtWLFCvXq1UuhoaHKkyePsmfPrh07dtjGCssMBQsWVMuWLbV48WJNmjRJN27c0NKlS9WyZUuH6nJGS8nB1Bijxo0ba9euXRowYICqVKmiwMBAZcuWTStXrtTEiROdbruEV1gkdK/rX6VKFYeHoKRGnTp1HB5wkRZJbbvEv+Ak5u7urlWrVumXX37RmjVrtHnzZk2cOFFjxozR+++/7zBQ8L24fPmyQkNDdfHiRb344ot69NFH5e/vLzc3N3322Wf6/PPPU/XZpZeZM2fq1Vdf1apVq7R582Z99tlnmjBhggYMGKCPPvooQ5ednOTW29lr1m0XGhqqN998M8n33su4ELg/xMfHK2fOnFqyZEmS0zzyyCOSpGPHjqlWrVry9fXVkCFDbAVoNzc3jR071nZVQkK5cuVSlSpVtGLFCs2cOdNhwGjrvjZgwABbRykxLy+vNK5d8pLLEwmPdx9++KFeeuklNWjQQFOmTLENTH3r1i01bdo003Ls3aTX8S257ZLW/JCSeWTE5xEcHKw///xTGzZs0Lp16/T999/rlVdesf0YFBoaareczp07a+rUqXrvvffsxpq1atOmjcMVY4cPH071CUlW7vfJHfPbtWvncPVeYtHR0XYnnJJj/yM98kq1atX0119/KSoqSuvXr9fGjRu1ZMkSvfXWW9q0aZPKli2b5n7cve6D98oa0zvvvONwR4pV4oIo7n85c+bU448/brtabt26dYqIiJB0ZwznTz75RPHx8YqKilLFihWdFgQy4zienvuyVZ8+fbRy5UotXrxYPXr0UGRkpNzd3W3rnx6SOq5kZB8mKb1791bLli21atUqbdq0SVFRUZo5c6aqVq2qjRs3Ovw4ldCOHTtUv359lShRQu+8845KlCghb29vWSwWvfjii7py5Ypt2sw8t7pXrnLukNb8m/BOil9//VW1a9dO1XKTKhgn9wT45HLpjBkz7K6kTKhQoUKpis1V3BcFvdKlSys6OlphYWEpGuj2zJkztss6n3/+eQ0bNkxDhgyxPfFIunObxIoVK9SlSxd9+umndu8/cOCA0xj279+vK1euJHslUFovIe3Tp4+WLl2qhQsX6urVq7p+/XqqB7939uS5f/75R+fOnUvRlU4ptWvXLv3yyy968803NWrUKLvXnD01KiXuZf0XLFhwT7eqpqTzlxm3Pj722GO2AU9jYmJUs2ZNDR06VAMGDJC7u/td37979267q0WsbZJst5t/9913toFsE1/9mPCS/5RKz+1StmxZlS1bVi+//LKuXr2qZs2a6eOPP9bAgQOTPelL6XczODhYe/fu1enTpx2uMLE+Hcs6mG5a5c2bVwEBAYqJiVGDBg3uOn3p0qW1Z88eHT16NMnkgvtT6dKl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t3bs2KEZM2aoQoUKqlixYrLvT+l385lnntH8+fM1efJk/f3332rcuLFOnTqlqVOnyhij6dOnp8s+98477+jHH39URESEli9frtq1a8vHx0d///231q1bJy8vL9uJX9u2bdW5c2ctWLBAVatWVZs2bZQvXz4dPnxYX375pX7++WfbwL7Vq1dXVFSUxo0bp4ceekgWi0UdOnS453iRNk899ZR69+6tyMhI/fbbbwoPD1eBAgV04sQJ7dixQytXrtTNmzclSU2bNpWPj4+6du2qfv36KU+ePPrll1+0YMEChYSEODxcISE3NzfNnDlT3t7eGjt2rK5cuaJJkybJYrFo/vz5qlevnh577DFFREQoJCREN2/e1JEjR7R8+XJ169ZNI0aMkPS/40y7du30/PPPq2zZstqyZYu++uorBQcHJ3vrQlo9/fTTev3119W4cWO1bdtWcXFxWrZsmcNYakkpWbKkhg0bptGjR6t69erq3LmzbfDoXbt26Z133smwMWQy63iRmVLzeTRu3Fh+fn4KDQ3VQw89pLi4OC1atEgXLlywnVg7M3LkSPn4+Oj111/X1atX9fnnnzsMd5KU/Pnzq0qVKurRo4fc3d31+eef24ZAsV7dkNr9Pin16tVT165dNW/ePNWtW1etW7fW5cuXNWPGDP3zzz+aO3duih8WM23aNNWqVUsNGzZUp06dVKVKFbm5ueno0aNauXKlHn/8cc2ePTtF80pKavJKuXLlVK1aNVWtWlVFihTR+fPnbSeJ3bp1k5Qx/bjUOHHihBo0aKDWrVvr/PnzmjZtmq5evapPPvkk2QfNeXt7a968eWrVqpXKlSun7t27q2zZsrp06ZIOHjyopUuX6t13303X2xWROWrWrCkvLy/t3r1b9erVs926lyNHDoWGhmrVqlVyd3dP1e166fk9T6x79+6aOXOm3n//fR05ckRhYWGKjo7WlClT9Pjjj+vnn39OcY7o1auXRo8erblz56pUqVJOxwhMSvXq1fXJJ5+ob9++evLJJ5UjRw5Vq1bN4fb+xDKyD5NUTBcvXlRoaKjCw8P1yCOPKG/evDp06JCmTZsmPz+/u1580qZNG02YMEFNmzbVs88+K29vb23evFlr1qxx6Mfc67nVmDFjFBUVpY4dO2r9+vUKCQnRb7/9psjISBUtWtTpRUbWY+/zzz+vXLlyafny5fru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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Visualize the discrepancy: label_object (clean) vs image_object (leaked)\n", + "fig, axes = plt.subplots(1, 3, figsize=(14, 5))\n", + "axes[0].imshow(label_object_bool, cmap=\"gray\")\n", + "axes[0].set_title(\n", + " \"label_object (resampled mask, order=0)\\nexactly binary — this part is correct\"\n", + ")\n", + "\n", + "axes[1].imshow(image_object_out, cmap=\"viridis\")\n", + "axes[1].set_title(\"image_object (as written)\\nleaked halo from mask-before-resample\")\n", + "\n", + "leaked_rgb = plt.cm.viridis(\n", + " (image_object_out - image_object_out.min())\n", + " / (image_object_out.max() - image_object_out.min() + 1e-9)\n", + ")[..., :3]\n", + "leaked_rgb[leaked_voxels] = [1, 0, 0]\n", + "axes[2].imshow(leaked_rgb)\n", + "axes[2].set_title(\n", + " \"red = voxels haralick(ignore_zeros=True)\\nwrongly treats as object texture\"\n", + ")\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "9c8c5efc", + "metadata": {}, + "source": [ + "### Test: the fix (resample-then-mask) has zero leakage on the same inputs\n", + "\n", + "Same inputs, same `anisotropy_factor`, but masking `image_object` with the\n", + "resampled `label_object` **after** both resamples, instead of masking the\n", + "raw image before resampling.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "469430ad", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-26T19:55:02.064561Z", + "iopub.status.busy": "2026-08-26T19:55:02.064397Z", + "iopub.status.idle": "2026-08-26T19:55:02.070867Z", + "shell.execute_reply": "2026-08-26T19:55:02.070036Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Leaked voxels in fixed pipeline: 0\n", + "PASSED: zero leakage once masking happens after both resamples.\n" + ] + } + ], + "source": [ + "def pipeline_fixed(image, selected_label_object, label, anisotropy_factor):\n", + " object_mask = selected_label_object == label\n", + " assert np.any(object_mask)\n", + "\n", + " # resample mask and RAW (unmasked) image independently\n", + " label_object = resample_to_isotropic(\n", + " object_mask.astype(np.uint8), anisotropy_factor=anisotropy_factor, order=0\n", + " ).astype(bool)\n", + " image_object = resample_to_isotropic(\n", + " image, anisotropy_factor=anisotropy_factor, order=1\n", + " )\n", + "\n", + " # mask AFTER resampling\n", + " image_object = image_object.copy()\n", + " image_object[~label_object] = 0\n", + " return image_object, label_object\n", + "\n", + "\n", + "fixed_image_object, fixed_label_object = pipeline_fixed(\n", + " raw_image, selected_label_object, label=1, anisotropy_factor=anisotropy_factor_test\n", + ")\n", + "\n", + "fixed_leaked_voxels = (~fixed_label_object) & (fixed_image_object != 0)\n", + "print(f\"Leaked voxels in fixed pipeline: {fixed_leaked_voxels.sum()}\")\n", + "assert fixed_leaked_voxels.sum() == 0, \"fixed pipeline should have zero leakage\"\n", + "print(\"PASSED: zero leakage once masking happens after both resamples.\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "zedprofiler (3.13.3.final.0)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}