Mercurial > repos > fubar > jbrowse2
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/autogenJB2.py Tue Jan 30 06:05:03 2024 +0000 @@ -0,0 +1,88 @@ +import argparse +import os + +from jbrowse2 import jbrowseConnector as jbC + + + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="", epilog="") + parser.add_argument("--yaml", help="Track Configuration") + parser.add_argument("--outdir", help="Output directory", default="out") + parser.add_argument("--version", "-V", action="version", version="%(prog)s 0.0.1") + args = parser.parse_args() + if os.path.exists(args.outdir): + root = args.outdir + dirList = os.scandir(root) + subdirs = [f.path for f in dirList if f.is_dir()] + genome_paths = [f.path for f in dirList if f.name.startswith('genome') and f.is_file()] + if len(genome_paths) > 0: + genome_fnames = [os.path.basename(x).split('_')[2:] for x in genome_paths] # expect genome_1_genomename.fasta etc + jc = jbC( + outdir=args.outdir, + genomes=[ + { + "path": x, + "meta": {"name" : genome_fnames[i], }, + } + for i,x in enumerate(genome_paths) + ], + ) + jc.process_genomes() + # .add_default_view() replace from https://github.com/abretaud/tools-iuc/blob/jbrowse2/tools/jbrowse2/jbrowse2.py + default_session_data = { + "visibility": { + "default_on": [], + "default_off": [], + }, + "style": {}, + "style_labels": {}, + } + + track_paths = [x for x in genome_paths if not x.startswith('genome') and x.is_file()] + for i, track in enumerate(track_paths): + track_conf = {} + track_conf['format']= os.path.basename(track).split('_')[0] + track_conf["name"] = os.path.basename(track).split('_')[2:] # expect genome_1_genomename.fasta etc + fext = os.path.splitext(os.path.basename(track)).replace('.','') + track_conf["label"] = "%s_%i" % (os.path.basename(track), i) + track_conf["trackfiles"] = [] + keys = jc.process_annotations(track_conf) + + if keys: + for key in keys: + default_session_data["visibility"][ + track.attrib.get("visibility", "default_off") + ].append(key) + if track_conf.get("style", None): + default_session_data["style"][key] = track_conf[ + "style" + ] # TODO do we need this anymore? + if track_conf.get("style_lables", None): + default_session_data["style_labels"][key] = track_conf.get( + "style_labels", None + ) + # default_session_data["defaultLocation"] = root.find( + # "metadata/general/defaultLocation" + # ).text + # default_session_data["session_name"] = root.find( + # "metadata/general/session_name" + # ).text + # general_data = { + # "analytics": root.find("metadata/general/analytics").text, + # "primary_color": root.find("metadata/general/primary_color").text, + # "secondary_color": root.find("metadata/general/secondary_color").text, + # "tertiary_color": root.find("metadata/general/tertiary_color").text, + # "quaternary_color": root.find("metadata/general/quaternary_color").text, + # "font_size": root.find("metadata/general/font_size").text, + # } + # jc.add_general_configuration(general_data) + trackconf = jc.config_json.get("tracks", None) + if trackconf: + jc.config_json["tracks"].update(jc.tracksToAdd) + else: + jc.config_json["tracks"] = jc.tracksToAdd + jc.write_config() + jc.add_default_session(default_session_data) + # jc.text_index() not sure what broke here.