def main(ddir, rrange = None): read_parameters(ddir) tf = open("%s/tree" % (ddir)) t = newickToTree(tf.read()) root = "N1" parent, children = findParentsAndChildren(t, root) treestr = rootedTreeToStr(parent, children, root) open("%s/tree.full" % (ddir), "w").write(treestr) evidence_cpds = read_evidence_cpds("%s/%s" % (ddir, common.CPD_DIR)) internal_cpds = read_internal_cpds("%s/%s" % (ddir, common.TREE_CPD_FILE)) ef = open("%s/evidence" % (ddir)) evidence = read_evidence(ef) model, observed_species, ancestors = build_model(t, evidence_cpds, internal_cpds) naive_model, spec2, anc2 = build_naive_model(t, evidence_cpds) blast_model, spec3, anc3 = build_blast_model(t, evidence_cpds, internal_cpds) gtg_model, spec4, anc4 = build_gtg_model(t, evidence_cpds, internal_cpds) complete_evidence(evidence, observed_species) # compute posteriors of = open("%s/reaction-scores" % (ddir), "w") of.write("#Generated by \"%s\" on %s\n" % (" ".join(sys.argv), datetime.datetime.now())) if rrange != None: of.write("#Reaction range: %s\n" % (rrange)) compute_reaction_scores(model, naive_model, blast_model, gtg_model, evidence, observed_species, ancestors, of, rrange)
def main(ddir, rrange=None): read_parameters(ddir) tf = open("%s/tree" % (ddir)) t = newickToTree(tf.read()) root = "N1" parent, children = findParentsAndChildren(t, root) treestr = rootedTreeToStr(parent, children, root) open("%s/tree.full" % (ddir), "w").write(treestr) evidence_cpds = read_evidence_cpds("%s/%s" % (ddir, common.CPD_DIR)) internal_cpds = read_internal_cpds("%s/%s" % (ddir, common.TREE_CPD_FILE)) ef = open("%s/evidence" % (ddir)) evidence = read_evidence(ef) model, observed_species, ancestors = build_model(t, evidence_cpds, internal_cpds) naive_model, spec2, anc2 = build_naive_model(t, evidence_cpds) blast_model, spec3, anc3 = build_blast_model(t, evidence_cpds, internal_cpds) gtg_model, spec4, anc4 = build_gtg_model(t, evidence_cpds, internal_cpds) complete_evidence(evidence, observed_species) # compute posteriors of = open("%s/reaction-scores" % (ddir), "w") of.write("#Generated by \"%s\" on %s\n" % (" ".join(sys.argv), datetime.datetime.now())) if rrange != None: of.write("#Reaction range: %s\n" % (rrange)) compute_reaction_scores(model, naive_model, blast_model, gtg_model, evidence, observed_species, ancestors, of, rrange)
def build_dag(T, use_tree = True, blast = True, gtg = True): parents, children = findParentsAndChildren(T, ROOT_NODE) dag = Digraph() observed_species = set() ancestors = set() if use_tree: for u in children: ancestors.add(u) for v in children[u]: dag.add_edge(u, v) for u in T: if u not in children: observed_species.add(u) if blast: dag.add_edge(u, get_blast_node_name(u)) if gtg: dag.add_edge(u, get_gtg_node_name(u)) return dag, observed_species, ancestors
def build_dag(T, use_tree=True, blast=True, gtg=True): parents, children = findParentsAndChildren(T, ROOT_NODE) dag = Digraph() observed_species = set() ancestors = set() if use_tree: for u in children: ancestors.add(u) for v in children[u]: dag.add_edge(u, v) for u in T: if u not in children: observed_species.add(u) if blast: dag.add_edge(u, get_blast_node_name(u)) if gtg: dag.add_edge(u, get_gtg_node_name(u)) return dag, observed_species, ancestors
def estimate(mdir, species_tree_fn, odir): of = open("%s/%s" % (odir, common.TREE_CPD_FILE), "w") models, all_ecs = common.read_models(mdir) t = common.read_tree(species_tree_fn) parents, children = tree.findParentsAndChildren(t, "N1") snadd, sndel, snnoadd, snnodel = 0, 0, 0, 0 all_mutations = {} for i in range(500): nadd, ndel, nnoadd, nnodel, mutations = fitch.parsimony( parents, children, models, all_ecs) snadd += nadd sndel += ndel snnoadd += nnoadd snnodel += nnodel for key in mutations: if key not in all_mutations: all_mutations[key] = [0, 0, 0, 0] all_mutations[key][0] += mutations[key][0] + 1 all_mutations[key][1] += mutations[key][1] + 1 all_mutations[key][2] += mutations[key][2] + 1 all_mutations[key][3] += mutations[key][3] + 1 #print all_mutations keys = all_mutations.keys() keys.sort() for key in keys: nadd, ndel, nnadd, nndel = all_mutations[key] padd = 1.0 * nadd / (nadd + nnadd) pdel = 1.0 * ndel / (ndel + nndel) u, v = key.split("-") of.write("%s\t%s\t%s\t%s\n" % (u, v, padd, pdel)) #print key, padd, pdel, nadd, ndel, nnadd, nndel #print "p-add\t%s\t%s" % (1.0 * snadd / (snadd + snnoadd), snadd) #print "p-del\t%s\t%s" % (1.0 * sndel / (sndel + snnodel), sndel) #print "p-no-add\t%s\t%s" % (1.0 * snnoadd / (snadd + snnoadd), snnoadd) #print "p-no-del\t%s\t%s" % (1.0 * snnodel / (sndel + snnodel), snnodel) of.close()
def estimate(mdir, species_tree_fn, odir): of = open("%s/%s" % (odir, common.TREE_CPD_FILE), "w") models, all_ecs = common.read_models(mdir) t = common.read_tree(species_tree_fn) parents, children = tree.findParentsAndChildren(t, "N1") snadd, sndel, snnoadd, snnodel = 0, 0, 0, 0 all_mutations = {} for i in range(500): nadd, ndel, nnoadd, nnodel, mutations = fitch.parsimony(parents, children, models, all_ecs) snadd += nadd sndel += ndel snnoadd += nnoadd snnodel += nnodel for key in mutations: if key not in all_mutations: all_mutations[key] = [0, 0, 0, 0] all_mutations[key][0] += mutations[key][0] + 1 all_mutations[key][1] += mutations[key][1] + 1 all_mutations[key][2] += mutations[key][2] + 1 all_mutations[key][3] += mutations[key][3] + 1 #print all_mutations keys = all_mutations.keys() keys.sort() for key in keys: nadd, ndel, nnadd, nndel = all_mutations[key] padd = 1.0 * nadd / (nadd + nnadd) pdel = 1.0 * ndel / (ndel + nndel) u, v = key.split("-") of.write("%s\t%s\t%s\t%s\n" % (u, v, padd, pdel)) #print key, padd, pdel, nadd, ndel, nnadd, nndel #print "p-add\t%s\t%s" % (1.0 * snadd / (snadd + snnoadd), snadd) #print "p-del\t%s\t%s" % (1.0 * sndel / (sndel + snnodel), sndel) #print "p-no-add\t%s\t%s" % (1.0 * snnoadd / (snadd + snnoadd), snnoadd) #print "p-no-del\t%s\t%s" % (1.0 * snnodel / (sndel + snnodel), snnodel) of.close()