Mercurial > repos > fubar > jbrowse2
comparison autogenJB2.py @ 19:bde6b1d09f7d draft
planemo upload for repository https://github.com/usegalaxy-eu/temporary-tools/tree/master/jbrowse2 commit 1290bf486bc55c02fecd0327de10a28655a18e81-dirty
| author | fubar |
|---|---|
| date | Tue, 30 Jan 2024 06:05:03 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 18:2e6c48910819 | 19:bde6b1d09f7d |
|---|---|
| 1 import argparse | |
| 2 import os | |
| 3 | |
| 4 from jbrowse2 import jbrowseConnector as jbC | |
| 5 | |
| 6 | |
| 7 | |
| 8 | |
| 9 if __name__ == "__main__": | |
| 10 parser = argparse.ArgumentParser(description="", epilog="") | |
| 11 parser.add_argument("--yaml", help="Track Configuration") | |
| 12 parser.add_argument("--outdir", help="Output directory", default="out") | |
| 13 parser.add_argument("--version", "-V", action="version", version="%(prog)s 0.0.1") | |
| 14 args = parser.parse_args() | |
| 15 if os.path.exists(args.outdir): | |
| 16 root = args.outdir | |
| 17 dirList = os.scandir(root) | |
| 18 subdirs = [f.path for f in dirList if f.is_dir()] | |
| 19 genome_paths = [f.path for f in dirList if f.name.startswith('genome') and f.is_file()] | |
| 20 if len(genome_paths) > 0: | |
| 21 genome_fnames = [os.path.basename(x).split('_')[2:] for x in genome_paths] # expect genome_1_genomename.fasta etc | |
| 22 jc = jbC( | |
| 23 outdir=args.outdir, | |
| 24 genomes=[ | |
| 25 { | |
| 26 "path": x, | |
| 27 "meta": {"name" : genome_fnames[i], }, | |
| 28 } | |
| 29 for i,x in enumerate(genome_paths) | |
| 30 ], | |
| 31 ) | |
| 32 jc.process_genomes() | |
| 33 # .add_default_view() replace from https://github.com/abretaud/tools-iuc/blob/jbrowse2/tools/jbrowse2/jbrowse2.py | |
| 34 default_session_data = { | |
| 35 "visibility": { | |
| 36 "default_on": [], | |
| 37 "default_off": [], | |
| 38 }, | |
| 39 "style": {}, | |
| 40 "style_labels": {}, | |
| 41 } | |
| 42 | |
| 43 track_paths = [x for x in genome_paths if not x.startswith('genome') and x.is_file()] | |
| 44 for i, track in enumerate(track_paths): | |
| 45 track_conf = {} | |
| 46 track_conf['format']= os.path.basename(track).split('_')[0] | |
| 47 track_conf["name"] = os.path.basename(track).split('_')[2:] # expect genome_1_genomename.fasta etc | |
| 48 fext = os.path.splitext(os.path.basename(track)).replace('.','') | |
| 49 track_conf["label"] = "%s_%i" % (os.path.basename(track), i) | |
| 50 track_conf["trackfiles"] = [] | |
| 51 keys = jc.process_annotations(track_conf) | |
| 52 | |
| 53 if keys: | |
| 54 for key in keys: | |
| 55 default_session_data["visibility"][ | |
| 56 track.attrib.get("visibility", "default_off") | |
| 57 ].append(key) | |
| 58 if track_conf.get("style", None): | |
| 59 default_session_data["style"][key] = track_conf[ | |
| 60 "style" | |
| 61 ] # TODO do we need this anymore? | |
| 62 if track_conf.get("style_lables", None): | |
| 63 default_session_data["style_labels"][key] = track_conf.get( | |
| 64 "style_labels", None | |
| 65 ) | |
| 66 # default_session_data["defaultLocation"] = root.find( | |
| 67 # "metadata/general/defaultLocation" | |
| 68 # ).text | |
| 69 # default_session_data["session_name"] = root.find( | |
| 70 # "metadata/general/session_name" | |
| 71 # ).text | |
| 72 # general_data = { | |
| 73 # "analytics": root.find("metadata/general/analytics").text, | |
| 74 # "primary_color": root.find("metadata/general/primary_color").text, | |
| 75 # "secondary_color": root.find("metadata/general/secondary_color").text, | |
| 76 # "tertiary_color": root.find("metadata/general/tertiary_color").text, | |
| 77 # "quaternary_color": root.find("metadata/general/quaternary_color").text, | |
| 78 # "font_size": root.find("metadata/general/font_size").text, | |
| 79 # } | |
| 80 # jc.add_general_configuration(general_data) | |
| 81 trackconf = jc.config_json.get("tracks", None) | |
| 82 if trackconf: | |
| 83 jc.config_json["tracks"].update(jc.tracksToAdd) | |
| 84 else: | |
| 85 jc.config_json["tracks"] = jc.tracksToAdd | |
| 86 jc.write_config() | |
| 87 jc.add_default_session(default_session_data) | |
| 88 # jc.text_index() not sure what broke here. |
