如何使用python查找DNA序列中的共选择重复序列?
我有像这样的DNA序列如何使用python查找DNA序列中的共选择重复序列?,python,Python,我有像这样的DNA序列 seq='ATCGTTTTTCGAAACTGCCCCCCACTGGGGA' 我想用python打印连续重复核苷酸(如果它连续重复两次以上的话) 对于该序列,输出应为 TTTTT AAA CCCCCC GGGG 你可能想看看 用法示例: for _, group in itertools.groupby(seq): group = ''.join(group) if len(group) > 2: print group 通过反向
seq='ATCGTTTTTCGAAACTGCCCCCCACTGGGGA'
我想用python打印连续重复核苷酸(如果它连续重复两次以上的话)
对于该序列,输出应为
TTTTT
AAA
CCCCCC
GGGG
你可能想看看 用法示例:
for _, group in itertools.groupby(seq):
group = ''.join(group)
if len(group) > 2:
print group
通过反向引用和
findall
方法,您可以很容易地找到重复
seq = 'ATCGTTTTTCGAAACTGCCCCCCACTGGGGA'
import re
hits = re.findall(r'(([A-Z])\2\2+)', seq) # regex matching all repeating A-Z groups
print [hit[0] for hit in hits] # Comprehension to filter the results
['TTTTT', 'AAA', 'CCCCCC', 'GGGG']
试一试,告诉我们你得到了什么。我不知道为什么人们把这个问题标记为“不是真正的问题”。它清楚地提供了一个示例和预期内容。它应该是
r'([ATCG])\1\1+'
,即超过2个times@J.F.Sebastian啊,是的,我错过了两次以上,将修正答案。+1:
seq='ATCGTTTTTCGAAACTGCCCCCCACTGGGGA'
while len(seq) > 1:
value = seq[0]
repeats = 1
idx = 1
while 1:
if seq[idx] == value:
repeats += 1
else:
if repeats > 1: print value*repeats
seq = seq[repeats:]
break
idx += 1