-4

私は次のようなDNA配列を持っています

seq='ATCGTTTTTCGAAACTGCCCCCCACTGGGGA'

Pythonで連続反復ヌクレオチド(連続して2回以上連続して繰り返す場合)を出力したい。

このシーケンスの出力は、

TTTTT
AAA
CCCCCC
GGGG
4

3 に答える 3

4

をご覧になることをお勧めしますitertools.groupby

使用例:

for _, group in itertools.groupby(seq):
    group = ''.join(group)
    if len(group) > 2:
        print group
于 2012-10-23T04:26:21.250 に答える
1

regular expression後方参照と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']
于 2012-10-23T04:44:08.347 に答える
0
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
于 2012-10-23T04:52:52.853 に答える