-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpoly_perf.py
73 lines (50 loc) · 2.63 KB
/
poly_perf.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
RCARR = [''] * 256
RCARR[ord('A')] = 'T'
RCARR[ord('T')] = 'A'
RCARR[ord('C')] = 'G'
RCARR[ord('G')] = 'C'
RCARR[ord('N')] = 'N'
RCARR[ord('a')] = 't'
RCARR[ord('t')] = 'a'
RCARR[ord('c')] = 'g'
RCARR[ord('g')] = 'c'
RCARR[ord('g')] = 'c'
RCDICT = {'A': 'T', 'T': 'A', 'G': 'C', 'C': 'G', 'N': 'N'}
def rc_func(c):
if c == 'A': return 'T'
elif c == 'T': return 'A'
elif c == 'C': return 'G'
elif c == 'G': return 'C'
return ""
def rev_comp_arr_map(seq):
return "".join(map(lambda x: RCARR[ord(x)], seq[::-1]))
def rev_comp_arr_for(seq):
res = ""
for i in range(len(seq) - 1, -1, -1):
res += RCARR[ord(seq[i])]
return res
def rev_comp_dict_map(seq):
return "".join(map(lambda x: RCDICT[x], seq[::-1]))
def rev_comp_dict_for(seq):
res = ""
for i in range(len(seq) - 1, -1, -1):
res += RCDICT[seq[i]]
return res
def rev_comp_func_map(seq):
return "".join(map(rc_func, seq[::-1]))
def rev_comp_func_for(seq):
res = ""
for i in range(len(seq) - 1, -1, -1):
res += rc_func(seq[i])
return res
TEST_SEQ = [
"GTGTACTTCGTTCAGTTACCAATTTGGGTGTTTAGCATGGTCATCGCCTACCGTGACAAGAAAGTTGTCGGTGTCTTTGTGTTTCTGTTGGTGCTGATATTGTGGGGGTTTTGAAAATGTCCTCGGCATAAAAGCGCCATTTTAATTTAAGAAAACGGGGAACTATGC",
"TCAGGATTGGATTTATATGACTGATCAGTTTCCTCTGCTGTTATCGAAAGCAGATATCAAATGGCTGTGGAGGAATGCAGGTGATTGGAGTTGGTCCAAAGGAAGTTGTGAGTTCTGGGAGAGGCAGAAGGAAAGCAGCTGCCATGTTCTGAAGGTTATCAGCACCTG",
"TTGGTGATAGAAACAGGCACAGAAGGTGTTAGCAGGTTCCTGTTTGTCCTCTCGCACCCCCTCCCTCCTGATGGTGACCTTGTCCCAGGTCTTCTACCAGGCCTTCTACCAGATGCCTTGCTGAGAATTCACAGAGGCCGTAGACCTGAAGAACCAACAACCTTCCAT",
"AGGCTTTGAGGTCCCACTCCGGCAGCAGGACGTGCTGGCTCCCAGGAATCACTGACATCAAGGCGTGTAAAATAACACAAAGAGGTTTGCAAAGTCCACAGCCCAAGAGGAGCCGGAGCGTCCTGTTTTTACCATCACGCTTCGTTGTTCACGTTGCTTGTGTGTGTA",
"AAACAGGGTACAATATTTAGAAACGGTGAAAGGAAATGACTGGCCTAAAACTCTTGTGATTCAGTGACTCAAGGATGATTGACACTGTGTAAAAACAGGCACATTAGACCAAGAGATAATTTGAAACCTTATTATTGGGTATTGTTTTTAAAAATTAAACCTATGGAC",
"ATGAATAAAATGAAAAACTTTATAAGCACAGCTTATTGAACTAAAGGGCCTTAAGACCATCACTTCCAACGGCCTCATTTTACAGGAGAGAAATCTGAGGACCAGGGAAACCAAGTGACTTTTCTGGGGTCACATGGAATGTCAACAGCAGAGCTGTGAAGGCGTTCA",
"GGTCTGCTAACCTCCCGGCTATGCTCATTCATGGAGAGTGCTTCGAAGAGTGTTTGCAACATTTAGTCACAGTTTATCTTTGGTTCCAATTCCACATTTACTCTATTTTTAATGTGTGTGAAAATGGCCCAGATTCATATGATTTGTTGCAGGTCAAACAGGTATTAG",
"AAAAACTGCCAAGCTTGCACCGCTTATGTATAGTTATTTGTTGTGTATGTGCAAGTGTTTGTATGTGTGTGAGCACATAAGCATAATCTCTTTACACACACACACACACACCATTCCTACATCAAAAAGCTCTGAAAATTAAACTTTTTCATAAATTTGTGACAAATT"]
for i in range(1000000):
s = rev_comp_dict_map(TEST_SEQ[i % 8])