From ef1ef057bb73e140db9f2cc8e37959c9289677bc Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 16 Aug 2024 17:07:17 -0400 Subject: [PATCH] Adding robot relax --- src/kg_bioportal/robot_utils.py | 2 +- src/kg_bioportal/transformer.py | 26 ++++++++++++++++++++------ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/kg_bioportal/robot_utils.py b/src/kg_bioportal/robot_utils.py index 5faf807..623bc41 100644 --- a/src/kg_bioportal/robot_utils.py +++ b/src/kg_bioportal/robot_utils.py @@ -49,7 +49,7 @@ def initialize_robot(robot_path: str) -> list: return [robot_command, env] -def relax_ontology( +def robot_relax( robot_path: str, input_path: str, output_path: str, robot_env: dict ) -> bool: """ diff --git a/src/kg_bioportal/transformer.py b/src/kg_bioportal/transformer.py index 861b1c0..b0bd42d 100644 --- a/src/kg_bioportal/transformer.py +++ b/src/kg_bioportal/transformer.py @@ -5,8 +5,9 @@ import sys from kg_bioportal.downloader import ONTOLOGY_LIST_NAME -from kg_bioportal.robot_utils import initialize_robot, robot_convert +from kg_bioportal.robot_utils import initialize_robot, robot_convert, robot_relax +# TODO: Don't repeat steps if the products already exist class Transformer: @@ -66,14 +67,14 @@ def transform_all(self) -> None: ] if len(filepaths) == 0: - logging.ERROR(f"No ontologies found in {self.input_dir}.") + logging.error(f"No ontologies found in {self.input_dir}.") sys.exit() else: logging.info(f"Found {len(filepaths)} ontologies to transform.") for filepath in filepaths: if not self.transform(filepath): - logging.ERROR(f"Error transforming {filepath}.") + logging.error(f"Error transforming {filepath}.") else: logging.info(f"Transformed {filepath}.") @@ -92,14 +93,27 @@ def transform(self, ontology: str) -> bool: logging.info(f"Transforming {ontology} to nodes and edges.") ontology_name = os.path.splitext(os.path.basename(ontology))[0] - output_path = os.path.join(self.output_dir, f"{ontology_name}.json") + json_output_path = os.path.join(self.output_dir, f"{ontology_name}.json") + + # Convert if not robot_convert( robot_path=self.robot_path, input_path=ontology, - output_path=output_path, + output_path=json_output_path, robot_env=self.robot_env, ): status = False - status = True + + # Relax + relaxed_outpath = os.path.join(self.output_dir, f"{ontology_name}_relaxed.json") + if not robot_relax( + robot_path=self.robot_path, + input_path=json_output_path, + output_path=relaxed_outpath, + robot_env=self.robot_env, + ): + status = False + else: + status = True return status