예제 #1
0
def main():
    print "testing hash functions..."
    kmer1 = dna("ATCGATCGATCGATCG")
    kmer2 = dna("ATCGATCGATCGATCG")
    K = 16
    assert hash_forward(kmer1) == hash_forward(kmer2)

    h1, r1 = hash_forward(kmer1)
    h2, r2 = hash_forward(kmer2)
    assert kmer1 == hash_reverse(h1, K)
    assert hash_reverse(r1, K) == "CGATCGATCGATCGAT"
    assert hash_reverse(r1, K) == hash_reverse(r2, K)
    assert hash_reverse(h1, K) == hash_reverse(h2, K)
예제 #2
0
def hash_reverse(hashval, K):
    val = long(hashval) & 3L
    bases = [""] * K
    bases[-1] = bits_to_base(val)
    hashval = long(hashval)

    for i in xrange(1, K):
        hashval = hashval >> 2L
        val = hashval & 3L
        bases[-i - 1] = bits_to_base(val)

    return dna("".join(bases))
예제 #3
0
def rand_dna(L):
    s = bases * (L // 4)
    random.shuffle(s)
    return dna(''.join(s))