Как я могу загрузить несколько последовательностей в BLAST с помощью Biopython?

Я пытаюсь выполнить поиск BLASTN для нескольких последовательностей из одного файла FASTA. Я могу легко запросить одну последовательность из файла, но не могу запросить все последовательности в одном файле. Поскольку это относительно короткие чтения, я бы не стал разбивать файл на отдельные последовательности и запрашивать каждую отдельно.

Это то, что я пробовал до сих пор:

from Bio import SeqIO
from Bio.Blast import NCBIWWW

f_iterator = SeqIO.parse("file.fasta", "fasta")
f_record = f_iterator.next()
result_handle = NCBIWWW.qblast("blastn", "nt", f_record)
save_result = open("blast_result.xml", "w")
save_result.write(result_handle.read())
save_result.close()
result_handle.close()

У кого-нибудь есть идеи?


person user3076305    schedule 06.12.2013    source источник


Ответы (2)


Вы можете просто использовать open/read, если ваш файл уже находится в формате FASTA. Это взято прямо из кулинарной книги Biopython.

http://biopython.org/DIST/docs/tutorial/Tutorial.html#htoc92

fasta_string = open("m_cold.fasta").read()

Я все время запускаю такой простой скрипт:

from Bio.Blast import NCBIWWW

fasta_string = open("file.fasta").read()

result_handle = qblast(
"blastn",
"nt",
fasta_string,
)
save_file = open("out.xml", "w")

save_file.write(result_handle.read())

save_file.close()

result_handle.close()

Если это не сработает, проверьте правильность формата FASTA. Конвертер доступен здесь.

https://www.hiv.lanl.gov/content/sequence/FORMAT_CONVERSION/form.html

person Wiley Quixotey    schedule 18.11.2016
comment
@mikhael - вы правы, ясно, но у меня нет представителя, чтобы комментировать, поэтому я решил, что буду опираться на ваш ответ. - person Wiley Quixotey; 18.11.2016

Разве вы не можете просто дать все содержимое файла fasta с несколькими последовательностями (читать прямо из файла) вместо отдельных записей?

    from Bio.Blast import NCBIWWW

    with open("file.fasta", "r") as fasta_file:
        sequences = fasta_file.read()
        fasta_file.close()

    result_handle = NCBIWWW.qblast("blastn", "nt", sequences)
    save_result = open("blast_result.xml", "w")
    save_result.write(result_handle.read())
    save_result.close()
    result_handle.close()
person mikhael    schedule 17.12.2013