Previous changeset 72:2bdb748df098 (2024-03-30) Next changeset 74:13ede71c3a4b (2024-04-01) |
Commit message:
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse2 commit b361309b05a861da9b64e1324157a8c32767e0bf |
modified:
jbrowse2.py jbrowse2.xml |
added:
config.json |
b |
diff -r 2bdb748df098 -r 3b2815efa5d9 config.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config.json Mon Apr 01 03:41:42 2024 +0000 |
[ |
@@ -0,0 +1,9 @@ +{ + "assemblies": [], + "configuration": {}, + "connections": [], + "defaultSession": { + "name": "New Session" + }, + "tracks": [] +} \ No newline at end of file |
b |
diff -r 2bdb748df098 -r 3b2815efa5d9 jbrowse2.py --- a/jbrowse2.py Sat Mar 30 22:33:29 2024 +0000 +++ b/jbrowse2.py Mon Apr 01 03:41:42 2024 +0000 |
[ |
b'@@ -8,6 +8,7 @@\n import os\n import re\n import shutil\n+import ssl\n import struct\n import subprocess\n import tempfile\n@@ -39,6 +40,32 @@\n }\n \n \n+INDEX_TEMPLATE = """<!doctype html>\n+<html lang="en" style="height:100%">\n+<head>\n+<meta charset="utf-8"/>\n+<link rel="shortcut icon" href="./favicon.ico"/>\n+<meta name="viewport" content="width=device-width,initial-scale=1"/>\n+<meta name="theme-color" content="#000000"/>\n+<meta name="description" content="A fast and flexible genome browser"/>\n+<link rel="manifest" href="./manifest.json"/>\n+<title>JBrowse</title>\n+</script>\n+</head>\n+<body style="overscroll-behavior:none; height:100%; margin: 0;">\n+<iframe\n+ id="jbframe"\n+ title="JBrowse2"\n+ frameborder="0"\n+ width="100%"\n+ height="100%"\n+ src=\'index_noview.html?config=config.json__SESSION_SPEC__\'>\n+</iframe>\n+</body>\n+</html>\n+"""\n+\n+\n class ColorScaling(object):\n \n COLOR_FUNCTION_TEMPLATE = """\n@@ -376,6 +403,9 @@\n def __init__(self, outdir, jbrowse2path):\n self.assemblies = [] # these require more than a few line diff.\n self.assmeta = {}\n+ self.ass_first_contigs = (\n+ []\n+ ) # for default session - these are read as first line of the assembly .fai\n self.giURL = GALAXY_INFRASTRUCTURE_URL\n self.outdir = outdir\n self.jbrowse2path = jbrowse2path\n@@ -451,6 +481,22 @@\n }\n return wstyle\n \n+ def urllib_get_2018():\n+ # Using a protected member like this is not any more fragile\n+ # than extending the class and using it. I would use it.\n+ url = "https://localhost:6667/my-endpoint"\n+ ssl._create_default_https_context = ssl._create_unverified_context\n+ with urllib.request.urlopen(url=url) as f:\n+ print(f.read().decode("utf-8"))\n+\n+ def urllib_get_2022():\n+ # Finally! Able to use the publice API. Happy happy!\n+ url = "https://localhost:6667/my-endpoint"\n+ scontext = ssl.SSLContext(ssl.PROTOCOL_TLS)\n+ scontext.verify_mode = ssl.VerifyMode.CERT_NONE\n+ with urllib.request.urlopen(url=url, context=scontext) as f:\n+ print(f.read().decode("utf-8"))\n+\n def process_genomes(self, genomes):\n assembly = []\n assmeta = []\n@@ -469,8 +515,9 @@\n fapath = genome_node["path"]\n if not useuri:\n fapath = os.path.realpath(fapath)\n- assem = self.make_assembly(fapath, genome_name, useuri)\n+ assem, first_contig = self.make_assembly(fapath, genome_name, useuri)\n assembly.append(assem)\n+ self.ass_first_contigs.append(first_contig)\n if len(genome_names) == 0:\n this_genome["genome_name"] = genome_name # first one for all tracks\n genome_names.append(genome_name)\n@@ -491,7 +538,12 @@\n this_genome["genome_firstcontig"] = fl\n else:\n try:\n- fl = urllib.request.urlopen(fapath + ".fai").readline()\n+ scontext = ssl.SSLContext(ssl.PROTOCOL_TLS)\n+ scontext.verify_mode = ssl.VerifyMode.CERT_NONE\n+ with urllib.request.urlopen(\n+ url=fapath + ".fai", context=scontext\n+ ) as f:\n+ fl = f.readline()\n except Exception:\n fl = None\n if fl: # is first row of the text fai so the first contig name\n@@ -506,6 +558,9 @@\n return this_genome["genome_name"]\n \n def make_assembly(self, fapath, gname, useuri):\n+ """added code to grab the first contig name and length for broken default session from Anthony and Helena\'s code\n+ that poor Bjoern is trying to figure out.\n+ """\n if useuri:\n faname = fapath\n adapter = {\n@@ -514'..b' os.path.join(self.outdir, "index.html"),\n+ os.path.join(self.outdir, "index_noview.html"),\n+ )\n+\n+ with open(os.path.join(self.outdir, "index.html"), "w") as nind:\n+ nind.write(new_index)\n+ logging.debug(\n+ "#### add_defsession gnome=%s refname=%s\\nsession_spec=%s\\nnew_index=%s"\n+ % (gnome, refName, sess, new_index)\n+ )\n+\n def add_general_configuration(self, data):\n """\n Add some general configuration to the config.json file\n@@ -1426,7 +1557,7 @@\n with open(config_path, "w") as config_file:\n json.dump(self.config_json, config_file, indent=2)\n \n- def clone_jbrowse(self, realclone=True):\n+ def clone_jbrowse(self, realclone=False):\n """Clone a JBrowse directory into a destination directory. This also works in Biocontainer testing now\n Leave as True between version updates on temporary tools - requires manual conda trigger :(\n """\n@@ -1480,14 +1611,7 @@\n \n jc = JbrowseConnector(outdir=args.outdir, jbrowse2path=args.jbrowse2path)\n \n- default_session_data = {\n- "visibility": {\n- "default_on": [],\n- "default_off": [],\n- },\n- "style": {},\n- "style_labels": {},\n- }\n+ default_session_data = {}\n \n for ass in root.findall("assembly"):\n genomes = [\n@@ -1500,7 +1624,16 @@\n for x in ass.findall("metadata/genomes/genome")\n ]\n assref_name = jc.process_genomes(genomes)\n-\n+ if not default_session_data.get(assref_name, None):\n+ default_session_data[assref_name] = {\n+ "tracks": [],\n+ "style": {},\n+ "style_labels": {},\n+ "visibility": {\n+ "default_on": [],\n+ "default_off": [],\n+ },\n+ }\n for track in ass.find("tracks"):\n track_conf = {}\n track_conf["trackfiles"] = []\n@@ -1577,21 +1710,22 @@\n vis = track.attrib.get("visibility", "default_off")\n if not vis:\n vis = "default_off"\n- default_session_data["visibility"][vis].append(key)\n+ default_session_data[assref_name]["visibility"][vis].append(key)\n if track.find("options/style"):\n- default_session_data["style"][key] = {\n+ default_session_data[assref_name]["style"][key] = {\n item.tag: parse_style_conf(item)\n for item in track.find("options/style")\n }\n else:\n- default_session_data["style"][key] = {}\n- logging.debug("@@@@ no options/style found for %s" % (key))\n+ default_session_data[assref_name]["style"][key] = {}\n+ logging.debug("no options/style found for %s" % (key))\n \n if track.find("options/style_labels"):\n- default_session_data["style_labels"][key] = {\n+ default_session_data[assref_name]["style_labels"][key] = {\n item.tag: parse_style_conf(item)\n for item in track.find("options/style_labels")\n }\n+ default_session_data[assref_name]["tracks"].append(key)\n default_session_data["defaultLocation"] = root.find(\n "metadata/general/defaultLocation"\n ).text\n@@ -1616,7 +1750,8 @@\n assconf = jc.config_json.get("assemblies", [])\n assconf += jc.assemblies\n jc.config_json["assemblies"] = assconf\n- logging.debug("&&&assemblies=%s, gnames=%s" % (assconf, jc.genome_names))\n+ logging.debug("assemblies=%s, gnames=%s" % (assconf, jc.genome_names))\n jc.write_config()\n jc.add_default_session(default_session_data)\n+ jc.add_defsess_to_index(default_session_data)\n # jc.text_index() not sure what broke here.\n' |
b |
diff -r 2bdb748df098 -r 3b2815efa5d9 jbrowse2.xml --- a/jbrowse2.xml Sat Mar 30 22:33:29 2024 +0000 +++ b/jbrowse2.xml Mon Apr 01 03:41:42 2024 +0000 |
b |
@@ -1,4 +1,4 @@ - <tool id="jbrowse2" name="JBrowse2" version="@TOOL_VERSION@+@WRAPPER_VERSION@_8" profile="22.05"> + <tool id="jbrowse2" name="JBrowse2" version="@TOOL_VERSION@+@WRAPPER_VERSION@_10" profile="22.05"> <description>genome browser</description> <macros> <import>macros.xml</import> |