Mercurial > repos > fubar > jbrowse2
comparison jbrowse2.py @ 38:07849bf248e3 draft
planemo upload for repository https://github.com/usegalaxy-eu/temporary-tools/tree/master/jbrowse2 commit a74e469a81b38c7142f63de510ae31d3754d1767
| author | fubar | 
|---|---|
| date | Fri, 01 Mar 2024 00:40:38 +0000 | 
| parents | 7adde511daa1 | 
| children | 3e7a4ed46551 | 
   comparison
  equal
  deleted
  inserted
  replaced
| 37:7adde511daa1 | 38:07849bf248e3 | 
|---|---|
| 20 JB2VER = "v2.10.2" | 20 JB2VER = "v2.10.2" | 
| 21 # version pinned for cloning | 21 # version pinned for cloning | 
| 22 | 22 | 
| 23 TODAY = datetime.datetime.now().strftime("%Y-%m-%d") | 23 TODAY = datetime.datetime.now().strftime("%Y-%m-%d") | 
| 24 GALAXY_INFRASTRUCTURE_URL = None | 24 GALAXY_INFRASTRUCTURE_URL = None | 
| 25 JB2REL = "v2.10.1" | 25 | 
| 26 # version pinned for cloning | 26 # version pinned for cloning | 
| 27 | 27 | 
| 28 mapped_chars = { | 28 mapped_chars = { | 
| 29 ">": "__gt__", | 29 ">": "__gt__", | 
| 30 "<": "__lt__", | 30 "<": "__lt__", | 
| 372 ) | 372 ) | 
| 373 return metadata | 373 return metadata | 
| 374 | 374 | 
| 375 | 375 | 
| 376 class JbrowseConnector(object): | 376 class JbrowseConnector(object): | 
| 377 def __init__(self, outdir, genomes): | 377 def __init__(self, outdir, jbrowse2path, genomes): | 
| 378 self.giURL = GALAXY_INFRASTRUCTURE_URL | 378 self.giURL = GALAXY_INFRASTRUCTURE_URL | 
| 379 self.outdir = outdir | 379 self.outdir = outdir | 
| 380 self.jbrowse2path = jbrowse2path | |
| 380 os.makedirs(self.outdir, exist_ok=True) | 381 os.makedirs(self.outdir, exist_ok=True) | 
| 381 self.genome_paths = genomes | 382 self.genome_paths = genomes | 
| 382 self.genome_name = None | 383 self.genome_name = None | 
| 383 self.genome_names = [] | 384 self.genome_names = [] | 
| 384 self.trackIdlist = [] | 385 self.trackIdlist = [] | 
| 1306 self.config_json.update(config_json) | 1307 self.config_json.update(config_json) | 
| 1307 with open(config_path, "w") as config_file: | 1308 with open(config_path, "w") as config_file: | 
| 1308 json.dump(self.config_json, config_file, indent=2) | 1309 json.dump(self.config_json, config_file, indent=2) | 
| 1309 | 1310 | 
| 1310 def clone_jbrowse(self): | 1311 def clone_jbrowse(self): | 
| 1311 """Clone a JBrowse directory into a destination directory.""" | 1312 """Clone a JBrowse directory into a destination directory. This also works in Biocontainer testing now """ | 
| 1312 # dest = os.path.realpath(self.outdir) | |
| 1313 dest = self.outdir | 1313 dest = self.outdir | 
| 1314 cmd = ["rm", "-rf", dest + "/*"] | 1314 #self.subprocess_check_call(['jbrowse', 'create', dest, '--tag', f"{JB_VER}"]) | 
| 1315 self.subprocess_check_call(cmd) | 1315 shutil.copytree(self.jbrowse2path, dest, dirs_exist_ok=True) | 
| 1316 cmd = ["jbrowse", "create", dest, "-t", JB2VER, "-f"] | |
| 1317 self.subprocess_check_call(cmd) | |
| 1318 for fn in [ | 1316 for fn in [ | 
| 1319 "asset-manifest.json", | 1317 "asset-manifest.json", | 
| 1320 "favicon.ico", | 1318 "favicon.ico", | 
| 1321 "robots.txt", | 1319 "robots.txt", | 
| 1322 "umd_plugin.js", | 1320 "umd_plugin.js", | 
| 1323 "version.txt", | 1321 "version.txt", | 
| 1324 "test_data", | 1322 "test_data", | 
| 1325 ]: | 1323 ]: | 
| 1326 cmd = ["rm", "-rf", os.path.join(self.outdir, fn)] | 1324 cmd = ["rm", "-rf", os.path.join(dest, fn)] | 
| 1327 self.subprocess_check_call(cmd) | 1325 self.subprocess_check_call(cmd) | 
| 1328 cmd = [ | 1326 cmd = ["cp", os.path.join(INSTALLED_TO, "jb2_webserver.py"), dest] | 
| 1329 "cp", | |
| 1330 os.path.join(INSTALLED_TO, "jb2_webserver.py"), | |
| 1331 self.outdir, | |
| 1332 ] | |
| 1333 self.subprocess_check_call(cmd) | 1327 self.subprocess_check_call(cmd) | 
| 1334 | 1328 | 
| 1335 | 1329 | 
| 1336 def parse_style_conf(item): | 1330 def parse_style_conf(item): | 
| 1337 if "type" in item.attrib and item.attrib["type"] in [ | 1331 if "type" in item.attrib and item.attrib["type"] in [ | 
| 1347 | 1341 | 
| 1348 | 1342 | 
| 1349 if __name__ == "__main__": | 1343 if __name__ == "__main__": | 
| 1350 parser = argparse.ArgumentParser(description="", epilog="") | 1344 parser = argparse.ArgumentParser(description="", epilog="") | 
| 1351 parser.add_argument("--xml", help="Track Configuration") | 1345 parser.add_argument("--xml", help="Track Configuration") | 
| 1346 parser.add_argument("--jbrowse2path", help="Path to JBrowse2 directory in biocontainer or Conda") | |
| 1352 parser.add_argument("--outdir", help="Output directory", default="out") | 1347 parser.add_argument("--outdir", help="Output directory", default="out") | 
| 1353 parser.add_argument("--version", "-V", action="version", version="%(prog)s 2.0.1") | 1348 parser.add_argument("--version", "-V", action="version", version="%(prog)s 2.0.1") | 
| 1354 args = parser.parse_args() | 1349 args = parser.parse_args() | 
| 1355 tree = ET.parse(args.xml) | 1350 tree = ET.parse(args.xml) | 
| 1356 root = tree.getroot() | 1351 root = tree.getroot() | 
| 1362 # so we'll prepend `http://` and hope for the best. Requests *should* | 1357 # so we'll prepend `http://` and hope for the best. Requests *should* | 
| 1363 # be GET and not POST so it should redirect OK | 1358 # be GET and not POST so it should redirect OK | 
| 1364 GALAXY_INFRASTRUCTURE_URL = "http://" + GALAXY_INFRASTRUCTURE_URL | 1359 GALAXY_INFRASTRUCTURE_URL = "http://" + GALAXY_INFRASTRUCTURE_URL | 
| 1365 jc = JbrowseConnector( | 1360 jc = JbrowseConnector( | 
| 1366 outdir=args.outdir, | 1361 outdir=args.outdir, | 
| 1362 jbrowse2path=args.jbrowse2path, | |
| 1367 genomes=[ | 1363 genomes=[ | 
| 1368 { | 1364 { | 
| 1369 "path": os.path.realpath(x.attrib["path"]), | 1365 "path": os.path.realpath(x.attrib["path"]), | 
| 1370 "meta": metadata_from_node(x.find("metadata")), | 1366 "meta": metadata_from_node(x.find("metadata")), | 
| 1371 } | 1367 } | 
