Mercurial > repos > fubar > jbrowse2
diff jbrowse2.py @ 17:4c201a3d4755 draft
planemo upload for repository https://github.com/usegalaxy-eu/temporary-tools/tree/master/jbrowse2 commit a37bfdfc108501b11c7b2aa15efb1bd16f0c4b66
author | fubar |
---|---|
date | Sun, 28 Jan 2024 06:48:52 +0000 |
parents | cce8dacb240f |
children | bde6b1d09f7d |
line wrap: on
line diff
--- a/jbrowse2.py Thu Jan 25 07:58:28 2024 +0000 +++ b/jbrowse2.py Sun Jan 28 06:48:52 2024 +0000 @@ -458,6 +458,10 @@ self.genome_name = ( genome_name # first one for all tracks - other than paf ) + self.genome_firstcontig = None + fl = open(fapath, "r").readline().strip().split(">", 1) + if len(fl) > 1: + self.genome_firstcontig = fl[1].strip() if self.config_json.get("assemblies", None): self.config_json["assemblies"] += assemblies else: @@ -560,7 +564,7 @@ # can be served - if public. # dsId = trackData["metadata"]["dataset_id"] # url = "%s/api/datasets/%s/display?to_ext=hic " % (self.giURL, dsId) - hname = trackData["label"] + hname = trackData["name"] dest = os.path.join(self.outdir, hname) cmd = ["cp", data, dest] # these can be very big. @@ -648,7 +652,10 @@ "type": "LinearBasicDisplay", "displayId": "%s-LinearBasicDisplay" % tId, }, - {"type": "LinearArcDisplay", "displayId": "%s-LinearArcDisplay" % tId}, + { + "type": "LinearArcDisplay", + "displayId": "%s-LinearArcDisplay" % tId, + }, ], } style_json = self._prepare_track_style(trackDict) @@ -717,7 +724,10 @@ "type": "LinearBasicDisplay", "displayId": "%s-LinearBasicDisplay" % tId, }, - {"type": "LinearArcDisplay", "displayId": "%s-LinearArcDisplay" % tId}, + { + "type": "LinearArcDisplay", + "displayId": "%s-LinearArcDisplay" % tId, + }, ], } style_json = self._prepare_track_style(trackDict) @@ -906,7 +916,10 @@ "type": "LinearBasicDisplay", "displayId": "%s-LinearBasicDisplay" % tId, }, - {"type": "LinearArcDisplay", "displayId": "%s-LinearArcDisplay" % tId}, + { + "type": "LinearArcDisplay", + "displayId": "%s-LinearArcDisplay" % tId, + }, ], } style_json = self._prepare_track_style(trackDict) @@ -945,7 +958,10 @@ "type": "LinearPileupDisplay", "displayId": "%s-LinearPileupDisplay" % tId, }, - {"type": "LinearArcDisplay", "displayId": "%s-LinearArcDisplay" % tId}, + { + "type": "LinearArcDisplay", + "displayId": "%s-LinearArcDisplay" % tId, + }, ], } style_json = self._prepare_track_style(trackDict) @@ -983,14 +999,14 @@ "assemblyNames": [self.genome_name, pgname], }, # "displays": [ - # { - # "type": "LinearSyntenyDisplay", - # "displayId": "%s-LinearSyntenyDisplay" % tId, - # }, - # { - # "type": "DotPlotDisplay", - # "displayId": "%s-DotPlotDisplay" % tId, - # }, + # { + # "type": "LinearSyntenyDisplay", + # "displayId": "%s-LinearSyntenyDisplay" % tId, + # }, + # { + # "type": "DotPlotDisplay", + # "displayId": "%s-DotPlotDisplay" % tId, + # }, # ], } style_json = self._prepare_track_style(trackDict) @@ -1143,13 +1159,17 @@ ) elif dataset_ext == "blastxml": self.add_blastxml( - dataset_path, outputTrackConfig, track["conf"]["options"]["blast"] + dataset_path, + outputTrackConfig, + track["conf"]["options"]["blast"], ) elif dataset_ext == "vcf": self.add_vcf(dataset_path, outputTrackConfig) elif dataset_ext == "paf": self.add_paf( - dataset_path, outputTrackConfig, track["conf"]["options"]["synteny"] + dataset_path, + outputTrackConfig, + track["conf"]["options"]["synteny"], ) else: log.warn("Do not know how to handle %s", dataset_ext) @@ -1194,43 +1214,42 @@ view_json = {"type": "LinearGenomeView", "tracks": tracks_data} refName = None + drdict = { + "reversed": False, + "assemblyName": self.genome_name, + "start": 0, + "end": 100000, + } + if data.get("defaultLocation", ""): ddl = data["defaultLocation"] - loc_match = re.search( - r"^([^:]+):(\d+)\.+(\d+)$", ddl - ) + loc_match = re.search(r"^([^:]+):(\d*)\.*(\d*)$", ddl) if loc_match: refName = loc_match.group(1) - start = int(loc_match.group(2)) - end = int(loc_match.group(3)) + drdict["refName"] = refName + if loc_match.group(2) > "": + drdict["start"] = int(loc_match.group(2)) + if loc_match.group(3) > "": + drdict["end"] = int(loc_match.group(3)) else: logging.info( "@@@ regexp could not match contig:start..end in the supplied location %s - please fix" % ddl ) - elif self.genome_name is not None: - start = 0 - end = 10000 # Booh, hard coded! waiting for https://github.com/GMOD/jbrowse-components/issues/2708 + elif self.genome_firstcontig is not None: + drdict["refName"] = self.genome_firstcontig logging.info( - "@@@ no defaultlocation found for default session - please add one" + "@@@ no defaultlocation found for default session - using %s as first contig found" + % self.genome_firstcontig ) - if refName is not None: + if drdict.get("refName", None): # TODO displayedRegions is not just zooming to the region, it hides the rest of the chromosome view_json["displayedRegions"] = [ - { - "refName": refName, - "start": start, - "end": end, - "reversed": False, - "assemblyName": self.genome_name, - } + drdict, ] - logging.info( - "@@@ defaultlocation %s for default session" - % view_json["displayedRegions"] - ) + logging.info("@@@ defaultlocation %s for default session" % drdict) else: logging.info( "@@@ no contig name found for default session - please add one!" @@ -1307,12 +1326,19 @@ ]: cmd = ["rm", "-rf", os.path.join(self.outdir, fn)] self.subprocess_check_call(cmd) - cmd = ["cp", os.path.join(INSTALLED_TO, "jb2_webserver.py"), self.outdir] + cmd = [ + "cp", + os.path.join(INSTALLED_TO, "jb2_webserver.py"), + self.outdir, + ] self.subprocess_check_call(cmd) def parse_style_conf(item): - if "type" in item.attrib and item.attrib["type"] in ["boolean", "integer"]: + if "type" in item.attrib and item.attrib["type"] in [ + "boolean", + "integer", + ]: if item.attrib["type"] == "boolean": return item.text in ("yes", "true", "True") elif item.attrib["type"] == "integer": @@ -1379,7 +1405,10 @@ for x in track.findall("files/trackFile"): if is_multi_bigwig: multi_bigwig_paths.append( - (x.attrib["label"], os.path.realpath(x.attrib["path"])) + ( + x.attrib["label"], + os.path.realpath(x.attrib["path"]), + ) ) else: if trackfiles: