python - 如何使用 sys.args[] 或 getopts 通过 Python 运行对齐命令
问题描述
如何使用 sys.args[] 或 getopts 通过 python 运行“MAFFT”对齐?
我想通过 python 自动对齐,这样我就不必为不同的文件多次使用独立的命令行 MAFFT。它可能会非常耗时。
理想情况下,我想要一个函数来执行此操作,以便可以将不同的文件输入其中以进行 MAFFT 对齐。
干杯。
解决方案
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, 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")
推荐阅读
- ruby-on-rails - NoMethodError - nil:NilClass 的未定义方法“get”
- chat - 基于 PubNub 的开源网络聊天
- google-maps - Google Maps API 让我失望了
- excel - 查找并选择在组合框列表中找到的项目
- arrays - Observable 如何获取 Array 的数据?角 6
- postgresql - 从 Debian Docker 容器连接到 Windows Postgres
- javascript - 在 Javascript 中查找对象列表
- javascript - 如何打印属性名称而不是整个 JS 对象?
- c++ - 如何将 A 到 Z 作为变量
- pip - 人工延迟