Example #1
0
# http://rosalind.info/problems/rsub/

import newick, fasta

def find_rev(t,dnas):
    r = []
    for i in range(len(dnas[t.u])):
        r += [(p[0],p[-1],i,dnas[p[0].u][i]) for p in t.find_rev(dnas,i)]

    return r

if __name__ == '__main__':
    with open('rosalind_rsub.txt') as f:
        nw = f.readline()
        nw.split()
    
        tree = newick.newick_parse(nw)
        fst = f.read()
        dnas,_ = fasta.parse_fasta(fst)
    
    nodes = tree.nodes()
    
    for node in nodes:
        revs = find_rev(node,dnas)
        
        for fc, dest, pos, mid in revs:
            print("%s %s %d %s->%s->%s" % (fc.u, dest.u, pos + 1, dnas[node.u][pos], mid, dnas[dest.u][pos]))
            assert(dnas[node.u][pos] == dnas[dest.u][pos])
Example #2
0
import newick, fasta


def find_rev(t, dnas):
    r = []
    for i in range(len(dnas[t.u])):
        r += [(p[0], p[-1], i, dnas[p[0].u][i]) for p in t.find_rev(dnas, i)]

    return r


if __name__ == '__main__':
    with open('rosalind_rsub.txt') as f:
        nw = f.readline()
        nw.split()

        tree = newick.newick_parse(nw)
        fst = f.read()
        dnas, _ = fasta.parse_fasta(fst)

    nodes = tree.nodes()

    for node in nodes:
        revs = find_rev(node, dnas)

        for fc, dest, pos, mid in revs:
            print("%s %s %d %s->%s->%s" %
                  (fc.u, dest.u, pos + 1, dnas[node.u][pos], mid,
                   dnas[dest.u][pos]))
            assert (dnas[node.u][pos] == dnas[dest.u][pos])
    with open('rosalind_chbp.txt') as f:
        line = f.readline()
        line = line.strip()
        taxa = line.split()

        initialize(taxa)

        chars = []

        char = f.readline()
        char = char.strip()

        while char != "":
            split(char, taxa)
            chars.append(char)

            char = f.readline()
            char = char.strip()

    r = internals.pop()
    output = r.fold() + ";"

    t = newick.newick_parse(output)
    r = newick.edge_splits(t, taxa)

    for char in chars:
        assert (char in r or invert(char) in r)

    print output
Example #4
0
    
    with open('rosalind_chbp.txt') as f:
        line = f.readline()
        line = line.strip()
        taxa = line.split()
    
        initialize(taxa)
    
        chars = []
    
        char = f.readline()
        char = char.strip()
        
        while char != "":
            split(char,taxa)
            chars.append(char)
    
            char = f.readline()
            char = char.strip()

    r = internals.pop()
    output = r.fold() + ";"

    t = newick.newick_parse(output)
    r = newick.edge_splits(t,taxa)
    
    for char in chars:
        assert(char in r or invert(char) in r)

    print output