Skip to content
Snippets Groups Projects
toolrunner.py 8.05 KiB
from bioblend import galaxy
from bioblend.galaxy import GalaxyInstance
import os
"""
Methods to run all Chado and Tripal tools on galaxy
"""


class ToolRunner:

    def __init__(self, parameters_dict, instance, history):
        self.history = history
        self.instance = instance
        self.parameters_dict = parameters_dict
        self.genus = parameters_dict["genus"]
        self.species = parameters_dict["species"]
        self.strain = parameters_dict["strain"]
        self.common = parameters_dict["common"]
        self.performed = parameters_dict["performed by"]
        self.genome_version = parameters_dict["genome version"]
        self.ogs_version = parameters_dict["ogs version"]
        self.sex = parameters_dict["sex"]
        self.date = parameters_dict["date"]
        self.custom_ga_file = None
        self.custom_ga_file_path = None
        self.preset_ga_file = None
        self.analysis = None
        self.organism = None
        self.program = None
        if self.strain != "":
            self.abbr = self.genus[0].lower() + "_" + self.species + "_" + self.strain
            self.full = "_".join([self.genus, self.species, self.strain, self.sex])
        else:
            self.abbr = self.genus[0].lower() + "_" + self.species
            self.full = "_".join([self.genus, self.species, self.strain, self.sex])
        self.ogs = str("OGS"+ self.ogs_version)
        self.genome = str(self.full + " genome v" + self.genome_version)

    def show_tool(self, tool_id):
        print(self.instance.tools.show_tool(tool_id=tool_id, io_details=True))
        return self.instance.tools.show_tool(tool_id=tool_id, io_details=True)

    def purge_organism(self):
        self.show_tool(tool_id="toolshed.g2.bx.psu.edu/repos/gga/chado_organism_delete_organisms/organism_delete_organisms/2.3.2")
        self.instance.tools.run_tool(tool_id="toolshed.g2.bx.psu.edu/repos/gga/chado_organism_delete_organisms/organism_delete_organisms/2.3.2",
                                     history_id=self.history,
                                     tool_inputs={"name": self.organism})

    def purge_analyses(self):
        return None

    def get_organism(self):
        """
        Tool invocation must be as return (or else it executes but returns nothing when called)
        :return:
        """
        return self.instance.tools.run_tool(tool_id="toolshed.g2.bx.psu.edu/repos/gga/chado_organism_get_organisms/organism_get_organisms/2.3.2",
                                            history_id=self.history,
                                            tool_inputs={"genus": self.genus, "species": self.species})

    def get_ogs_analysis(self):
        """
        Tool invocation must be as return (or else it executes but returns nothing when called)
        :return:
        """
        return self.instance.tools.run_tool(tool_id="toolshed.g2.bx.psu.edu/repos/gga/chado_analysis_get_analyses/analysis_get_analyses/2.3.2",
                                            history_id=self.history,
                                            tool_inputs={"name": self.genus + " " + self.species + " OGS" + self.ogs_version})

    def get_genome_analysis(self):
        """
        Tool invocation must be as return (or else it executes but returns nothing when called)
        :return:
        """
        return self.instance.tools.run_tool(tool_id="toolshed.g2.bx.psu.edu/repos/gga/chado_analysis_get_analyses/analysis_get_analyses/2.3.2",
                                            history_id=self.history,
                                            tool_inputs={"name": self.genus + " " + self.species + " genome v" + self.genome_version})

    def add_organism(self):
        """
        Tool invocation must be as return (or else it executes but returns nothing when called)
        :return:
        """
        return self.instance.tools.run_tool(tool_id="toolshed.g2.bx.psu.edu/repos/gga/chado_organism_add_organism/organism_add_organism/2.3.2",
                                            history_id=self.history,
                                            tool_inputs={"abbr": self.abbr,
                                                         "genus": self.genus,
                                                         "species": self.species,
                                                         "common": self.common
                                                         })

    def add_ogs(self):
        """
        Tool invocation must be as return (or else it executes but returns nothing when called)
        :return:
        """
        return self.instance.tools.run_tool(tool_id="toolshed.g2.bx.psu.edu/repos/gga/chado_analysis_add_analysis/analysis_add_analysis/2.3.2",
                                            history_id=self.history,
                                            tool_inputs={"name": self.genus + " " + self.species + " OGS" + self.ogs_version,
                                                         "program": "Performed by Genoscope",
                                                         "programversion": str("OGS" + self.genome_version),
                                                         "sourcename": "Genoscope",
                                                         "date_executed": self.date
                                                         })

    def add_genome(self):
        """
        Tool invocation must be as return (or else it executes but returns nothing when called)
        :return:
        """
        return self.instance.tools.run_tool(tool_id="toolshed.g2.bx.psu.edu/repos/gga/chado_analysis_add_analysis/analysis_add_analysis/2.3.2",
                                            history_id=self.history,
                                            tool_inputs={"name": self.genus + " " + self.species + " genome v" + self.genome_version,
                                                         "program": "Performed by Genoscope",
                                                         "programversion": str("genome v" + self.genome_version),
                                                         "sourcename": "Genoscope",
                                                         "date_executed": self.date
                                                         })

    def add_jbrowse(self, datasets):
        return self.instance.tools.run_tool(tool_id="toolshed.g2.bx.psu.edu/repos/iuc/jbrowse/jbrowse/1.16.5+galaxy7",
                                            history_id=self.history,
                                            tool_inputs={"genomes": datasets["genome_file"]})

    def add_organism_jbrowse(self):
        return self.instance.tools.run_tool(tool_id="toolshed.g2.bx.psu.edu/repos/gga/jbrowse_to_container/jbrowse_to_container/0.5.1",
                                            history_id=self.history,
                                            tool_inputs={"multiple": "false",
                                                         "name": "foo",
                                                         "unique_id": "bar"})

    # Homo sapiens deletion TODO: concat the 2 calls
    def get_sapiens_id(self):
        """
        Tool invocation must be as return (or else it executes but returns nothing when called)
        :return:
        """
        return self.instance.tools.run_tool(tool_id="toolshed.g2.bx.psu.edu/repos/gga/chado_organism_get_organisms/organism_get_organisms/2.3.2",
                                            history_id=self.history,
                                            tool_inputs={"genus": "Homo", "species": "species"})

    def delete_sapiens(self, hs_id):
        """
        Tool invocation must be as return (or else it executes but returns nothing when called)
        :return:
        """
        return self.instance.tools.run_tool(tool_id="toolshed.g2.bx.psu.edu/repos/gga/chado_organism_delete_organisms/organism_delete_organisms/2.3.2",
                                            history_id=self.history,
                                            tool_inputs={"organism": str(hs_id)})

    def show_pannel(self):
        print(self.instance.tools.get_tool_panel())
        return self.instance.tools.get_tool_panel()