Как я могу использовать sys.args [] или getopts для выполнения команд выравнивания через Python - PullRequest
1 голос
/ 05 мая 2020

Как мне запустить выравнивание MAFFT через python с помощью sys.args [] или getopts?

Я хочу автоматизировать выравнивание через python, чтобы мне не приходилось использовать автономная командная строка MAFFT несколько раз для разных файлов. Это может занять довольно много времени.

В идеале, я бы хотел, чтобы функция выполняла это, чтобы в нее можно было загружать разные файлы для выравнивания MAFFT.

ура.

1 Ответ

1 голос
/ 05 мая 2020

Bio Python имеет оболочку командной строки для программы множественного выравнивания MAFFT :

>>> from Bio.Align.Applications import MafftCommandline
>>> mafft_exe = "/opt/local/mafft"
>>> in_file = "../Doc/examples/opuntia.fasta"
>>> mafft_cline = MafftCommandline(mafft_exe, input=in_file)
>>> print(mafft_cline)
/opt/local/mafft ../Doc/examples/opuntia.fasta

Если двоичный файл mafft находится на пути (обычно в случае Unix стиль операционной системы), тогда вам не нужно указывать расположение исполняемого файла:

>>> from Bio.Align.Applications import MafftCommandline
>>> in_file = "../Doc/examples/opuntia.fasta"
>>> mafft_cline = MafftCommandline(input=in_file)
>>> print(mafft_cline)
mafft ../Doc/examples/opuntia.fasta

Обратите внимание, что MAFFT запишет выравнивание в стандартный вывод, который вы можете сохранить в файл, а затем проанализировать, например :

stdout, stderr = mafft_cline()
with open("aligned.fasta", "w") as handle:
    handle.write(stdout)
from Bio import AlignIO
align = AlignIO.read("aligned.fasta", "fasta")

В качестве альтернативы, чтобы проанализировать вывод напрямую с помощью AlignIO, вы можете использовать StringIO, чтобы превратить строку в дескриптор:

stdout, stderr = mafft_cline()
from StringIO import StringIO
from Bio import AlignIO
align = AlignIO.read(StringIO(stdout), "fasta")
...