diff --git a/bigscape.py b/bigscape.py index fd90492eed8be98625b0d73af359d33e1da05039..9b3b499e3464350c89862219708b7dfd5f81a090 100644 --- a/bigscape.py +++ b/bigscape.py @@ -1314,6 +1314,45 @@ def clusterJsonBatch(bgcs, outputFileBase,matrix,cutoffs=[1.0],damping=0.8,clust bs_families = [{"id": "FAM_{:03d}".format(family), 'members': members, } for family, members in familiesDictReIdxd.items()] + ## BGC Family alignment information + bs_families_alignment = [] + from random import randint # TODO: remove this when real data is implemented + def make_random_tree(bgc_ids): # TODO: remove this when real data is implemented + if len(bgc_ids) == 1: + return "()" + else: + randtree = "({}:0.5,{}:0.5)".format(bgc_ids.pop(), bgc_ids.pop()) + for bgc_id in bgc_ids: + if (randint(0,9) > 7): + randtree = "({}:0.5," + randtree + ":0.5)".format(bgc_id) + return randtree + def make_random_alignment(bgc_genes, ref_gene): + aln = [] + selected_idx = bgc_genes[randint(0, len(bgc_genes) - 1)] + for bgc_gene in bgc_genes: + if bgc_gene == selected_idx: + aln.append([ref_gene, 100.00]) + else: + aln.append([-1, 0.00]) + return aln + for fam_idx, bs_fam in enumerate(bs_families): + assert (len(bs_fam["members"]) > 0), "Error: bs_families[{}] have no members, something went wrong?".format(fam_idx) + ## TODO: please fill this with the real values + ref_bgc = bs_fam["members"][randint(0, len(bs_fam["members"]) - 1)] + newick_tree = make_random_tree(bs_fam["members"]) + ref_genes = [randint(0, len(bs_data[ref_bgc]["orfs"]) - 1)] + aln = make_random_alignment([gidx for gidx in xrange(0, len(bs_data[ref_bgc]["orfs"]))], ref_genes[0]) + ### TODO: remove (TODO) comments when done + fam_alignment = { + "id" : bs_fam["id"], + "ref" : ref_bgc, + "newick" : newick_tree, + "ref_genes" : ref_genes, + "aln" : aln + } + bs_families_alignment.append(fam_alignment) + ## End of BGC Family alignment information + # column1: BGC, column2: clustering pseudo family if verbose: print(" Writing clustering file") @@ -1339,6 +1378,7 @@ def clusterJsonBatch(bgcs, outputFileBase,matrix,cutoffs=[1.0],damping=0.8,clust with open(os.path.join(result_html_path, "bs_networks.js"), "w") as bs_networks_js: bs_networks_js.write("var bs_similarity={};\n".format(json.dumps(bs_distances, indent=4, separators=(',', ':'), sort_keys=True))) bs_networks_js.write("var bs_families={};\n".format(json.dumps(bs_families, indent=4, separators=(',', ':'), sort_keys=True))) + bs_networks_js.write("var bs_families_alignment={};\n".format(json.dumps(bs_families_alignment, indent=4, separators=(',', ':'), sort_keys=True))) if len(clanLabels) > 0: bs_networks_js.write("var bs_clans={};\n".format(json.dumps(bs_clans, indent=4, separators=(',', ':'), sort_keys=True)))