Выведите 50 последовательностей из каждой строки, используя Clustal - PullRequest
0 голосов
/ 22 мая 2010

У меня есть файл с множественным выравниванием последовательностей (Clustal), и я хочу прочитать этот файл и упорядочить последовательности таким образом, чтобы он выглядел более четким и точным по порядку.

Я делаю это из Biopython, используя объект AlignIO:

alignment = AlignIO.read("opuntia.aln", "clustal")

print "Number of rows: %i" % len(align)

for record in alignment:
    print "%s - %s" % (record.id, record.seq)

Мой вывод выглядит грязно и долго прокручивается.Я хочу напечатать только 50 последовательностей в каждой строке и продолжить до конца файла выравнивания.

Я хочу, чтобы вывод был таким , с http://www.ebi.ac.uk/Tools/clustalw2/.

Ответы [ 2 ]

0 голосов
/ 23 мая 2010

Br

У меня нет биопиона на этом компьютере, поэтому он не проверен, но он должен работать:

chunk_size = 50

for i in range(0, alignment.get_alignment_length(), chunk_size):
    print ""
    for record in alignment:
        print "%s\t%s %i" % (record.name,  record.seq[i:i + chunk_size], i + chunk_size)

Выполняет тот же трюк, что и Эли, - используя диапазон, чтобы установить индекс для среза, а затем перебирать записи в выравнивании для каждого среза.

0 голосов
/ 22 мая 2010

Вам требуется что-то более сложное, чем простое разбиение record.seq на куски по 50 символов, или я что-то упускаю?

Вы можете использовать секвенсор последовательности Python, чтобы достичь этого очень легко.seq[N:N+50] обращается к 50 элементам последовательности, начинающимся с N:

In [24]: seq = ''.join(str(random.randint(1, 4)) for i in range(200))

In [25]: seq
Out[25]: '13313211211434211213343311221443122234343421132111223234141322124442112343143112411321431412322123214232414331224144142222323421121312441313314342434231131212124312344112144434314122312143242221323123'

In [26]: for n in range(0, len(seq), 50):
   ....:     print seq[n:n+50]
   ....:     
   ....:     
13313211211434211213343311221443122234343421132111
22323414132212444211234314311241132143141232212321
42324143312241441422223234211213124413133143424342
31131212124312344112144434314122312143242221323123
...