Bio.应用程序包

模块内容

在Biopython中访问应用程序的一般机制(已过时)。

本模块不适用于直接使用。它提供由我们的命令行包装器派生的基本对象,例如:

  • Bio.Align.Applications

  • Bio.Blast.Applications

  • Bio.Emboss.Applications

  • Bio.Sequencing.Applications

这些模块为命令行工具提供包装类,帮助您通过设置每个参数的值来构造命令行字符串。然后,通常通过内置的Python模块子进程调用完成的命令行字符串。

由于持续的维护负担或使命令行应用程序包装器保持最新,我们决定弃用它们并最终将其删除。相反,我们现在建议构建命令行并直接使用子进程模块调用它。

exception Bio.Application.ApplicationError(returncode, cmd, stdout='', stderr='')

基类:CalledProcessError

在应用程序返回非零退出状态(已过时)时引发。

退出状态将存储在rereturn code属性中,与cmd属性中使用的命令行字符串类似,并且(如果捕获)stdout和stderr作为字符串。

此异常是subprocess.CalledProcessError的子类。

>>> err = ApplicationError(-11, "helloworld", "", "Some error text")
>>> err.returncode, err.cmd, err.stdout, err.stderr
(-11, 'helloworld', '', 'Some error text')
>>> print(err)
Non-zero return code -11 from 'helloworld', message 'Some error text'
__init__(returncode, cmd, stdout='', stderr='')

初始化类。

__str__()

将错误格式化为字符串。

__repr__()

将错误表示为字符串。

class Bio.Application.AbstractCommandline(cmd, **kwargs)

基类:object

用于构造命令行字符串的通用接口(已过时)。

不应直接调用此类;应将其子类化以提供特定应用程序的实现。

作为用法示例,我们将显示其中一个浮雕包装器。您可以在创建包装对象时使用关键字参数设置选项,也可以稍后使用其相应的属性设置选项:

>>> from Bio.Emboss.Applications import WaterCommandline
>>> cline = WaterCommandline(gapopen=10, gapextend=0.5)
>>> cline
WaterCommandline(cmd='water', gapopen=10, gapextend=0.5)

相反,您可以通过参数的属性来操作参数,例如

>>> cline.gapopen
10
>>> cline.gapopen = 20
>>> cline
WaterCommandline(cmd='water', gapopen=20, gapextend=0.5)

您可以通过‘删除’相应的属性来清除已经添加的参数:

>>> del cline.gapopen
>>> cline.gapopen
>>> cline
WaterCommandline(cmd='water', gapextend=0.5)

一旦设置了所需的参数,就可以将对象转换为字符串(例如,记录命令):

>>> str(cline)
Traceback (most recent call last):
...
ValueError: You must either set outfile (output filename), or enable filter or stdout (output to stdout).

在这种情况下,包装器知道构造工具的有效命令行需要某些参数。作为一个完整的例子,

>>> from Bio.Emboss.Applications import WaterCommandline
>>> water_cmd = WaterCommandline(gapopen=10, gapextend=0.5)
>>> water_cmd.asequence = "asis:ACCCGGGCGCGGT"
>>> water_cmd.bsequence = "asis:ACCCGAGCGCGGT"
>>> water_cmd.outfile = "temp_water.txt"
>>> print(water_cmd)
water -outfile=temp_water.txt -asequence=asis:ACCCGGGCGCGGT -bsequence=asis:ACCCGAGCGCGGT -gapopen=10 -gapextend=0.5
>>> water_cmd
WaterCommandline(cmd='water', outfile='temp_water.txt', asequence='asis:ACCCGGGCGCGGT', bsequence='asis:ACCCGAGCGCGGT', gapopen=10, gapextend=0.5)

通常,您将通过标准Python操作系统调用使用子进程模块来运行命令行以实现完全控制。对于只想运行命令并获得输出的简单情况:

stdout,stderr=water_cmd()

请注意,默认情况下,我们假设底层工具安装在SYSTEM$PATH环境变量上。这在Linux/Unix下是正常的,但在Windows下可能需要手动完成。或者,您可以将二进制文件的完整路径指定为第一个参数(Cmd):

>>> from Bio.Emboss.Applications import WaterCommandline
>>> water_cmd = WaterCommandline(r"C:\Program Files\EMBOSS\water.exe",
...                              gapopen=10, gapextend=0.5,
...                              asequence="asis:ACCCGGGCGCGGT",
...                              bsequence="asis:ACCCGAGCGCGGT",
...                              outfile="temp_water.txt")
>>> print(water_cmd)
"C:\Program Files\EMBOSS\water.exe" -outfile=temp_water.txt -asequence=asis:ACCCGGGCGCGGT -bsequence=asis:ACCCGAGCGCGGT -gapopen=10 -gapextend=0.5

请注意,由于路径名包括空格,因此已自动将其引起来。

parameters = None
__init__(cmd, **kwargs)

创建命令行包装对象的新实例。

__str__()

使用当前设置的选项设置命令行字符串。

例如:

>>> from Bio.Emboss.Applications import WaterCommandline
>>> cline = WaterCommandline(gapopen=10, gapextend=0.5)
>>> cline.asequence = "asis:ACCCGGGCGCGGT"
>>> cline.bsequence = "asis:ACCCGAGCGCGGT"
>>> cline.outfile = "temp_water.txt"
>>> print(cline)
water -outfile=temp_water.txt -asequence=asis:ACCCGGGCGCGGT -bsequence=asis:ACCCGAGCGCGGT -gapopen=10 -gapextend=0.5
>>> str(cline)
'water -outfile=temp_water.txt -asequence=asis:ACCCGGGCGCGGT -bsequence=asis:ACCCGAGCGCGGT -gapopen=10 -gapextend=0.5'
__repr__()

返回命令行对象的表示形式以进行调试。

例如:

>>> from Bio.Emboss.Applications import WaterCommandline
>>> cline = WaterCommandline(gapopen=10, gapextend=0.5)
>>> cline.asequence = "asis:ACCCGGGCGCGGT"
>>> cline.bsequence = "asis:ACCCGAGCGCGGT"
>>> cline.outfile = "temp_water.txt"
>>> print(cline)
water -outfile=temp_water.txt -asequence=asis:ACCCGGGCGCGGT -bsequence=asis:ACCCGAGCGCGGT -gapopen=10 -gapextend=0.5
>>> cline
WaterCommandline(cmd='water', outfile='temp_water.txt', asequence='asis:ACCCGGGCGCGGT', bsequence='asis:ACCCGAGCGCGGT', gapopen=10, gapextend=0.5)
set_parameter(name, value=None)

为程序设置命令行选项(已过时)。

在创建实例时,每个参数都可以通过属性和命名关键字使用。与这种遗留的set_Parameter方法相比,最好使用这两种方法中的任何一种,该方法现在已过时,可能会在将来的版本中被弃用并在以后的版本中删除。

__setattr__(name, value)

将属性名称设置为值(私有)。

此代码实现了用户界面问题的解决方法。如果没有这个 __setattr__ 基于属性的参数赋值将静默接受无效参数,从而导致用户的已知实例假定应用程序的参数已设置,而实际情况并非如此。

>>> from Bio.Emboss.Applications import WaterCommandline
>>> cline = WaterCommandline(gapopen=10, gapextend=0.5, stdout=True)
>>> cline.asequence = "a.fasta"
>>> cline.bsequence = "b.fasta"
>>> cline.csequence = "c.fasta"
Traceback (most recent call last):
...
ValueError: Option name csequence was not found.
>>> print(cline)
water -stdout -asequence=a.fasta -bsequence=b.fasta -gapopen=10 -gapextend=0.5

此解决方法使用对象属性的白名单,并将这些属性的对象属性列表设置为正常。其他属性被假定为参数,并传递给self.set_Parameter方法进行验证和赋值。

__call__(stdin=None, stdout=True, stderr=True, cwd=None, env=None)

执行命令,等待其完成,返回(stdout,stderr)。

运行命令行工具并等待其完成。如果它返回非零错误级别,则会引发异常。否则,返回两个包含stdout和stderr的字符串。

可选的stdin参数应该是将作为标准输入传递给工具的数据字符串。

可选的stdout和stderr参数可以是文件名(字符串),否则将被视为布尔值,并控制是否应将输出捕获为字符串(True,Default),或者通过将其发送到/dev/null来忽略输出,以避免浪费内存(False)。如果发送到文件或忽略,则返回空字符串。

可选的cwd参数是一个字符串,给出了从中运行命令的工作目录。有关更多详细信息,请参阅Python子流程模块文档。

可选的env参数是一个字典,用于设置要在新进程中使用的环境变量。默认情况下,使用当前进程的环境变量。有关更多详细信息,请参阅Python子流程模块文档。

默认示例用法:

from Bio.Emboss.Applications import WaterCommandline
water_cmd = WaterCommandline(gapopen=10, gapextend=0.5,
                             stdout=True, auto=True,
                             asequence="a.fasta", bsequence="b.fasta")
print("About to run: %s" % water_cmd)
std_output, err_output = water_cmd()

此功能类似于subprocess.check_output()。通常,如果您需要对运行命令进行更多控制,请直接使用子进程。

当被调用的程序返回非零错误级别时,将引发自定义ApplicationError异常。这包括作为异常对象的属性捕获的任何stdout和stderr字符串,因为它们可能对诊断哪里出了问题很有用。