From bfb55264e23188d5cfe63a74102795ce385ef9b7 Mon Sep 17 00:00:00 2001 From: "Peter H. Li" Date: Wed, 21 Feb 2024 18:42:52 -0800 Subject: [PATCH] Make bounding box errors more informative. PiperOrigin-RevId: 609195764 --- connectomics/common/bounding_box.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/connectomics/common/bounding_box.py b/connectomics/common/bounding_box.py index 7b94371..3a25389 100644 --- a/connectomics/common/bounding_box.py +++ b/connectomics/common/bounding_box.py @@ -229,7 +229,8 @@ def scale(self: S, scale_factor: FloatSequence) -> S: """ if array.is_arraylike(scale_factor): if len(scale_factor) != self.rank: - raise ValueError('scale_factor length must match rank') + raise ValueError(f'scale_factor {scale_factor} length does not match ' + f'rank {self.rank}.') scale_factor = np.array(scale_factor, dtype=float) start = np.array(self._start, dtype=float) * scale_factor size = np.array(self._size, dtype=float) * scale_factor @@ -257,14 +258,15 @@ def adjusted_by(self: S, start = self.start else: if array.is_arraylike(start) and len(start) != self.rank: - raise ValueError('start length must match rank') + raise ValueError(f'start {start} length does not match rank ' + f'{self.rank}.') start = self.start + start if end is None: end = self.end else: if array.is_arraylike(end) and len(end) != self.rank: - raise ValueError('end length must match rank') + raise ValueError(f'end {end} length does not match rank {self.rank}.') end = self.end + end return self.__class__(start=start, end=end) @@ -278,7 +280,8 @@ def translate(self: S, offset: FloatSequence) -> S: A new bounding box shifted by the specified vector. """ if array.is_arraylike(offset) and len(offset) != self.rank: - raise ValueError('offset length must match rank') + raise ValueError(f'offset {offset} length does not match rank ' + f'{self.rank}.') start = self.start + offset return self.__class__(start=start, size=self.size) @@ -295,7 +298,8 @@ def intersection(self: S, other: S) -> Optional[S]: ValueError: if invalid arguments are specified. """ if self.rank != other.rank: - raise ValueError('ranks must match') + raise ValueError(f'self.rank {self.rank} does not match other.rank ' + f'{other.rank}.') start = np.maximum(self.start, other.start) end = np.minimum(self.end, other.end) if np.any(end <= start): @@ -315,7 +319,8 @@ def hull(self: S, other: S) -> S: ValueError: if invalid arguments are specified. """ if self.rank != other.rank: - raise ValueError('ranks must match') + raise ValueError(f'self.rank {self.rank} does not match other.rank ' + f'{other.rank}.') start = np.minimum(self.start, other.start) end = np.maximum(self.end, other.end) return self.__class__(start=start, end=end)