2013-03-20 6 views
1

У меня есть программа для создания файла fasta с секвенсором через itertools.Именование последовательностей

import itertools 
input=['ARIMALTHNAEYSDSFTAL','ARIMFLTHNFEYSESFTAL','AHIMNPTENAEYHESFTAL','AHIMNPTENTEYWDSFTAL','AHIMNDTHNFEYHDSFTAL','AHIMNDTNNTEYWESFTAL','ARIMFDTENAEYHDSFTAL','AHIMADTNNTEYWDSFTAL','ARIMFLTENTEYHESFTAL'] 

l=len(input[0]) 

my_residues=[set() for _ in xrange(l)] 
for h in input: 
    for i,x in enumerate(h): 
     my_residues[i].add(x) 

my_residues=[list(x) for x in my_residues] 
fo=open('autotest.fasta','w') 
vals=[] 
for x in itertools.product(*my_residues): 
    val = ''.join(x) 
    vals.append('>'+'\n'+val) 
    print val 

with open('autotest.fasta','w') as fo: 
    fo.write('\n'.join(vals)) 
fo.close() 

Эта программа работает perfectly.This даст выходной файл с именем autotest.fasta, который смотрит как

> 
AHIMAPTHNAEYHESFTAL 
> 
AHIMAPTHNAEYHDSFTAL 
> 
AHIMAPTHNAEYSESFTAL 
> 
AHIMAPTHNAEYSDSFTAL 
> 
AHIMAPTHNAEYWESFTAL 
> 
AHIMAPTHNAEYWDSFTAL 
... 

Вот что я хочу, чтобы назвать последовательность, так что выход autotest.fasta будет Посмотрите, как

>00 
AHIMAPTHNAEYHESFTAL 
>01 
AHIMAPTHNAEYHDSFTAL 
>02 
AHIMAPTHNAEYSESFTAL 
>03 
AHIMAPTHNAEYSDSFTAL 
>04 
AHIMAPTHNAEYWESFTAL 
>05 
AHIMAPTHNAEYWDSFTAL 
... 

Для того чтобы его можно было применить к любому входу.

Любая помощь будет оценена по достоинству. Спасибо.

+0

Возможно, пришло время начать поиски полезных решений и принять ответы, которые вы фактически использовали – RedBaron

ответ

2
vals=[] 
counter=0 
for x in itertools.product(*my_residues): 
    val = ''.join(x) 
    vals.append('>%02d\n%s' % (counter, val)) 
    print val 
    counter += 1 
Смежные вопросы