Не могу запустить команду терминала из Python для использования программного обеспеченияLinux

Ответить Пред. темаСлед. тема
Anonymous
 Не могу запустить команду терминала из Python для использования программного обеспечения

Сообщение Anonymous »

Я работаю над проектом, который требует использования 4 программ. 1 вызов PRIME, который использует MixMHCpred, а остальные 3 — netMHCpan, nectchop и netMCHstab.
Я запускаю команду терминала для каждого из них (я работаю в Linux), и программа запускается без проблем. Но теперь я пытаюсь запустить их из скрипта Python (я использую студию визуального кода), и это не работает, я использую os.system и подпроцесс, и это не работает, у меня есть функция для запуска сценарий bash, содержащий только команду, и он работает только в терминале, а не из сценария Python. Единственный вывод, который я получаю, это «команда x не существует», программное обеспечение было установлено в базовой среде и с использованием пути, я использую ядро ​​Python 3.11.8.
Я работаю с пандами, pysam и другие библиотеки Python, поэтому изменение кода на bash мне не кажется привлекательным.
Я использовал os.system и подпроцесс для запуска команд, опять же, эти отлично работают в терминале или из команд bash. Я ожидаю, что команда выполнится нормально и выдаст выходной файл для получения необходимых мне данных.
Вот что мне нужно сделать:

Код: Выделить всё

def netMHC(seqs:list[str], haplotypes:list[str]):
haplotypes_str = ",".join(haplotypes)
input_path = make_input_file(seqs, "NetMHCpan")

xls_path = '../test/NetMHCpan_out.xls'  # Reemplaza esto con la ruta correcta
os.system(f"netMHCpan -p {input_path} -a {haplotypes_str} -BA -inptype 1 -xls -xlsfile {xls_path}")
предупреждение

Код: Выделить всё

../test/net.sh: línea 3: netMHCpan: orden no encontrada.
"orden no encontrada" означает, что заказ не найден
И когда я пытаюсь использовать подпроцесс:

Код: Выделить всё

import subprocess
def net_chop(neo_ext, len_mer):
input_path = make_input_file(neo_ext, "chop")
command = f"netchop ../test/{input_path} > ../test/chop.txt"
subprocess.run(command, shell=True)
with open("../test/chop.txt", "r") as f:
for l in f.readlines():
if l.split("\t")[0] == (len_mer):
return float(l.split("\t")[3])
print("file vacio")
предупреждение

Код: Выделить всё

línea 1: netchop: orden no encontrada


Подробнее здесь: https://stackoverflow.com/questions/786 ... -softwares
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»