diff jbrowse2.py @ 68:c4eb6a85db70 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse2 commit bd958a96352bf8dbd1fdb5a2e994d57a42446f33-dirty
author fubar
date Fri, 29 Mar 2024 07:27:20 +0000
parents c81902830900
children 7230a2422507
line wrap: on
line diff
--- a/jbrowse2.py	Thu Mar 28 12:17:24 2024 +0000
+++ b/jbrowse2.py	Fri Mar 29 07:27:20 2024 +0000
@@ -503,10 +503,6 @@
         self.assemblies += assembly
         self.assmeta[genome_names[0]] = assmeta
         self.tracksToAdd[genome_names[0]] = []
-        if self.config_json.get("assemblies", None):
-            self.config_json["assemblies"] += assembly
-        else:
-            self.config_json["assemblies"] = assembly
         self.genome_names += genome_names
         return this_genome["genome_name"]
 
@@ -1124,6 +1120,7 @@
             % (pafOpts, pgnames, pgpaths, tId)
         )
         for i, gname in enumerate(pgnames):
+            lab = trackData["label"]
             if len(gname.split()) > 1:
                 gname = gname.split()[0]
             passnames.append(gname)
@@ -1135,16 +1132,14 @@
                 )
                 asstrack = self.make_assembly(pgpaths[i], gname, useuri)
                 self.genome_names.append(gname)
-                if self.config_json.get("assemblies", None):
-                    self.config_json["assemblies"].append(asstrack)
+                self.tracksToAdd[gname] = []
+                self.assemblies.append(asstrack)
+                if not useuri:
+                    url = "%s.paf" % (lab)
+                    dest = "%s/%s" % (self.outdir, url)
+                    self.symlink_or_copy(os.path.realpath(data), dest)
                 else:
-                    self.config_json["assemblies"] = [
-                        asstrack,
-                    ]
-        lab = trackData["label"]
-        url = "%s.paf" % (lab)
-        dest = "%s/%s" % (self.outdir, url)
-        self.symlink_or_copy(os.path.realpath(data), dest)
+                    url = data
         trackDict = {
             "type": "SyntenyTrack",
             "trackId": tId,
@@ -1159,6 +1154,10 @@
                 "assemblyNames": passnames,
             },
             "displays": [
+                {
+                    "type": "LGVSyntenyDisplay",
+                    "displayId": "%s-LGVSyntenyDisplay" % lab,
+                },
                 {"type": "DotplotDisplay", "displayId": "%s-DotplotDisplay" % lab},
                 {
                     "type": "LinearComparativeDisplay",
@@ -1168,17 +1167,13 @@
                     "type": "LinearSyntenyDisplay",
                     "displayId": "%s-LinearSyntenyDisplay" % lab,
                 },
-                {
-                    "type": "LGVSyntenyDisplay",
-                    "displayId": "%s-LGVSyntenyDisplay" % lab,
-                },
             ],
         }
         style_json = {
             "displays": [
                 {
-                    "type": "SyntenyDisplay",
-                    "displayId": "%s-SyntenyDisplay" % lab,
+                    "type": "LGVSyntenyDisplay",
+                    "displayId": "%s-LGVSyntenyDisplay" % lab,
                 }
             ]
         }
@@ -1341,43 +1336,44 @@
                         "displays": [style_data],
                     }
                 )
-            # The view for the assembly we're adding
-            view_json = {"type": "LinearGenomeView", "tracks": tracks_data}
-            refName = self.assmeta[gnome][0].get("genome_firstcontig", None)
-            drdict = {
-                "reversed": False,
-                "assemblyName": gnome,
-                "start": 1,
-                "end": 100000,
-                "refName": refName
-            }
-            ddl = default_data.get("defaultLocation", None)
-            if ddl:
-                loc_match = re.search(r"^([^:]+):([\d,]*)\.*([\d,]*)$", ddl)
-                # allow commas like 100,000 but ignore as integer
-                if loc_match:
-                    refName = loc_match.group(1)
-                    drdict["refName"] = refName
-                    if loc_match.group(2) > "":
-                        drdict["start"] = int(loc_match.group(2).replace(",", ""))
-                    if loc_match.group(3) > "":
-                        drdict["end"] = int(loc_match.group(3).replace(",", ""))
+            # paf genomes have no tracks associated so nothing for the view
+            if len(tracks_data) > 0:
+                view_json = {"type": "LinearGenomeView", "tracks": tracks_data}
+                refName = self.assmeta[gnome][0].get("genome_firstcontig", None)
+                drdict = {
+                    "reversed": False,
+                    "assemblyName": gnome,
+                    "start": 1,
+                    "end": 100000,
+                    "refName": refName
+                }
+                ddl = default_data.get("defaultLocation", None)
+                if ddl:
+                    loc_match = re.search(r"^([^:]+):([\d,]*)\.*([\d,]*)$", ddl)
+                    # allow commas like 100,000 but ignore as integer
+                    if loc_match:
+                        refName = loc_match.group(1)
+                        drdict["refName"] = refName
+                        if loc_match.group(2) > "":
+                            drdict["start"] = int(loc_match.group(2).replace(",", ""))
+                        if loc_match.group(3) > "":
+                            drdict["end"] = int(loc_match.group(3).replace(",", ""))
+                    else:
+                        logging.info(
+                            "@@@ regexp could not match contig:start..end in the supplied location %s - please fix"
+                            % ddl
+                        )
+                if drdict.get("refName", None):
+                    # TODO displayedRegions is not just zooming to the region, it hides the rest of the chromosome
+                    view_json["displayedRegions"] = [
+                        drdict,
+                    ]
+                    logging.info("@@@ defaultlocation %s for default session" % drdict)
                 else:
                     logging.info(
-                        "@@@ regexp could not match contig:start..end in the supplied location %s - please fix"
-                        % ddl
+                        "@@@ no contig name found for default session - please add one!"
                     )
-            if drdict.get("refName", None):
-                # TODO displayedRegions is not just zooming to the region, it hides the rest of the chromosome
-                view_json["displayedRegions"] = [
-                    drdict,
-                ]
-                logging.info("@@@ defaultlocation %s for default session" % drdict)
-            else:
-                logging.info(
-                    "@@@ no contig name found for default session - please add one!"
-                )
-            session_views.append(view_json)
+                session_views.append(view_json)
         session_name = default_data.get("session_name", "New session")
         for key, value in mapped_chars.items():
             session_name = session_name.replace(value, key)
@@ -1611,9 +1607,13 @@
     }
     jc.add_general_configuration(general_data)
     trackconf = jc.config_json.get("tracks", [])
+    logging.warn("genome_names=%s" % jc.genome_names)
     for gnome in jc.genome_names:
         trackconf += jc.tracksToAdd[gnome]
     jc.config_json["tracks"] = trackconf
+    assconf = jc.config_json.get("assemblies", [])
+    assconf += jc.assemblies
+    jc.config_json["assemblies"] = assconf
     jc.write_config()
     jc.add_default_session(default_session_data)
     # jc.text_index() not sure what broke here.