From f3cef51b86686bc640ca501893ace3c303a24974 Mon Sep 17 00:00:00 2001 From: Loraine Gueguen <loraine.gueguen@sb-roscoff.fr> Date: Tue, 11 May 2021 18:07:44 +0200 Subject: [PATCH] Factorize run_tool() --- gga_load_data.py | 18 +++++++----------- utilities.py | 22 ++++++++++++++++++++++ 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/gga_load_data.py b/gga_load_data.py index 4c18272..9590fd5 100755 --- a/gga_load_data.py +++ b/gga_load_data.py @@ -67,25 +67,22 @@ class LoadData(speciesData.SpeciesData): """ logging.debug("Getting 'Homo sapiens' ID in chado database") - get_sapiens_id_job = self.instance.tools.run_tool( + get_sapiens_id_job_output_dataset_id = utilities.run_tool_and_get_single_output_dataset_id(self.instance, tool_id=GET_ORGANISMS_TOOL, history_id=self.history_id, tool_inputs={"genus": "Homo", "species": "sapiens"}) - get_sapiens_id_job_output_dataset_id = get_sapiens_id_job["outputs"][0]["id"] get_sapiens_id_json_output = self.instance.datasets.download_dataset(dataset_id=get_sapiens_id_job_output_dataset_id) + + logging.debug("Deleting Homo 'sapiens' in the instance's chado database") try: - logging.debug("Deleting Homo 'sapiens' in the instance's chado database") get_sapiens_id_final_output = json.loads(get_sapiens_id_json_output)[0] - sapiens_id = str( - get_sapiens_id_final_output["organism_id"]) # needs to be str to be recognized by the chado tool - self.instance.tools.run_tool( + sapiens_id = str(get_sapiens_id_final_output["organism_id"]) # needs to be str to be recognized by the chado tool + utilities.run_tool( tool_id=DELETE_ORGANISMS_TOOL, history_id=self.history_id, - tool_inputs={"organism": str(sapiens_id)}) - except bioblend.ConnectionError: - logging.debug("Homo sapiens isn't in the instance's chado database (bioblend.ConnectionError)") + tool_inputs={"organism": sapiens_id}) except IndexError: - logging.debug("Homo sapiens isn't in the instance's chado database (IndexError)") + logging.error("Homo sapiens isn't in the instance's chado database (IndexError)") pass def purge_histories(self): @@ -98,7 +95,6 @@ class LoadData(speciesData.SpeciesData): """ histories = self.instance.histories.get_histories() - self.instance.histories.get_histories(deleted=False) for h in histories: self.instance.histories.delete_history(history_id=h["id"]) diff --git a/utilities.py b/utilities.py index 93c3e72..e633843 100755 --- a/utilities.py +++ b/utilities.py @@ -6,6 +6,7 @@ import logging import sys import os import subprocess +import bioblend def parse_config(config_file): @@ -172,3 +173,24 @@ def get_unique_species_dict_list(sp_dict_list): unique_species_list_of_dict.append(v) return unique_species_list_of_dict + +def run_tool(instance, tool_id, history_id, tool_inputs): + + output_dict = None + try: + logging.debug("Running tool {0} with tool inputs: {1}".format(tool_id, tool_inputs)) + output_dict = instance.tools.run_tool( + tool_id=tool_id, + history_id=history_id, + tool_inputs=tool_inputs) + except bioblend.ConnectionError: + logging.error("Unexpected HTTP response (bioblend.ConnectionError) when running tool {0} with tool inputs: {1}".format(tool_id, tool_inputs)) + + return output_dict + +def run_tool_and_get_single_output_dataset_id(instance, tool_id, history_id, tool_inputs): + + output_dict = run_tool(instance, tool_id, history_id, tool_inputs) + single_output_dataset_id = output_dict["outputs"][0]["id"] + + return single_output_dataset_id \ No newline at end of file -- GitLab