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)
Example #2
0
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
Example #4
0
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()