#python #biopython #fasta #blast
Вопрос:
У меня есть файл с несколькими FASTA, содержащий ~125 последовательностей белков. Мне нужно выполнить поиск BLASTP по удаленной базе данных nr. Я попытался использовать NcbiblastpCommandline, но проблема в том, что он принимает только файлы в качестве входных данных. Поскольку в моем файле огромное количество последовательностей, я получаю эту ошибку
ОШИБКА: На сервере произошла ошибка [blastsrv4.REAL]:Ошибка: Превышен лимит использования процессора, в результате чего SIGXCPU (24).
Хранение каждой последовательности из файла multi-FASTA в отдельный файл за один раз работает, но затем поиск BLAST становится чрезвычайно медленным (в среднем~10 минут/запрос по сравнению с ~1 минутой/запросом на сайте NCBI).
blastp_results = []
from Bio.Blast.Applications import NcbiblastpCommandline
from Bio import SeqIO
record_iterator = SeqIO.parse("AmpB_DEPs.fasta", "fasta")
for record in record_iterator:
entry = str(">" i.description "n" i.seq)
f1 = open("test.txt", "w")
f1.write(entry)
f1.close()
f2 = open("test.txt", "r")
blastp_cline = NcbiblastpCommandline(query = 'test.txt', db = 'nr -remote', evalue = 0.05, outfmt = '7 sseqid evalue qcovs pident')
res = blastp_cline()
blastp_results.append(res)
f2.close()
Я также пробовал использовать NCBIWWW.qblast, но, похоже, он не предоставляет информацию о покрытии запросов в выходных данных, что важно для моего исследования.
Может ли кто-нибудь предложить способ решения этой проблемы без ущерба для пространства поиска или параметров BLAST по умолчанию? Предложения по реализации BLAST на других языках, таких как PERL, R и т.д. также был бы признателен.
Комментарии:
1. Вы можете найти это полезным: biostars.org/p/493953