我如何通过python使用sys.args[]或getopts运行 "MAFFT "对齐?
我想通过python自动完成一次对齐,这样我就不必对不同的文件多次使用独立的命令行MAFFT。这可能会相当耗时。
理想的情况是,我希望有一个函数来实现这个功能,这样不同的文件可以被输入到这个函数中进行MAFFT对齐。
cheers.
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")