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字符串,因为它们可能对诊断哪里出了问题很有用。