def main(): """cblaster entry point.""" args = parsers.parse_args(sys.argv[1:]) if args.debug: LOG.setLevel(logging.DEBUG) if args.subcommand == "config": if not args.email and not args.api_key: LOG.info( "No e-mail or API key specified; if this is your first time" " running cblaster config, please make sure you provide one.") config.write_config_file( email=args.email, api_key=args.api_key, max_tries=args.max_tries, ) return # Set BioPython Entrez parameters set_entrez() if args.subcommand == "makedb": database.makedb( args.paths, database=args.name, cpus=args.cpus, batch=args.batch, force=args.force, ) elif args.subcommand == "search": cblaster( query_file=args.query_file, query_ids=args.query_ids, query_profiles=args.query_profiles, mode=args.mode, databases=args.database, database_pfam=args.database_pfam, gap=args.gap, unique=args.unique, min_hits=args.min_hits, require=args.require, percentage=args.percentage, min_identity=args.min_identity, min_coverage=args.min_coverage, max_evalue=args.max_evalue, entrez_query=args.entrez_query, output=args.output, output_hide_headers=args.output_hide_headers, output_delimiter=args.output_delimiter, output_decimals=args.output_decimals, output_sort_clusters=args.sort_clusters, binary=args.binary, binary_hide_headers=args.binary_hide_headers, binary_delimiter=args.binary_delimiter, binary_key=args.binary_key, binary_attr=args.binary_attr, binary_decimals=args.binary_decimals, rid=args.rid, session_file=args.session_file, indent=args.indent, recompute=args.recompute, plot=args.plot, max_plot_clusters=args.max_plot_clusters, blast_file=args.blast_file, ipg_file=args.ipg_file, hitlist_size=args.hitlist_size, cpus=args.cpus, intermediate_genes=args.intermediate_genes, intermediate_gene_distance=args.max_distance, intermediate_max_clusters=args.maximum_clusters, testing=args.testing, ) elif args.subcommand == "gui": from cblaster.gui.main import cblaster_gui cblaster_gui() elif args.subcommand == "gne": gne( args.session, args.output, max_gap=args.max_gap, samples=args.samples, scale=args.scale, delimiter=args.delimiter, hide_headers=args.hide_headers, decimals=args.decimals, plot=args.plot, testing=args.testing, ) elif args.subcommand == "extract": extract.extract( args.session, extract_seqs=args.extract_sequences, output=args.output, queries=args.queries, organisms=args.organisms, scaffolds=args.scaffolds, name_only=args.name_only, delimiter=args.delimiter, ) elif args.subcommand == "extract_clusters": extract_clusters.extract_clusters( args.session, args.output, prefix=args.prefix, cluster_numbers=args.clusters, score_threshold=args.score_threshold, organisms=args.organisms, scaffolds=args.scaffolds, format_=args.format, max_clusters=args.maximum_clusters, ) elif args.subcommand == "plot_clusters": plot_clusters.plot_clusters( session=args.session, cluster_numbers=args.clusters, score_threshold=args.score_threshold, organisms=args.organisms, scaffolds=args.scaffolds, plot_outfile=args.output, max_clusters=args.maximum_clusters, testing=args.testing, )
def main(): """cblaster entry point.""" args = parsers.parse_args(sys.argv[1:]) if args.debug: LOG.setLevel(logging.DEBUG) if args.subcommand == "makedb": makedb(args.genbanks, args.filename, args.indent) elif args.subcommand == "search": cblaster( query_file=args.query_file, query_ids=args.query_ids, mode=args.mode, json_db=args.json_db, database=args.database, gap=args.gap, unique=args.unique, min_hits=args.min_hits, require=args.require, min_identity=args.min_identity, min_coverage=args.min_coverage, max_evalue=args.max_evalue, entrez_query=args.entrez_query, output=args.output, output_hide_headers=args.output_hide_headers, output_delimiter=args.output_delimiter, output_decimals=args.output_decimals, binary=args.binary, binary_hide_headers=args.binary_hide_headers, binary_delimiter=args.binary_delimiter, binary_key=args.binary_key, binary_attr=args.binary_attr, binary_decimals=args.binary_decimals, rid=args.rid, session_file=args.session_file, indent=args.indent, recompute=args.recompute, plot=args.plot, blast_file=args.blast_file, ipg_file=args.ipg_file, hitlist_size=args.hitlist_size, ) elif args.subcommand == "gui": from cblaster.gui.main import cblaster_gui cblaster_gui() elif args.subcommand == "gne": gne( args.session, args.output, max_gap=args.max_gap, samples=args.samples, scale=args.scale, delimiter=args.delimiter, hide_headers=args.hide_headers, decimals=args.decimals, plot=args.plot, ) elif args.subcommand == "extract": extract.extract( args.session, download=args.download, output=args.output, queries=args.queries, organisms=args.organisms, scaffolds=args.scaffolds, name_only=args.name_only, delimiter=args.delimiter, )
def run_cblaster(values): """Handles conversion of PySimpleGUI values to cblaster parameters. - Know which workflow tab we're on (search or makedb) - search - Know which search mode tab we're on - if remote, use entrez query, database, RID - if local, jdb and database Args: values (dict): Dictionary of values from PySimpleGUI. """ if values["cblaster_tabs"] == "Search": args = dict( query_file=values["query_file"], query_ids=values["query_ids"], session_file=values["session_file"], mode=values["search_mode"], gap=int(values["gap"]), unique=int(values["unique"]), min_hits=int(values["min_hits"]), require=values["require"], min_identity=float(values["min_identity"]), min_coverage=float(values["min_coverage"]), max_evalue=float(values["max_evalue"]), recompute=values["recompute"], ) if values["search_mode"] == "remote": args.update(database=values["database"], entrez_query=values["entrez_query"], rid=values["rid"]) else: args.update(database=values["dmnd_database"], json_db=values["json_db"]) if values["summary_gen"]: summary = None if values["summary_text"]: summary = values["summary_text"] args.update(output=summary, output_decimals=values["summary_decimals"], output_delimiter=values["summary_delimiter"], output_hide_headers=values["summary_hide_headers"]) if values["binary_gen"]: args.update( binary=values["binary_text"], binary_delimiter=values["binary_delimiter"], binary_hide_headers=values["binary_hide_headers"], binary_decimals=values["binary_decimals"], binary_attr=values["binary_attr"], binary_key=getattr(builtins, values["binary_key"]), ) if values["figure_gen"]: plot = values["figure_text"] if values["figure_text"] else True args.update(plot=plot) # Overwrite any placeholder text for arg, value in args.items(): if isinstance(value, str) and value.startswith("e.g."): args[arg] = "" main.cblaster(**args) elif values["cblaster_tabs"] == "Makedb": main.makedb(genbanks=values["makedb_genbanks"].split(";"), filename=values["makedb_filename"], indent=values["json_indent"]) elif values["cblaster_tabs"] == "Neighbourhood": main.gne( session=values["session"], output=values["output"], max_gap=int(values["max_gap"]), samples=int(values["samples"]), scale=values["scale"], ) elif values["cblaster_tabs"] == "Extract": cb_extract.extract( values["extract_session"], in_cluster=values["in_cluster"], delimiter=values["delimiter"], name_only=values["name_only"], download=values["download"], output=values["extract_output"], queries=values["queries"], organisms=values["organisms"], scaffolds=values["scaffolds"], ) else: raise ValueError( "Expected 'Search', 'Makedb', 'Neighbourhood' or 'Extract'")