From c11890d6cebd8007e4cd3ca79bb5aef0fdc2036d Mon Sep 17 00:00:00 2001 From: Synchon Mandal Date: Thu, 26 Mar 2026 11:57:37 +0100 Subject: [PATCH 1/3] fix: index dtype "pattern" in PatternDataGrabber.get_elements --- junifer/datagrabber/pattern.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/junifer/datagrabber/pattern.py b/junifer/datagrabber/pattern.py index 43d0d74cb..3478fcaf0 100644 --- a/junifer/datagrabber/pattern.py +++ b/junifer/datagrabber/pattern.py @@ -466,8 +466,14 @@ class PatternDataGrabber(BaseDataGrabber, PatternValidationMixin): # Iterate by number of replacements. At least one pattern must have # all of them. + # NOTE: will ignore list dtype vals like Warp replacement_in_patterns = [ - np.sum([x in self.patterns[t_type] for x in self.replacements]) + np.sum( + [ + x in self.patterns[t_type].get("pattern") + for x in self.replacements + ] + ) for t_type in self.types ] order = np.argsort(replacement_in_patterns) -- 2.52.0 From 54daee1fb5d3b800c3ff9098a79f6b0d3cc55b85 Mon Sep 17 00:00:00 2001 From: Synchon Mandal Date: Thu, 26 Mar 2026 12:31:21 +0100 Subject: [PATCH 2/3] update: improve replacement counting in PatternDataGrabber.get_elements --- junifer/datagrabber/pattern.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/junifer/datagrabber/pattern.py b/junifer/datagrabber/pattern.py index 3478fcaf0..b64ed47ce 100644 --- a/junifer/datagrabber/pattern.py +++ b/junifer/datagrabber/pattern.py @@ -449,6 +449,19 @@ class PatternDataGrabber(BaseDataGrabber, PatternValidationMixin): return out + def _count_replacements_in_pattern(self, dtype: str) -> int: + """Count the replacements in pattern(s).""" + dtype_val = self.patterns[dtype] + # Convert non-list dtype vals + if not isinstance(dtype_val, list): + dtype_val = [dtype_val] + counts = [] + for val in dtype_val: + counts.append( + np.sum([x in val.get("pattern") for x in self.replacements]) + ) + return np.max(counts).astype(int) + def get_elements(self) -> Elements: """Implement fetching list of elements in the dataset. @@ -466,14 +479,8 @@ class PatternDataGrabber(BaseDataGrabber, PatternValidationMixin): # Iterate by number of replacements. At least one pattern must have # all of them. - # NOTE: will ignore list dtype vals like Warp replacement_in_patterns = [ - np.sum( - [ - x in self.patterns[t_type].get("pattern") - for x in self.replacements - ] - ) + self._count_replacements_in_pattern(t_type) for t_type in self.types ] order = np.argsort(replacement_in_patterns) -- 2.52.0 From afe6c1918737005566726453080a781709ffe366 Mon Sep 17 00:00:00 2001 From: Synchon Mandal Date: Thu, 26 Mar 2026 14:40:48 +0100 Subject: [PATCH 3/3] chore: add changelog 492.bugfix --- docs/changes/newsfragments/492.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/changes/newsfragments/492.bugfix diff --git a/docs/changes/newsfragments/492.bugfix b/docs/changes/newsfragments/492.bugfix new file mode 100644 index 000000000..3c173dcef --- /dev/null +++ b/docs/changes/newsfragments/492.bugfix @@ -0,0 +1 @@ +Fix pattern indexing logic for :meth:`.PatternDataGrabber.get_elements` by `Synchon Mandal`_ -- 2.52.0