From 682f375b1c329013c988969d09944237d9d91bfc Mon Sep 17 00:00:00 2001
From: Arthur Le Bars <arthur.le-bars@sb-roscoff.fr>
Date: Thu, 11 Mar 2021 17:00:51 +0100
Subject: [PATCH] datasets import and detection depending on organism, version
 and history now working correctly

---
 misc/banner.png                            | Bin 429858 -> 429851 bytes
 run_workflow_phaeoexplorer.py              | 202 ++++++++-------------
 speciesData.py                             |   4 +
 templates/gspecies_compose_template.yml.j2 |   4 +-
 4 files changed, 80 insertions(+), 130 deletions(-)

diff --git a/misc/banner.png b/misc/banner.png
index 06f7b085b4ede50ea7d91dfde8e30a2a88ff821a..2be0af67b7bd67b76a4f7d13eee392d4bd6f6bf7 100644
GIT binary patch
delta 12682
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
Tm+=qvRk2XcMFshp^2GlG=u_Rf

delta 12658
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%0Ami|$PAg}?q
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
S#{b7xr6f5Wg)>&j)Bgu_&ejG1

diff --git a/run_workflow_phaeoexplorer.py b/run_workflow_phaeoexplorer.py
index f3fd8e7..2857feb 100644
--- a/run_workflow_phaeoexplorer.py
+++ b/run_workflow_phaeoexplorer.py
@@ -447,7 +447,7 @@ class RunWorkflow(speciesData.SpeciesData):
         try:
             blast_diamond_analysis_output = json.loads(blast_diamond_analysis_json_output)[0]
             self.blast_diamond_analysis_id = str(blast_diamond_analysis_output["analysis_id"])
-        except IndexErro as exc:
+        except IndexError as exc:
             logging.critical("No matching InterproScan analysis exists in the instance's chado database")
             sys.exit(exc)
 
@@ -551,83 +551,89 @@ class RunWorkflow(speciesData.SpeciesData):
         instance_source_data_folders = self.instance.libraries.get_folders(library_id=str(library_id))
 
         folders_ids = {}
-        current_folder_name = ""
+        folder_name = ""
+
         # Loop over the folders in the library and map folders names to their IDs
         for i in instance_source_data_folders:
-            for k, v in i.items():
-                if k == "name":
-                    folders_ids[v] = 0
-                    current_folder_name = v
-                if k == "id":
-                    folders_ids[current_folder_name] = v
+            folders_ids[i["name"]] = i["id"]
 
-        history_datasets_li = self.instance.datasets.get_datasets()
-        genome_dataset_hda_id, gff_dataset_hda_id, transcripts_dataset_hda_id, proteins_datasets_hda_id = None, None, None, None
-        interproscan_dataset_hda_id, blast_diamond_dataset_hda_id = None, None
-
-        # Store datasets that are in the history already in a dict
-        hda_ids = self.get_datasets_hda_ids()
 
         # Iterating over the folders to find datasets and map datasets to their IDs
         logging.debug("Datasets IDs: ")
         for k, v in folders_ids.items():
-            if k == "/genome":
+            # print(self.full_name)
+            # print(self.species_folder_name)
+            # print(k)
+            # print(v)
+            if k == "/genome/{0}/v{1}".format(self.species_folder_name, self.genome_version):
                 sub_folder_content = self.instance.folders.show_folder(folder_id=v, contents=True)
-                final_sub_folder_content = self.instance.folders.show_folder(folder_id=sub_folder_content["folder_contents"][0]["id"], contents=True)
-                for k2, v2 in final_sub_folder_content.items():
+                for k2, v2 in sub_folder_content.items():
                     for e in v2:
                         if type(e) == dict:
+                            # print(e)
                             if e["name"].endswith(".fa"):
                                 self.datasets["genome_file"] = e["ldda_id"]
-                                logging.debug("Genome file:\t" + e["name"] + ": " + e["ldda_id"])
-            if k == "/annotation":
+                                self.datasets_name["genome_file"] = e["name"]
+                                logging.debug("\tGenome file:\t" + e["name"] + ": " + e["ldda_id"])
+                                # print("Genome file:\t" + e["name"] + ": " + e["ldda_id"])
+
+            # print(self.species_folder_name)
+            if k == "/annotation/{0}/OGS{1}".format(self.species_folder_name, self.ogs_version):
                 sub_folder_content = self.instance.folders.show_folder(folder_id=v, contents=True)
-                final_sub_folder_content = self.instance.folders.show_folder(folder_id=sub_folder_content["folder_contents"][0]["id"], contents=True)
-                for k2, v2 in final_sub_folder_content.items():
+                for k2, v2 in sub_folder_content.items():
                     for e in v2:
                         if type(e) == dict:
                             if "transcripts" in e["name"]:
                                 self.datasets["transcripts_file"] = e["ldda_id"]
-                                logging.debug("Transcripts file:\t" + e["name"] + ": " + e["ldda_id"])
+                                self.datasets_name["transcripts_file"] = e["name"]
+                                logging.debug("\tTranscripts file:\t" + e["name"] + ": " + e["ldda_id"])
                             elif "proteins.fa" in e["name"]:
                                 self.datasets["proteins_file"] = e["ldda_id"]
-                                logging.debug("Proteins file:\t" + e["name"] + ": " + e["ldda_id"])
+                                self.datasets_name["proteins_file"] = e["name"]
+                                logging.debug("\tProteins file:\t" + e["name"] + ": " + e["ldda_id"])
                             elif "gff" in e["name"]:
                                 self.datasets["gff_file"] = e["ldda_id"]
-                                logging.debug("GFF file:\t" + e["name"] + ": " + e["ldda_id"])
+                                self.datasets_name["gff_file"] = e["name"]
+                                logging.debug("\tGFF file:\t" + e["name"] + ": " + e["ldda_id"])
                             elif "Interpro" in e["name"]:
                                 self.datasets["interproscan_file"] = e["ldda_id"]
-                                logging.debug("Interproscan file:\t" + e["name"] + ": " + e["ldda_id"])
+                                self.datasets_name["interproscan_file"] = e["name"]
+                                logging.debug("\tInterproscan file:\t" + e["name"] + ": " + e["ldda_id"])
                             elif "diamond-blastp" in e["name"]:
                                 self.datasets["blast_diamond_file"] = e["ldda_id"]
-                                logging.debug("Blastp diamond file:\t" + e["name"] + ": " + e["ldda_id"])
+                                self.datasets_name["blast_diamond_file"] = e["name"]
+                                logging.debug("\tBlastp diamond file:\t" + e["name"] + ": " + e["ldda_id"])
 
         logging.debug("Uploading datasets into history %s" % self.history_id)
         # Import each dataset into history if it is not imported
-        if hda_ids["genome_hda_id"] is None:
+
+        first_hda_ids = self.get_datasets_hda_ids()
+
+        if first_hda_ids["genome_hda_id"] is None:
             self.instance.histories.upload_dataset_from_library(history_id=self.history_id, lib_dataset_id=self.datasets["genome_file"])
-        if hda_ids["gff_hda_id"] is None:
+        if first_hda_ids["gff_hda_id"] is None:
             self.instance.histories.upload_dataset_from_library(history_id=self.history_id, lib_dataset_id=self.datasets["gff_file"])
-        if hda_ids["transcripts_hda_id"] is None:
+        if first_hda_ids["transcripts_hda_id"] is None:
             self.instance.histories.upload_dataset_from_library(history_id=self.history_id, lib_dataset_id=self.datasets["transcripts_file"])
-        if hda_ids["proteins_hda_id"] is None:
+        if first_hda_ids["proteins_hda_id"] is None:
             self.instance.histories.upload_dataset_from_library(history_id=self.history_id, lib_dataset_id=self.datasets["proteins_file"])
-        if hda_ids["interproscan_hda_id"] is None:
+        if first_hda_ids["interproscan_hda_id"] is None:
             try:
                 self.instance.histories.upload_dataset_from_library(history_id=self.history_id, lib_dataset_id=self.datasets["interproscan_file"])
             except Exception as exc:
-                logging.debug("Interproscan file not found in library (history: {0})\n{1}".format(self.history_id, exc))
-        if hda_ids["blast_diamond_hda_id"] is None:
+                logging.debug("Interproscan file not found in library (history: {0})".format(self.history_id))
+        if first_hda_ids["blast_diamond_hda_id"] is None:
             try:
                 self.instance.histories.upload_dataset_from_library(history_id=self.history_id, lib_dataset_id=self.datasets["blast_diamond_file"])
             except Exception as exc:
-                logging.debug("Blastp file not found in library (history: {0})\n{1}".format(self.history_id, exc))
+                logging.debug("Blastp file not found in library (history: {0})".format(self.history_id))
 
         # _datasets = self.instance.datasets.get_datasets()
         # with open(os.path.join(self.main_dir, "datasets_ids.json"), "w") as datasets_ids_outfile:
         #     datasets_ids_outfile.write(str(_datasets))
 
-        return {"history_id": self.history_id, "library_id": library_id, "datasets": self.datasets}
+        # Return a dict made of the hda ids
+        return self.get_datasets_hda_ids()
 
 
     def get_datasets_hda_ids(self):
@@ -641,109 +647,46 @@ class RunWorkflow(speciesData.SpeciesData):
         :return:
         """
 
-        # Create an object of the galaxy instance 
-        gio = GalaxyInstance(url=self.instance_url,
-                             email=self.config["galaxy_default_admin_email"],
-                             password=self.config["galaxy_default_admin_password"])
-
-        prj_lib = gio.libraries.get_previews(name="Project Data")
-        library_id = prj_lib[0].id
-
-        instance_source_data_folders = self.instance.libraries.get_folders(library_id=str(library_id))
-
-        folders_ids = {}
-        current_folder_name = ""
-        # Loop over the folders in the library and map folders names to their IDs
-        for i in instance_source_data_folders:
-            for k, v in i.items():
-                if k == "name":
-                    folders_ids[v] = 0
-                    current_folder_name = v
-                if k == "id":
-                    folders_ids[current_folder_name] = v
-
-        history_datasets_li = self.instance.datasets.get_datasets()
-        genome_dataset_hda_id, gff_dataset_hda_id, transcripts_dataset_hda_id, proteins_datasets_hda_id = None, None, None, None
-        interproscan_dataset_hda_id, blast_diamond_dataset_hda_id = None, None
-
-        # Iterating over the folders to find datasets and map datasets to their IDs
-        # TODO: Add a required matching of the version (genome/ogs)
-        logging.debug("Datasets IDs: ")
-        for k, v in folders_ids.items():
-            if k == "/genome":
-                sub_folder_content = self.instance.folders.show_folder(folder_id=v, contents=True)
-                final_sub_folder_content = self.instance.folders.show_folder(folder_id=sub_folder_content["folder_contents"][0]["id"], contents=True)
-                for k2, v2 in final_sub_folder_content.items():
-                    for e in v2:
-                        if type(e) == dict:
-                            if e["name"].endswith(".fa"):
-                                self.datasets["genome_file"] = e["ldda_id"]
-                                self.datasets_name["genome_file"] = e["name"]
-                                logging.debug("Genome file:\t" + e["name"] + ": " + e["ldda_id"])
-            if k == "/annotation":
-                sub_folder_content = self.instance.folders.show_folder(folder_id=v, contents=True)
-                final_sub_folder_content = self.instance.folders.show_folder(folder_id=sub_folder_content["folder_contents"][0]["id"], contents=True)
-                for k2, v2 in final_sub_folder_content.items():
-                    for e in v2:
-                        if type(e) == dict:
-                            if "transcripts" in e["name"]:
-                                self.datasets["transcripts_file"] = e["ldda_id"]
-                                self.datasets_name["transcripts_file"] = e["name"]
-                                logging.debug("Transcripts file:\t" + e["name"] + ": " + e["ldda_id"])
-                            elif "proteins.fa" in e["name"]:
-                                self.datasets["proteins_file"] = e["ldda_id"]
-                                self.datasets_name["proteins_file"] = e["name"]
-                                logging.debug("Proteins file:\t" + e["name"] + ": " + e["ldda_id"])
-                            elif "gff" in e["name"]:
-                                self.datasets["gff_file"] = e["ldda_id"]
-                                self.datasets_name["gff_file"] = e["name"]
-                                logging.debug("GFF file:\t" + e["name"] + ": " + e["ldda_id"])
-                            elif "Interpro" in e["name"]:
-                                self.datasets["interproscan_file"] = e["ldda_id"]
-                                self.datasets_name["interproscan_file"] = e["name"]
-                                logging.debug("Interproscan file:\t" + e["name"] + ": " + e["ldda_id"])
-                            elif "diamond-blastp" in e["name"]:
-                                self.datasets["blast_diamond_file"] = e["ldda_id"]
-                                self.datasets_name["blast_diamond_file"] = e["name"]
-                                logging.debug("Blastp diamond file:\t" + e["name"] + ": " + e["ldda_id"])
-
         # List of all datasets in the instance (including outputs from jobs)
         # "limit" and "offset" options *may* be used to restrict search to specific datasets but since
         # there is no way to know which imported datasets are the correct ones depending on history content
         # it's not currently used
         history_datasets_li = self.instance.datasets.get_datasets()
+        print(history_datasets_li)
 
         genome_dataset_hda_id, gff_dataset_hda_id, transcripts_dataset_hda_id, proteins_datasets_hda_id = None, None, None, None
         interproscan_dataset_hda_id, blast_diamond_dataset_hda_id = None, None
 
-        # Match files imported in history names vs library datasets names to assign their respective hda_id 
+        # Match files imported in history names vs library datasets names to assign their respective hda_id
         for dataset_dict in history_datasets_li:
-            if dataset_dict["name"] == self.datasets_name["genome_file"]:
-                genome_dataset_hda_id = dataset_dict["id"]
-                logging.debug("Genome dataset hda id: %s" % genome_dataset_hda_id)
-            elif dataset_dict["name"] == self.datasets_name["proteins_file"]:
-                proteins_datasets_hda_id = dataset_dict["id"]
-                logging.debug("Proteins dataset hda ID: %s" % proteins_datasets_hda_id)
-            elif dataset_dict["name"] == self.datasets_name["transcripts_file"]:
-                transcripts_dataset_hda_id = dataset_dict["id"]
-                logging.debug("Transcripts dataset hda ID: %s" % transcripts_dataset_hda_id)
-            elif dataset_dict["name"] == self.datasets_name["gff_file"]:
-                gff_dataset_hda_id = dataset_dict["id"]
-                logging.debug("gff dataset hda ID: %s" % gff_dataset_hda_id)
-
-            if "interproscan_file" in self.datasets_name.keys():
-                if dataset_dict["name"] == self.datasets_name["interproscan_file"]:
-                    interproscan_dataset_hda_id = dataset_dict["id"]
-                    logging.debug("InterproScan dataset hda ID: %s" % gff_dataset_hda_id)
-            if "blast_diamond_file" in self.datasets_name.keys():
-                if dataset_dict["name"] == self.datasets_name["blast_diamond_file"]:
-                    blast_diamond_dataset_hda_id = dataset_dict["id"]
-                    logging.debug("Blast Diamond dataset hda ID: %s" % gff_dataset_hda_id)
+            if dataset_dict["history_id"] == self.history_id:
+                if dataset_dict["name"] == self.datasets_name["genome_file"]:
+                    genome_dataset_hda_id = dataset_dict["id"]
+                    logging.debug("Genome dataset hda id: %s" % genome_dataset_hda_id)
+                elif dataset_dict["name"] == self.datasets_name["proteins_file"]:
+                    proteins_datasets_hda_id = dataset_dict["id"]
+                    logging.debug("Proteins dataset hda ID: %s" % proteins_datasets_hda_id)
+                elif dataset_dict["name"] == self.datasets_name["transcripts_file"]:
+                    transcripts_dataset_hda_id = dataset_dict["id"]
+                    logging.debug("Transcripts dataset hda ID: %s" % transcripts_dataset_hda_id)
+                elif dataset_dict["name"] == self.datasets_name["gff_file"]:
+                    gff_dataset_hda_id = dataset_dict["id"]
+                    logging.debug("GFF dataset hda ID: %s" % gff_dataset_hda_id)
+
+                if "interproscan_file" in self.datasets_name.keys():
+                    if dataset_dict["name"] == self.datasets_name["interproscan_file"]:
+                        interproscan_dataset_hda_id = dataset_dict["id"]
+                        logging.debug("InterproScan dataset hda ID: %s" % gff_dataset_hda_id)
+                if "blast_diamond_file" in self.datasets_name.keys():
+                    if dataset_dict["name"] == self.datasets_name["blast_diamond_file"]:
+                        blast_diamond_dataset_hda_id = dataset_dict["id"]
+                        logging.debug("Blast Diamond dataset hda ID: %s" % gff_dataset_hda_id)
 
         # Return a dict made of the hda ids
-        return{"genome_hda_id": genome_dataset_hda_id, "transcripts_hda_id": transcripts_dataset_hda_id,
-               "proteins_hda_id": proteins_datasets_hda_id, "gff_hda_id": gff_dataset_hda_id,
-               "interproscan_hda_id": interproscan_dataset_hda_id, "blast_diamond_hda_id": blast_diamond_dataset_hda_id}
+        return {"genome_hda_id": genome_dataset_hda_id, "transcripts_hda_id": transcripts_dataset_hda_id,
+                "proteins_hda_id": proteins_datasets_hda_id, "gff_hda_id": gff_dataset_hda_id,
+                "interproscan_hda_id": interproscan_dataset_hda_id,
+                "blast_diamond_hda_id": blast_diamond_dataset_hda_id}
 
     def get_organism_id(self):
         """
@@ -753,9 +696,9 @@ class RunWorkflow(speciesData.SpeciesData):
         :return:
         """
 
+        tool_version = "2.3.3"
         time.sleep(3)
 
-
         # Get the ID for the current organism in chado
         org = self.instance.tools.run_tool(
             tool_id="toolshed.g2.bx.psu.edu/repos/gga/chado_organism_get_organisms/organism_get_organisms/2.3.3",
@@ -925,8 +868,7 @@ if __name__ == "__main__":
                 run_workflow_for_current_organism.get_instance_attributes()
 
                 # Import datasets into history and retrieve their hda IDs
-                run_workflow_for_current_organism.import_datasets_into_history()
-                hda_ids = run_workflow_for_current_organism.get_datasets_hda_ids()
+                hda_ids = run_workflow_for_current_organism.import_datasets_into_history()
 
                 # DEBUG
                 # run_workflow_for_current_organism.get_invocation_report(workflow_name="Chado load Tripal synchronize")
@@ -976,6 +918,8 @@ if __name__ == "__main__":
                 # run_workflow_for_current_organism.datamap[GFF_FILE] = {"src": "hda",
                 #                                                        "id": hda_ids["gff_hda_id"]}
 
+                # Ensures galaxy has time to retrieve
+                time.sleep(60)
                 # Run the Chado load Tripal sync workflow with the parameters set above
                 run_workflow_for_current_organism.run_workflow(workflow_path=workflow,
                                                                workflow_parameters=workflow_parameters,
diff --git a/speciesData.py b/speciesData.py
index a52b0e5..dc6d2a4 100644
--- a/speciesData.py
+++ b/speciesData.py
@@ -51,6 +51,10 @@ class SpeciesData:
         self.genus_uppercase = self.genus[0].upper() + self.genus[1:]
         self.chado_species_name = "{0} {1}".format(self.species, self.sex)
         self.full_name = ' '.join(utilities.filter_empty_not_empty_items([self.genus_uppercase, self.species, self.strain, self.sex])["not_empty"])
+        self.full_name = self.full_name.replace("__", "_").replace("_ ", "_").replace(" _", "_")
+        if self.full_name.endswith("_") or self.full_name.endswith(" "):
+            self.full_name = self.full_name[0:-2]
+
         self.full_name_lowercase = self.full_name.lower()
         self.abbreviation = "_".join(utilities.filter_empty_not_empty_items([self.genus_lowercase[0], self.species, self.strain, self.sex])["not_empty"])
         self.genus_species = self.genus_lowercase + "_" + self.species
diff --git a/templates/gspecies_compose_template.yml.j2 b/templates/gspecies_compose_template.yml.j2
index c943c27..d6ca429 100644
--- a/templates/gspecies_compose_template.yml.j2
+++ b/templates/gspecies_compose_template.yml.j2
@@ -50,7 +50,9 @@ services:
             TRIPAL_ENABLE_MODULES: "tripal_analysis_blast tripal_analysis_interpro tripal_analysis_go tripal_rest_api tripal_elasticsearch"
             SITE_NAME: "{{ Genus_species }}"
             ELASTICSEARCH_HOST: elasticsearch.{{ genus_species }}
-            ENABLE_JBROWSE: /jbrowse/?data=data/{{ genus_species_sex }} # WARNING --> the variable "sex" shouldn't be in the compose file (all strains/sex are supposed to be in the same jbrowse)
+            ENABLE_JBROWSE: /jbrowse/?data=data/{{ genus_species_sex }}
+            # This ENABLE_JBROWSE variable should point to the "best assembly" by default --> tag it in the input file and use it to define this variable correctly (also called
+            # unique id in the jbrowse tool parameters == both have to be identical)
             ENABLE_APOLLO: 0
             ENABLE_BLAST: 1
             ENABLE_DOWNLOAD: 1
-- 
GitLab