Mercurial > repos > fubar > jbrowse2
comparison jbrowse2.py @ 79:14ecbe46ae9f draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse2 commit d03454f949af9f3fff638f6a3e52fe42bc96be3b-dirty
author | fubar |
---|---|
date | Mon, 01 Apr 2024 09:36:07 +0000 |
parents | 7bb6259ea52f |
children | dff27c9f6d72 |
comparison
equal
deleted
inserted
replaced
78:7bb6259ea52f | 79:14ecbe46ae9f |
---|---|
401 | 401 |
402 class JbrowseConnector(object): | 402 class JbrowseConnector(object): |
403 def __init__(self, outdir, jbrowse2path): | 403 def __init__(self, outdir, jbrowse2path): |
404 self.assemblies = [] # these require more than a few line diff. | 404 self.assemblies = [] # these require more than a few line diff. |
405 self.assmeta = {} | 405 self.assmeta = {} |
406 self.ass_first_contigs = [] # for default session - these are read as first line of the assembly .fai | 406 self.ass_first_contigs = ( |
407 [] | |
408 ) # for default session - these are read as first line of the assembly .fai | |
407 self.giURL = GALAXY_INFRASTRUCTURE_URL | 409 self.giURL = GALAXY_INFRASTRUCTURE_URL |
408 self.outdir = outdir | 410 self.outdir = outdir |
409 self.jbrowse2path = jbrowse2path | 411 self.jbrowse2path = jbrowse2path |
410 os.makedirs(self.outdir, exist_ok=True) | 412 os.makedirs(self.outdir, exist_ok=True) |
411 self.genome_names = [] | 413 self.genome_names = [] |
1400 "displays": [style_data], | 1402 "displays": [style_data], |
1401 } | 1403 } |
1402 ) | 1404 ) |
1403 # paf genomes have no tracks associated so nothing for the view | 1405 # paf genomes have no tracks associated so nothing for the view |
1404 if len(tracks_data) > 0: | 1406 if len(tracks_data) > 0: |
1405 view_json = {"type": "LinearGenomeView", "tracks": tracks_data} | 1407 view_json = { |
1406 logging.debug("Looking for %s in self.ass_ %s" % (gnome, self.ass_first_contigs)) | 1408 "type": "LinearGenomeView", |
1409 "offsetPx": 0, | |
1410 "minimized": False, | |
1411 "tracks": tracks_data, | |
1412 } | |
1413 logging.debug( | |
1414 "Looking for %s in self.ass_ %s" % (gnome, self.ass_first_contigs) | |
1415 ) | |
1407 first = [x for x in self.ass_first_contigs if x[0] == gnome] | 1416 first = [x for x in self.ass_first_contigs if x[0] == gnome] |
1408 if len(first) > 0: | 1417 if len(first) > 0: |
1409 [gnome, refName, end] = first[0] | 1418 [gnome, refName, end] = first[0] |
1410 start = 1 | 1419 start = 0 |
1411 end = int(end) | 1420 end = int(end) |
1412 refName = self.assmeta[gnome][0].get("genome_firstcontig", None) | 1421 refName = self.assmeta[gnome][0].get("genome_firstcontig", None) |
1413 drdict = { | 1422 drdict = { |
1423 "refName": refName, | |
1424 "start": start, | |
1425 "end": end, | |
1414 "reversed": False, | 1426 "reversed": False, |
1415 "assemblyName": gnome, | 1427 "assemblyName": gnome, |
1416 "start": start, | |
1417 "end": end, | |
1418 "refName": refName, | |
1419 } | 1428 } |
1420 else: | 1429 else: |
1421 ddl = default_data.get("defaultLocation", None) | 1430 ddl = default_data.get("defaultLocation", None) |
1422 if ddl: | 1431 if ddl: |
1423 loc_match = re.search(r"^([^:]+):([\d,]*)\.*([\d,]*)$", ddl) | 1432 loc_match = re.search(r"^([^:]+):([\d,]*)\.*([\d,]*)$", ddl) |
1424 # allow commas like 100,000 but ignore as integer | 1433 # allow commas like 100,000 but ignore as integer |
1425 if loc_match: | 1434 if loc_match: |
1426 refName = loc_match.group(1) | 1435 refName = loc_match.group(1) |
1427 drdict["refName"] = refName | 1436 drdict["refName"] = refName |
1428 if loc_match.group(2) > "": | 1437 if loc_match.group(2) > "": |
1429 drdict["start"] = int(loc_match.group(2).replace(",", "")) | 1438 drdict["start"] = int( |
1439 loc_match.group(2).replace(",", "") | |
1440 ) | |
1430 if loc_match.group(3) > "": | 1441 if loc_match.group(3) > "": |
1431 drdict["end"] = int(loc_match.group(3).replace(",", "")) | 1442 drdict["end"] = int(loc_match.group(3).replace(",", "")) |
1432 else: | 1443 else: |
1433 logging.info( | 1444 logging.info( |
1434 "@@@ regexp could not match contig:start..end in the supplied location %s - please fix" | 1445 "@@@ regexp could not match contig:start..end in the supplied location %s - please fix" |
1461 with open(self.config_json_file, "w") as config_file: | 1472 with open(self.config_json_file, "w") as config_file: |
1462 json.dump(self.config_json, config_file, indent=2) | 1473 json.dump(self.config_json, config_file, indent=2) |
1463 | 1474 |
1464 def add_defsess_to_index(self, data): | 1475 def add_defsess_to_index(self, data): |
1465 """ | 1476 """ |
1466 Broken in Anthony's PR because only ever dealt with the first assembly. | 1477 This was included on request of the new codeowner from Anthony's IUC PR. |
1467 | 1478 Now fixed to deal with each assembly and tracks separately. |
1479 Originally used only the first assembly, putting all tracks there and | |
1480 generally falling apart when tested with 2 or more. Seems ironic that | |
1481 this vital feature was never tested given the rejection of my original IUC PR | |
1482 because it was not there. And no, reviewer, I do not want this important piece of history | |
1483 removed. I prefer that it remain here since it has caused me considerable discomfort. | |
1484 | |
1485 ---------------------------------------------------------- | |
1468 Add some default session settings: set some assemblies/tracks on/off | 1486 Add some default session settings: set some assemblies/tracks on/off |
1469 | 1487 |
1470 This allows to select a default view: | 1488 This allows to select a default view: |
1471 - jb type (Linear, Circular, etc) | 1489 - jb type (Linear, Circular, etc) |
1472 - default location on an assembly | 1490 - default location on an assembly |
1746 assconf = jc.config_json.get("assemblies", []) | 1764 assconf = jc.config_json.get("assemblies", []) |
1747 assconf += jc.assemblies | 1765 assconf += jc.assemblies |
1748 jc.config_json["assemblies"] = assconf | 1766 jc.config_json["assemblies"] = assconf |
1749 logging.debug("assemblies=%s, gnames=%s" % (assconf, jc.genome_names)) | 1767 logging.debug("assemblies=%s, gnames=%s" % (assconf, jc.genome_names)) |
1750 jc.write_config() | 1768 jc.write_config() |
1751 jc.add_default_session(default_session_data) | 1769 # jc.add_default_session(default_session_data) |
1770 # note that this can be left in the config.json but has NO EFFECT if add_defsess_to_index is called. | |
1752 jc.add_defsess_to_index(default_session_data) | 1771 jc.add_defsess_to_index(default_session_data) |
1753 # jc.text_index() not sure what broke here. | 1772 # jc.text_index() not sure what broke here. |