Ошибки NCBIblastPcommandline - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь автоматизировать бластные выходы из нескольких файлов в каталоге. Переменные здесь жестко закодированы, но будут определены пользователем позже. Мои инфили будут изменены через цикл, но у меня проблемы с запуском NcbiblastpCommandline на файлах из Python. Стремясь запустить blast локально с входами нескольких пакетов больших файлов fasta, чтобы blast запускал последовательно каждый пакетный файл, выводил в tsv, где я анализировал данные и передавал локальное выравнивание clustalw.

Input_file="minifasta.fasta"
data="uniprot_database"
E_Value_Thresh=1e-10
counter=1
Filename2= 'Batch'+str(counter)
from Bio.Blast.Applications import NcbiblastpCommandline
blast_output_file='blastout.tsv'
NcbiblastpCommandline.outfile=Filename2
from Bio.Blast.Applications import NcbiblastpCommandline
cline = NcbiblastpCommandline(query=Input_file, db=data,outfmt=6, 
out=blast_output_file, evalue= E_Value_Thresh)
print(cline)
stdt, stdr= cline()

Я получаю сообщение об ошибке, в котором говорится, что объект NcbiblastpCommandline не повторяется. и я направляюсь в строку stdt, stdr, но без stdt, stdr, появляется другая ошибка, сообщающая, что команда не распознана, и сообщения об ошибках, указывающие на stdout_str, stderr_str. Я не могу найти современные примеры использования NcbiblastpCommandline в Python 3, чтобы направлять меня.

Полная ошибка, которую я получаю:

ApplicationError: Non-zero return code 127 from 'blastp -out blastout.tsv -outfmt 6 -query minifasta.fasta -db uniprot_database -evalue 1e-10', message '/bin/sh: blastp: command not found'.

  File "/Users/me/anaconda3/lib/python3.6/site-packages/Bio/Application/__init__.py", line 523, in __call__
    stdout_str, stderr_str)

1 Ответ

0 голосов
/ 27 апреля 2018

Сначала запустите which blastp, чтобы найти полный путь к blastp и укажите его в качестве аргумента NcbiblastpCommandline.

from Bio.Blast.Applications import NcbiblastpCommandline
blastp_path = '/path/to/blastp'
cline = NcbiblastpCommandline(cmd=blastp_path, query=Input_file, db=data,outfmt=6, 
out=blast_output_file, evalue= E_Value_Thresh)

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

...