From ad0289fa6de5af9e311a9e21efa13e949ff8867a Mon Sep 17 00:00:00 2001 From: rabii-chaarani Date: Thu, 5 Jun 2025 10:58:32 +0930 Subject: [PATCH 1/2] fix: support multiple search terms for faults --- map2loop/mapdata.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/map2loop/mapdata.py b/map2loop/mapdata.py index 884ef3d7..ba59ee0c 100644 --- a/map2loop/mapdata.py +++ b/map2loop/mapdata.py @@ -995,9 +995,17 @@ def parse_fault_map(self) -> tuple: # crop faults = faults.loc[faults.geometry.length >= self.minimum_fault_length] - if config["structtype_column"] in self.raw_data[Datatype.FAULT]: + if config["structtype_column"] in self.raw_data[Datatype.FAULT]: faults["FEATURE"] = self.raw_data[Datatype.FAULT][config["structtype_column"]] - faults = faults[faults["FEATURE"].astype(str).str.contains(config["fault_text"])] + # Check if the string contains commas indicating multiple substrings + if ',' in config["fault_text"]: + import re + fault_text = config["fault_text"].split(',') + search_terms = [term.strip().strip("'").strip('"') for term in fault_text] + escaped_terms = [re.escape(term) for term in search_terms] + # Combine the escaped terms using the pipe '|' symbol for alternation + fault_text_pattern = '|'.join(escaped_terms) + faults = faults[faults["FEATURE"].astype(str).str.contains(fault_text_pattern, case=False, regex=True, na=False)] if self.verbose_level > VerboseLevel.NONE: if len(faults) < len(self.raw_data[Datatype.GEOLOGY]) and len(faults) == 0: msg = f"Fault map reduced to 0 faults as structtype_column ({config['structtype_column']}) does not contains as row with fault_text \"{config['fault_text']}\"" From c6d0b7aa2773bbe551fd71ec02d47f31417696f4 Mon Sep 17 00:00:00 2001 From: rabii-chaarani Date: Thu, 5 Jun 2025 11:00:07 +0930 Subject: [PATCH 2/2] fix: fold filtering to support multiple search terms --- map2loop/mapdata.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/map2loop/mapdata.py b/map2loop/mapdata.py index ba59ee0c..b986258c 100644 --- a/map2loop/mapdata.py +++ b/map2loop/mapdata.py @@ -1140,9 +1140,16 @@ def parse_fold_map(self) -> tuple: folds[config["structtype_column"]] = self.raw_data[Datatype.FOLD][ config["structtype_column"] ] - folds = folds[ - folds[config["structtype_column"]].astype(str).str.contains(config["fold_text"]) - ] + if ',' in config["fold_text"]: + import re + fold_text = config["fold_text"].split(',') + search_terms = [term.strip().strip("'").strip('"') for term in fold_text] + escaped_terms = [re.escape(term) for term in search_terms] + # Combine the escaped terms using the pipe '|' symbol for alternation + fold_text_pattern = '|'.join(escaped_terms) + folds = folds[ + folds[config["structtype_column"]].astype(str).str.contains(fold_text_pattern, case=False, regex=True, na=False) + ] if self.verbose_level > VerboseLevel.NONE: if len(folds) < len(self.raw_data[Datatype.GEOLOGY]) and len(folds) == 0: msg = f"Fold map reduced to 0 folds as structtype_column ({config['structtype_column']}) does not contains any row with fold_text \"{config['fold_text']}\""