«blastp» не распознается как внутренняя или внешняя ошибка команды при запуске blast с python

Я пытаюсь запустить локальный BLAST с помощью biopython, используя Bio.Blast.Applications. Однако при запуске приведенного ниже кода:

from Bio.Blast.Applications import NcbiblastpCommandline

result = r"C:\Users\Uzytkownik\Desktop\tests\result.xml" 
q = r"C:\Users\Uzytkownik\Desktop\tests\fastas\my_example2.faa"
database = r"C:\Users\Uzytkownik\Desktop\tests\my_examplemultif.faa"

blastp_cline = NcbiblastpCommandline(query = q, db = database, evalue = 0.001, outfmt=5, out = result)
stdout, stderr = blastp_cline()

Я получаю сообщение об ошибке:

ApplicationError: Non-zero return code 1 from 'blastp -out C:\\Users\\Uzytkownik\\Desktop\\tests\\result.xml -outfmt 5 -query C:\\Users\\Uzytkownik\\Desktop\\tests\\fastas\\my_example2.faa -db C:\\Users\\Uzytkownik\\Desktop\\tests\\my_examplemultif.faa -evalue 0.001', message "'blastp' is not recognized as an internal or external command,"

Я пытался запустить это с помощью подпроцесса и ОС, но каждый раз получал одну и ту же ошибку.

Когда я запускаю запрос через командную строку, все работает нормально (я использую blast 2.9.0+), поэтому я действительно не уверен, в чем проблема. Был бы признателен за любую помощь!


person PeteKlos    schedule 21.07.2020    source источник


Ответы (1)


Сначала найдите место, где установлен исполняемый файл blastp, и укажите его в качестве аргумента для NcbiblastpCommandline.

from Bio.Blast.Applications import NcbiblastpCommandline

blastp_path = r"C:\path\to\blastp.exe"
result = r"C:\Users\Uzytkownik\Desktop\tests\result.xml" 
q = r"C:\Users\Uzytkownik\Desktop\tests\fastas\my_example2.faa"
database = r"C:\Users\Uzytkownik\Desktop\tests\my_examplemultif.faa"


blastp_cline = NcbiblastpCommandline(cmd=blastp_path, query=q, db=database, evalue=0.001, outfmt=5, out=result)

Если вы сейчас сделаете print(blastp_cline), он должен распечатать полную команду, которая будет запущена. Дважды проверьте, что это работает, скопировав/вставив этот вывод и запустив его из командной строки. Если это сработает, то

stdout, stderr = blastp_cline()

тоже должно работать.

person BioGeek    schedule 29.07.2020
comment
Спасибо! ты был прав - путь был ключом! Хотя в итоге я использовал os. изменить каталог всего кода, и это тоже сработало. - person PeteKlos; 04.08.2020