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
| import re
def scinder(seq) :
ex = list()
lseq = len(seq)
for s in re.finditer("AA(?:A|G)", seq) :
if not s.start() % 3 :
ex.append(s.start())
mm = lseq // 2 - lseq % 2
for i in range(mm, lseq, 3) :
if i not in ex :
break
return (seq[0:i], seq[i:])
seqs = (
'ATGTGAGTCAAAAAATGCCTATGA',
'ATGTGAGTCAAGAAATGCCTATGA',
'ATGTGAGTCAAGAAATGCCTATGA',
'ATGTGAGTCATGTGTTGCCTATGA',
'ATGTGAAAAAAAGTCTGCCTATGA',
)
for s in seqs :
parts = scinder(s)
print(s, parts, len(parts[0]), len(parts[1]))
# Partie insécable dans la seconde moitié ?
m = re.search("(?:AA(?:A|G))+$", parts[0])
if m :
ip = (parts[0][0:m.start()], parts[0][m.start():] + parts[1])
print(s, ip, len(ip[0]), len(ip[1]))
print('\n') |
Partager