如何使用sys.args[]或getopts通过Python运行对齐命令?

问题描述 投票:0回答:1

我如何通过python使用sys.args[]或getopts运行 "MAFFT "对齐?

我想通过python自动完成一次对齐,这样我就不必对不同的文件多次使用独立的命令行MAFFT。这可能会相当耗时。

理想的情况是,我希望有一个函数来实现这个功能,这样不同的文件可以被输入到这个函数中进行MAFFT对齐。

cheers.

python alignment bioinformatics seq
1个回答
1
投票

BioPython有一个多对位程序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,您可能想将其保存到一个文件中,然后再进行解析,例如。

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")
© www.soinside.com 2019 - 2024. All rights reserved.