2016-02-27 3 views
-1

Я хотел бы вычесть два файла на основе составляющих последовательности, а не использовать имя заголовка, чтобы избавиться от последовательностей. Есть ли другой способ, которым я могу вычесть последовательности? Может кто-нибудь мне помочь? Если заголовок fasta ниже заменяется на> человек, то следующий код не может функционировать.Python: Как избавиться от последовательностей в соответствии с базами последовательностей, а не с их заголовком?

Код

from Bio import SeqIO 

input_file = 'a.fasta' 
merge_file = 'original.fasta' 
output_file = 'results.fasta' 
exclude = set() 
fasta_sequences = SeqIO.parse(open(input_file),'fasta') 
for fasta in fasta_sequences: 
    exclude.add(fasta.id) 

fasta_sequences = SeqIO.parse(open(merge_file),'fasta') 
with open(output_file, 'w') as output_handle: 
    for fasta in fasta_sequences: 
     if fasta.id not in exclude: 
      SeqIO.write([fasta], output_handle, "fasta") 

a.fasta

>chr12:15747942-15747949 
TGACATCA 
>chr2:130918058-130918065 
TGACCTCA 

original.fasta

>chr3:99679938-99679945 
TGACGTAA 
>chr9:135822160-135822167 
TGACCTCA 
>chr12:15747942-15747949 
TGACATCA 
>chr2:130918058-130918065 
TGACCTCA 
>chr2:38430457-38430464 
TGACCTCA 
>chr1:112381724-112381731 
TGACATCA 

results.fasta

>chr3:99679938-99679945 
TGACGTAA 
>chr9:135822160-135822167 
TGACCTCA 
>chr2:38430457-38430464 
TGACCTCA 
>chr1:112381724-112381731 
TGACATCA 

ответ

2

Вы можете проверить последовательности друг против друга. Будьте осторожны, однако, последовательности могут быть не 100% соответствия, и они должны быть для этого метода, чтобы дать вам желаемый результат. Получите доступ к последовательности с помощью str(your_obj.seq).

В своем коде, осуществлять изменения здесь:

for fasta in fasta_sequences: 
    exclude.add(str(fasta.seq)) 

и здесь:

for fasta in fasta_sequences: 
     if str(fasta.seq) not in exclude: 

В вашем примере, следует иметь в виду, что файл results.fasta будет содержать только одну строку, так как это единственная последовательность в original.fasta, которая не соответствует последовательности от a.fasta.

>chr3:99679938-99679945 
TGACGTAA 
Смежные вопросы