-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathPatternsNumbers.py
More file actions
executable file
·29 lines (25 loc) · 932 Bytes
/
PatternsNumbers.py
File metadata and controls
executable file
·29 lines (25 loc) · 932 Bytes
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
#!/usr/bin/env python
NumberToSymbol = {0:'A', 1:'C', 2:'G', 3:'T'}
SymbolToNumber = {'A':0, 'C':1, 'G':2, 'T':3}
def NumberToPattern2(n, k):
pattern = [NumberToSymbol[0] for el in range(k)]
for i in range(k - 1, -1, -1):
pattern[i]= NumberToSymbol[n % 4]
n /= 4
return ''.join(pattern)
def NumberToPattern(index, k):
if k == 1:
return NumberToSymbol[index]
prefixIndex = index / 4
r = index % 4
prefixPattern = NumberToPattern(prefixIndex, k - 1)
return prefixPattern + NumberToSymbol[r]
def PatternToNumber(pattern):
if len(pattern) == 0:
return 0
return 4 * PatternToNumber(pattern[:-1]) + SymbolToNumber[pattern[-1]]
if __name__ == "__main__":
print(NumberToPattern2(15, 3))
#import timeit
#yprint(timeit.timeit("NumberToPattern2(15, 3)", setup="from __main__ import NumberToPattern2"))
##print PatternToNumber('GATACAGGGAATAACA')