Mercurial > repos > fubar > jbrowse2
comparison jbrowse2.py @ 78:7bb6259ea52f 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 05:40:29 +0000 |
| parents | 9e3eb6b26f85 |
| children | 14ecbe46ae9f |
comparison
equal
deleted
inserted
replaced
| 77:3dcda36b97b4 | 78:7bb6259ea52f |
|---|---|
| 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 = ( | 406 self.ass_first_contigs = [] # for default session - these are read as first line of the assembly .fai |
| 407 [] | |
| 408 ) # for default session - these are read as first line of the assembly .fai | |
| 409 self.giURL = GALAXY_INFRASTRUCTURE_URL | 407 self.giURL = GALAXY_INFRASTRUCTURE_URL |
| 410 self.outdir = outdir | 408 self.outdir = outdir |
| 411 self.jbrowse2path = jbrowse2path | 409 self.jbrowse2path = jbrowse2path |
| 412 os.makedirs(self.outdir, exist_ok=True) | 410 os.makedirs(self.outdir, exist_ok=True) |
| 413 self.genome_names = [] | 411 self.genome_names = [] |
| 1370 config_json = json.load(config_file) | 1368 config_json = json.load(config_file) |
| 1371 if self.config_json: | 1369 if self.config_json: |
| 1372 config_json.update(self.config_json) | 1370 config_json.update(self.config_json) |
| 1373 if "defaultSession" in config_json: | 1371 if "defaultSession" in config_json: |
| 1374 session_json = config_json["defaultSession"] | 1372 session_json = config_json["defaultSession"] |
| 1373 session_views = [] | |
| 1375 else: | 1374 else: |
| 1376 session_json = {} | 1375 session_json = {} |
| 1377 session_views = [] | 1376 session_views = [] |
| 1378 for gnome in self.genome_names: | 1377 for gnome in self.genome_names: |
| 1379 tracks_data = [] | 1378 tracks_data = [] |
| 1402 } | 1401 } |
| 1403 ) | 1402 ) |
| 1404 # paf genomes have no tracks associated so nothing for the view | 1403 # paf genomes have no tracks associated so nothing for the view |
| 1405 if len(tracks_data) > 0: | 1404 if len(tracks_data) > 0: |
| 1406 view_json = {"type": "LinearGenomeView", "tracks": tracks_data} | 1405 view_json = {"type": "LinearGenomeView", "tracks": tracks_data} |
| 1407 refName = self.assmeta[gnome][0].get("genome_firstcontig", None) | 1406 logging.debug("Looking for %s in self.ass_ %s" % (gnome, self.ass_first_contigs)) |
| 1408 drdict = { | 1407 first = [x for x in self.ass_first_contigs if x[0] == gnome] |
| 1409 "reversed": False, | 1408 if len(first) > 0: |
| 1410 "assemblyName": gnome, | 1409 [gnome, refName, end] = first[0] |
| 1411 "start": 0, | 1410 start = 1 |
| 1412 "end": 100000, | 1411 end = int(end) |
| 1413 "refName": refName, | 1412 refName = self.assmeta[gnome][0].get("genome_firstcontig", None) |
| 1414 } | 1413 drdict = { |
| 1415 ddl = default_data.get("defaultLocation", None) | 1414 "reversed": False, |
| 1416 if ddl: | 1415 "assemblyName": gnome, |
| 1417 loc_match = re.search(r"^([^:]+):([\d,]*)\.*([\d,]*)$", ddl) | 1416 "start": start, |
| 1418 # allow commas like 100,000 but ignore as integer | 1417 "end": end, |
| 1419 if loc_match: | 1418 "refName": refName, |
| 1420 refName = loc_match.group(1) | 1419 } |
| 1421 drdict["refName"] = refName | 1420 else: |
| 1422 if loc_match.group(2) > "": | 1421 ddl = default_data.get("defaultLocation", None) |
| 1423 drdict["start"] = int(loc_match.group(2).replace(",", "")) | 1422 if ddl: |
| 1424 if loc_match.group(3) > "": | 1423 loc_match = re.search(r"^([^:]+):([\d,]*)\.*([\d,]*)$", ddl) |
| 1425 drdict["end"] = int(loc_match.group(3).replace(",", "")) | 1424 # allow commas like 100,000 but ignore as integer |
| 1426 else: | 1425 if loc_match: |
| 1427 logging.info( | 1426 refName = loc_match.group(1) |
| 1428 "@@@ regexp could not match contig:start..end in the supplied location %s - please fix" | 1427 drdict["refName"] = refName |
| 1429 % ddl | 1428 if loc_match.group(2) > "": |
| 1430 ) | 1429 drdict["start"] = int(loc_match.group(2).replace(",", "")) |
| 1430 if loc_match.group(3) > "": | |
| 1431 drdict["end"] = int(loc_match.group(3).replace(",", "")) | |
| 1432 else: | |
| 1433 logging.info( | |
| 1434 "@@@ regexp could not match contig:start..end in the supplied location %s - please fix" | |
| 1435 % ddl | |
| 1436 ) | |
| 1431 if drdict.get("refName", None): | 1437 if drdict.get("refName", None): |
| 1432 # TODO displayedRegions is not just zooming to the region, it hides the rest of the chromosome | 1438 # TODO displayedRegions is not just zooming to the region, it hides the rest of the chromosome |
| 1433 view_json["displayedRegions"] = [ | 1439 view_json["displayedRegions"] = [ |
| 1434 drdict, | 1440 drdict, |
| 1435 ] | 1441 ] |
| 1436 logging.info("@@@ defaultlocation %s for default session" % drdict) | 1442 logging.info("@@@ defaultlocation %s for default session" % drdict) |
| 1437 else: | 1443 else: |
| 1438 logging.info( | 1444 logging.info( |
| 1439 "@@@ no contig name found for default session - please add one!" | 1445 "@@@ no track location for default session - please add one!" |
| 1440 ) | 1446 ) |
| 1441 session_views.append(view_json) | 1447 session_views.append(view_json) |
| 1442 session_name = default_data.get("session_name", "New session") | 1448 session_name = default_data.get("session_name", "New session") |
| 1443 for key, value in mapped_chars.items(): | 1449 for key, value in mapped_chars.items(): |
| 1444 session_name = session_name.replace(value, key) | 1450 session_name = session_name.replace(value, key) |
| 1488 logging.debug("def ass_first=%s\ndata=%s" % (self.ass_first_contigs, data)) | 1494 logging.debug("def ass_first=%s\ndata=%s" % (self.ass_first_contigs, data)) |
| 1489 for first_contig in self.ass_first_contigs: | 1495 for first_contig in self.ass_first_contigs: |
| 1490 logging.debug("first contig=%s" % self.ass_first_contigs) | 1496 logging.debug("first contig=%s" % self.ass_first_contigs) |
| 1491 [gnome, refName, end] = first_contig | 1497 [gnome, refName, end] = first_contig |
| 1492 start = 0 | 1498 start = 0 |
| 1493 # if False or data.get("defaultLocation", ""): | |
| 1494 # loc_match = re.search( | |
| 1495 # r"^([^:]+):([\d,]*)\.*([\d,]*)$", data["defaultLocation"] | |
| 1496 # ) | |
| 1497 # # loc_match = re.search(r"^(\w+):(\d+)\.+(\d+)$", data["defaultLocation"]) | |
| 1498 # if loc_match: | |
| 1499 # refName = loc_match.group(1) | |
| 1500 # start = int(loc_match.group(2)) | |
| 1501 # end = int(loc_match.group(3)) | |
| 1502 # else: | |
| 1503 aview = { | 1499 aview = { |
| 1504 "assembly": gnome, | 1500 "assembly": gnome, |
| 1505 "loc": "{}:{}..{}".format(refName, start, end), | 1501 "loc": "{}:{}..{}".format(refName, start, end), |
| 1506 "type": "LinearGenomeView", | 1502 "type": "LinearGenomeView", |
| 1507 "tracks": data[gnome]["tracks"], | 1503 "tracks": data[gnome]["tracks"], |
| 1750 assconf = jc.config_json.get("assemblies", []) | 1746 assconf = jc.config_json.get("assemblies", []) |
| 1751 assconf += jc.assemblies | 1747 assconf += jc.assemblies |
| 1752 jc.config_json["assemblies"] = assconf | 1748 jc.config_json["assemblies"] = assconf |
| 1753 logging.debug("assemblies=%s, gnames=%s" % (assconf, jc.genome_names)) | 1749 logging.debug("assemblies=%s, gnames=%s" % (assconf, jc.genome_names)) |
| 1754 jc.write_config() | 1750 jc.write_config() |
| 1755 # jc.add_default_session(default_session_data) | 1751 jc.add_default_session(default_session_data) |
| 1756 jc.add_defsess_to_index(default_session_data) | 1752 jc.add_defsess_to_index(default_session_data) |
| 1757 # jc.text_index() not sure what broke here. | 1753 # jc.text_index() not sure what broke here. |
