Bio.Blast包

子模块

模块内容

用于解析和存储AMPS HTML输出以及调用NCBI RST Web服务器的代码。

该模块提供代码来解析和存储AMPS ML输出,遵循相关的AMPS ML DTE文件中的定义:https://www.ncbi.nlm.nih.gov/dtd/NCBI_BlastOutput.dtd

该模块还提供调用NCBI提供的AMPS Web服务器的代码。https://blast.ncbi.nlm.nih.gov/

变量:

  • 电子邮件 设置Blast电子邮件参数(默认为无)。

  • 工具 设置Blast工具参数(默认为 biopython ).

exception Bio.Blast.NotXMLError(message)

基类:ValueError

未能将文件解析为HTML。

__init__(message)

初始化课程。

__str__()

返回异常的字符串摘要。

__firstlineno__ = 57
__static_attributes__ = ('msg',)
exception Bio.Blast.CorruptedXMLError(message)

基类:ValueError

损坏的HTML。

__init__(message)

初始化课程。

__str__()

返回异常的字符串摘要。

__firstlineno__ = 72
__static_attributes__ = ('msg',)
class Bio.Blast.HSP(sequences, coordinates=None)

基类:Alignment

存储一个查询序列与目标序列的比对。

SPP(高分片段对)存储一个查询序列片段与一个目标(命中)序列片段的比对。的 Bio.Blast.HSP 类继承自 Bio.Align.Alignment

除了有 targetquery 的属性 Bio.Align.Alignment 、a Bio.Blast.HSP 对象具有以下属性:

  • 得分: 热休克蛋白评分;

  • 注释:可能包含以下键的字典:
    • “bit score”:SPP(float)的分数(以位为单位);

    • “评估”: 热休克蛋白的e值(浮动);

    • “identification”:SPP中的身份数(integer);

    • '阳性':热休克蛋白阳性数(整);

    • “差距”: 热休克蛋白中的间隙数(整);

    • “中线”: 格式化中间行。

A Bio.Blast.HSP 对象的行为与 Bio.Align.Alignment 对象,并可以像这样使用。但是,在打印 Bio.Blast.HSP 对象时,将RST e值和位分数包括在输出中(除了对齐本身之外)。

请参阅文档 Bio.Blast.Record 有关BLAST记录中的信息如何存储在Biopython中的更详细说明。

__repr__()

返回路线的表示,包括其形状。

该表示不能与eval()一起使用来重新创建对象,而这通常可以使用简单的Python对象。 例如:

<0x10403d850处的对齐对象(2行x 14列)>

十六进制字符串是对象的内存地址,可用于区分不同的对齐对象。 有关更多信息,请参阅帮助(id)。

>>> import numpy as np
>>> from Bio.Align import Alignment
>>> alignment = Alignment(("ACCGT", "ACGT"),
...                       coordinates = np.array([[0, 2, 3, 5],
...                                               [0, 2, 2, 4],
...                                              ]))
>>> print(alignment)
target            0 ACCGT 5
                  0 ||-|| 5
query             0 AC-GT 4

>>> alignment
<Alignment object (2 rows x 5 columns) at 0x...>
__str__()

返回对齐方式的人类可读字符串表示形式。

对于序列比对,每条线最多有80列。前10列显示(可能被截断)序列名称,它可能是SeqRecord的id属性,或者是成对比对的“目标”或“查询”。接下来的10列显示序列坐标,与Python中一样使用从零开始的计数。其余60列显示了序列,使用虚线表示间隙。在对齐结束时,结束坐标显示在序列的右侧,再次以零基坐标显示。

成对比对在两个序列之间有一条额外的线,显示序列是否匹配('|')或不匹配('。'),或者是否存在间隙('-')。此线显示的坐标是列索引,这在提取子对齐时很有用。

例如,

>>> from Bio.Align import PairwiseAligner
>>> aligner = PairwiseAligner()
>>> seqA = "TTAACCCCATTTG"
>>> seqB = "AAGCCCCTTT"
>>> seqC = "AAAGGGGCTT"
>>> alignments = aligner.align(seqA, seqB)
>>> len(alignments)
1
>>> alignment = alignments[0]
>>> print(alignment)
target            0 TTAA-CCCCATTTG 13
                  0 --||-||||-|||- 14
query             0 --AAGCCCC-TTT- 10

请注意,seqC是seqB的反向补数。将其与反向链对齐会产生相同的对齐,但查询坐标会切换:

>>> alignments = aligner.align(seqA, seqC, strand="-")
>>> len(alignments)
1
>>> alignment = alignments[0]
>>> print(alignment)
target            0 TTAA-CCCCATTTG 13
                  0 --||-||||-|||- 14
query            10 --AAGCCCC-TTT-  0
__annotations__ = {}
__firstlineno__ = 87
__static_attributes__ = ()
class Bio.Blast.Hit(alignments=())

基类:Alignments

存储针对一个目标的单个查询的单个BLAST命中。

Bio.Blast.Hit 类继承自 Bio.Align.Alignments 类,它是Python列表的一个子集。的 Bio.Blast.Hit 类存储 Bio.Blast.HSP 对象,继承自 Bio.Align.Alignment .一 Bio.Blast.Hit 因此,对象实际上是一个 Bio.Align.Alignment 对象大多数命中仅由1个或几个对齐对象组成。

每个 Bio.Blast.Hit 对象具有 target 包含以下信息的属性:

  • target.id: 主题的seqId;

  • 目标。描述:主题定义线;

  • target.name: 主题加入;

  • len(Target.seq): 主题的序列长度。

请参阅文档 Bio.Blast.Record 有关中包含的路线中存储的信息的更详细解释 Bio.Blast.Hit object.

__getitem__(key)

回归自我 [index] .

__repr__()

返回repr(self)。

__str__()

返回Hit对象的人类可读摘要。

__abstractmethods__ = frozenset({})
__annotations__ = {}
__firstlineno__ = 205
__static_attributes__ = ()
class Bio.Blast.Record

基类:list

存储单个查询的BST结果。

A Bio.Blast.Record 对象是一个 Bio.Blast.Hit 对象,每个对象对应于BST输出中查询的一次命中。

Bio.Blast.Record 对象可能具有以下属性:
  • 询问: 一 SeqRecord 可能包含部分或全部的对象
    以下信息:
    • query.id: 查询的SeqId;

    • select. select:查询的定义行;

    • len(question.seq): 查询序列的长度。

  • 统计数据: 包含AMPS运行摘要统计数据的字典。可能
    包含以下键:
    • “db-num”: AMPS数据库中的序列数(integer);

    • “db-len”: AMPS dbd的长度(integer);

    • “hsp-len”: 有效热休克蛋白长度(整);

    • “eff-space”:有效搜索空间(float);

    • “kappa”: Karlin-Altschul参数K(浮动);

    • “尤利达”: Karlin-Altschul参数Lambda(float);

    • “熵”: Karlin-Altschul参数H(浮点)。

  • 消息:一些(错误?)信息.

每个 Bio.Blast.Hit 对象具有 target 包含以下信息的属性:

  • target.id: 主题的seqId;

  • 目标。描述:主题定义线;

  • target.name: 主题加入;

  • len(Target.seq): 主题的序列长度。

Bio.Blast.Hit 类继承自 Bio.Align.Alignments 类,它继承自Python列表。在此列表中, Bio.Blast.Hit 对象存储 Bio.Blast.HSP 对象,继承自 Bio.Align.Alignment 课 一 Bio.Blast.Hit 因此,对象实际上是对齐对象的列表。

每个热休克蛋白位于 Bio.Blast.Hit 对象具有属性 targetquery 属性,像往常一样 Bio.Align.Alignment 对象存储成对对齐,指向 SeqRecord 分别表示目标和查询的对象。 对于翻译的BST搜索, features 目标或查询的属性可能包含 SeqFeature 存储氨基酸序列区域的CDS型。 的 qualifiers 这样的特征的一个属性是具有单个键“coded_by”的字典;对应的值指定编码氨基酸序列的核苷酸序列区域,在具有基于1的坐标的GenBank风格字符串中。

每个 Bio.Blast.HSP 对象具有以下附加属性:

  • 得分: 热休克蛋白评分;

  • 注释:可能包含以下键的字典:
    • “bit score”:SPP(float)的分数(以位为单位);

    • “评估”: 热休克蛋白的e值(浮动);

    • “identification”:SPP中的身份数(integer);

    • '阳性':热休克蛋白阳性数(整);

    • “差距”: 热休克蛋白中的间隙数(整);

    • “中线”: 格式化中间行。

>>> from Bio import Blast
>>> record = Blast.read("Blast/xml_2212L_blastx_001.xml")
>>> record.query
SeqRecord(seq=Seq(None, length=556), id='gi|1347369|gb|G25137.1|G25137', name='<unknown name>', description='human STS EST48004, sequence tagged site', dbxrefs=[])
>>> record.stat
{'db-num': 2934173, 'db-len': 1011751523, 'hsp-len': 0, 'eff-space': 0, 'kappa': 0.041, 'lambda': 0.267, 'entropy': 0.14}
>>> len(record)
78
>>> hit = record[0]
>>> type(hit)
<class 'Bio.Blast.Hit'>
>>> from Bio.Align import Alignments
>>> isinstance(hit, Alignments)
True
>>> hit.target
SeqRecord(seq=Seq(None, length=319), id='gi|12654095|gb|AAH00859.1|', name='AAH00859', description='Unknown (protein for IMAGE:3459481) [Homo sapiens]', dbxrefs=[])

大多数命中仅由1个或几个对齐对象组成:

>>> len(hit)
1
>>> alignment = hit[0]
>>> type(alignment)
<class 'Bio.Blast.HSP'>
>>> alignment.score
630.0
>>> alignment.annotations
{'bit score': 247.284, 'evalue': 1.69599e-64, 'identity': 122, 'positive': 123, 'gaps': 0, 'midline': 'DLQLLIKAVNLFPAGTNSRWEVIANYMNIHSSSGVKRTAKDVIGKAKSLQKLDPHQKDDINKKAFDKFKKEHGVVPQADNATPSERF GPYTDFTP TTE QKL EQAL TYPVNT ERW  IA AVPGR K+'}

目标和查询信息存储在对齐的相应属性中:

>>> alignment.target
SeqRecord(seq=Seq({155: 'DLQLLIKAVNLFPAGTNSRWEVIANYMNIHSSSGVKRTAKDVIGKAKSLQKLDP...TKK'}, length=319), id='gi|12654095|gb|AAH00859.1|', name='AAH00859', description='Unknown (protein for IMAGE:3459481) [Homo sapiens]', dbxrefs=[])
>>> alignment.query
SeqRecord(seq=Seq('DLQLLIKAVNLFPAGTNSRWEVIANYMNIHSSSGVKRTAKDVIGKAKSLQKLDP...XKE'), id='gi|1347369|gb|G25137.1|G25137', name='<unknown name>', description='human STS EST48004, sequence tagged site', dbxrefs=[])

这是一次BLASTX运行,因此查询序列被翻译:

>>> len(alignment.target.features)
0
>>> len(alignment.query.features)
1
>>> feature = alignment.query.features[0]
>>> feature
SeqFeature(SimpleLocation(ExactPosition(0), ExactPosition(133)), type='CDS', qualifiers=...)
>>> feature.qualifiers
{'coded_by': 'gi|1347369|gb|G25137.1|G25137:1..399'}

即,核苷酸0:399(以零基坐标)编码比对中查询的氨基酸。

对于与反向链的比对,限定符中的位置如下所示:

>>> record[72][0].query.features[0].qualifiers
{'coded_by': 'complement(gi|1347369|gb|G25137.1|G25137:345..530)'}
__init__()

初始化Record对象。

__repr__()

返回repr(self)。

__str__()

返回url(self)。

__getitem__(key)

回归自我 [index] .

keys()

返回每次点击的target.id列表。

__contains__(key)

返回布尔(输入自我)。

index(key)

返回target.id等于关键字的命中指数。

__firstlineno__ = 322
__static_attributes__ = ('query',)
class Bio.Blast.Records(source)

基类:UserList

存储单次RST运行的RST结果。

A Bio.Blast.Records 对象是迭代器。迭代返回返回 Bio.Blast.Record 对象,每个对象对应于一个BLAST查询。

a的常见属性 Bio.Blast.Records 对象

  • 来源: 从其中 Bio.Blast.Records 对象

    构建了

  • 程序: 使用的特定BLAST程序(例如,“blastn”)。

  • 版本: BST程序的版本(例如,' BLACK 2.2.27 +')。

  • 参考文献:对AMPS出版物的文献参考。

  • DB: 运行查询所针对的BST数据库

    (e.g., ' nr ')。

  • 询问: 一 SeqRecord 可能包含部分或全部的对象
    以下信息:
    • query.id: 查询的SeqId;

    • select. select:查询的定义行;

    • query.seq: 查询序列。查询序列。

      查询序列。

  • 参数: 包含用于BST运行的参数的字典。
    您可能会在本词典中找到以下关键:
    • “矩阵”: BST运行中使用的评分矩阵

      (e.g.,“);

    • “期望”: 预期机会数量的阈值

      匹配(float);

    • “包括”: 包含的电子价值阈值

      psiblast(浮动)中的多遍模型;

    • 'sc-match': 匹配核苷酸的得分(整数);

    • “sc-mmatched”:错配的核苷酸评分

      (integer);

    • “缺口开放”: 缺口开盘成本(整);

    • “gap-extend”: 缺口扩展成本(整);

    • “过滤器”: AMPS中应用的过滤选项

      run(字符串);

    • “模式”: PHI-AMPS模式(字符串);

    • ' entrez-query ':对Deliverz查询的请求限制(字符串)。

  • mbstat: 包含Mega AMPS搜索统计数据的词典。 因为这

    信息存储在靠近该文档的结尾处,只有在完全读取该文件(通过迭代记录直到 StopIteration 已发出。此字典可以包含与存储在 stat 属性a Record object.

>>> from Bio import Blast
>>> path = "Blast/xml_2218_blastp_002.xml"

在脚本中,您可以使用 with 块,就像

>>> with Blast.parse(path) as records:
...     print(records.source)
...
Blast/xml_2218_blastp_002.xml

以确保文件在块结束时关闭。在这里,我们简单地做

>>> records = Blast.parse("Blast/xml_2218_blastp_002.xml")

这样我们就可以立即看到每个命令的输出。

>>> type(records)
<class 'Bio.Blast.Records'>
>>> records.source
'Blast/xml_2218_blastp_002.xml'
>>> records.program
'blastp'
>>> records.version
'BLASTP 2.2.18+'
>>> records.reference
'Altschul, Stephen F., Thomas L. Madden, Alejandro A. Schäffer, Jinghui Zhang, Zheng Zhang, Webb Miller, and David J. Lipman (1997), "Gapped BLAST and PSI-BLAST: a new generation of protein database search programs", Nucleic Acids Res. 25:3389-3402.'
>>> records.db
'gpipe/9606/Previous/protein'
>>> records.param
{'matrix': 'BLOSUM62', 'expect': 0.01, 'gap-open': 11, 'gap-extend': 1, 'filter': 'm L; R -d repeat/repeat_9606;'}

迭代记录返回Bio.Blast.Record对象:

>>> record = next(records)
>>> type(record)
<class 'Bio.Blast.Record'>
>>> record.query.id
'gi|585505|sp|Q08386|MOPB_RHOCA'
>>> record = next(records)
>>> type(record)
<class 'Bio.Blast.Record'>
>>> record.query.id
'gi|129628|sp|P07175.1|PARA_AGRTU'
>>> record = next(records)
Traceback (most recent call last):
...
StopIteration

您还可以将记录用作列表,例如通过索引提取记录或通过调用 lenprint 记录在案。然后,解析器将自动重写记录并存储它们:

>>> records = Blast.parse("Blast/wnts.xml")
>>> record = records[3]  # this causes all records to be read in and stored
>>> record.query.id
'Query_4'
>>> len(records)
5

读取记录后,您仍然可以重写它们:

>>> for i, record in enumerate(records):
...     print(i, record.query.id)
...
0 Query_1
1 Query_2
2 Query_3
3 Query_4
4 Query_5
__init__(source)

初始化Records对象。

__enter__()
__exit__(exc_type, exc_value, exc_traceback)
__iter__()
__next__()
__getitem__(index)
property data

重写userList的数据属性。

__repr__()

返回repr(self)。

__str__()

返回url(self)。

__abstractmethods__ = frozenset({})
__firstlineno__ = 570
__static_attributes__ = ('_index', '_loaded', '_parser', '_records', '_stream', 'source')
Bio.Blast.parse(source)

解析包含AMPS输出的ML文件并返回Bio.Blast.Records对象。

这返回一个迭代器对象;迭代它将逐个返回Bio.Blast.Record对象。

源可以是文件流或包含BST输出的ML文件的路径。如果是文件流,源必须处于二进制模式。这使得解析器能够检测到来自ML文件的编码,并使用它将ML中的任何文本转换为正确的Unicode字符串。Bio.Blast中的qblast函数以二进制模式返回文件流。对于文件,请在打开文件时使用模式“rb”,如中

>>> from Bio import Blast
>>> stream = open("Blast/wnts.xml", "rb")  # opened in binary mode
>>> records = Blast.parse(stream)
>>> for record in records:
...     print(record.query.id, record.query.description)
...
Query_1 gi|195230749:301-1383 Homo sapiens wingless-type MMTV integration site family member 2 (WNT2), transcript variant 1, mRNA
Query_2 gi|325053704:108-1166 Homo sapiens wingless-type MMTV integration site family, member 3A (WNT3A), mRNA
Query_3 gi|156630997:105-1160 Homo sapiens wingless-type MMTV integration site family, member 4 (WNT4), mRNA
Query_4 gi|371502086:108-1205 Homo sapiens wingless-type MMTV integration site family, member 5A (WNT5A), transcript variant 2, mRNA
Query_5 gi|53729353:216-1313 Homo sapiens wingless-type MMTV integration site family, member 6 (WNT6), mRNA
>>> stream.close()
Bio.Blast.read(source)

解析包含单个查询的BST输出的ML文件并返回它。

在内部,该函数使用Bio.Blast.parse来获取通过RST记录的迭代器。 然后,该函数从迭代器中读取一条记录,确保没有更多记录,并将找到的记录作为Bio.Blast.Record对象返回。如果找不到记录或找到多个记录,则引发异常。

源可以是文件流或包含BST输出的ML文件的路径。如果是文件流,源必须处于二进制模式。这使得解析器能够检测到来自ML文件的编码,并使用它将ML中的任何文本转换为正确的Unicode字符串。Bio.Blast中的qblast函数以二进制模式返回文件流。对于文件,请在打开文件时使用模式“rb”,如中

>>> from Bio import Blast
>>> stream = open("Blast/xml_21500_blastn_001.xml", "rb")  # opened in binary mode
>>> record = Blast.read(stream)
>>> record.query.id
'Query_78041'
>>> record.query.description
'G26684.1 human STS STS_D11570, sequence tagged site'
>>> len(record)
11
>>> stream.close()

如果您想要读取包含多个查询的BST输出的文件,请使用Bio.Blast.parse函数。

Bio.Blast.write(records, destination, fmt='XML')

将BLAST记录写入XML文件,并返回记录数。

论点:
  • 记录 - 一 Bio.Blast.Records object.

  • 目的地-要写入的文件或类似文件的对象,或文件名为

    string. File对象必须已在二进制模式下打开以进行写入,并且必须在此函数返回后由调用者关闭(或刷新)以确保所有记录都被写入。

  • fmt - 描述要写入的文件格式的字符串

    (不区分大小写)。目前,只接受“XML”和“XML2”。

返回写入的记录数(作为一个整数)。

Bio.Blast.qblast(program, database, sequence, url_base=NCBI_BLAST_URL, auto_format=None, composition_based_statistics=None, db_genetic_code=None, endpoints=None, entrez_query='(none)', expect=10.0, filter=None, gapcosts=None, genetic_code=None, hitlist_size=50, i_thresh=None, layout=None, lcase_mask=None, matrix_name=None, nucl_penalty=None, nucl_reward=None, other_advanced=None, perc_ident=None, phi_pattern=None, query_file=None, query_believe_defline=None, query_from=None, query_to=None, searchsp_eff=None, service=None, threshold=None, ungapped_alignment=None, word_size=None, short_query=None, alignments=500, alignment_view=None, descriptions=500, entrez_links_new_window=None, expect_low=None, expect_high=None, format_entrez_query=None, format_object=None, format_type='XML', ncbi_gi=None, results_file=None, show_overview=None, megablast=None, template_type=None, template_length=None, username='blast', password=None)

使用NCBI的QRST服务器进行RST搜索。

支持Put和Get旧qblast API的所有参数。

请注意,NCBI使用新的Common URL API在互联网上进行BST搜索(https://blast.ncbi.nlm.nih.gov/doc/blast-help/urlapi.html)。因此,该函数使用的一些参数不再(或不再)受到NCBI的官方支持。尽管它们仍在发挥作用,但未来可能会改变。

一些有用的参数:

  • 程序 blastp、blastx、tblastp或tblastx(小写)

  • 数据库 要搜索哪个数据库(例如“nr”)。

  • 序列 要搜索的序列。

  • ncbi_gi True/指定是否给出“gi”标识符。

  • 描述 要显示的描述数量。 Def 500。

  • 比对 要显示的路线数量。 Def 500。

  • 想到 期望值截止值。 Def 10.0。

  • 矩阵名称 指定另类。矩阵(PAM30、PAM70、BLOSUM80、BLOSUM45)。

  • 滤波器 “无”会关闭过滤。 默认无过滤

  • 格式_类型 “HTML”(默认)、“HTML”、“文本”、“ML2”、“JSON2”、

    或“表格”。

  • entrez_查询 Inbox查询以限制Blast搜索-仅适用于搜索核苷BLASTDB时

  • 命中列表大小 要返回的命中数。默认值50

  • Megablast 真/指定是否使用MEga BST算法(仅blaSYS)

  • 短查询 TRUE/确定是否调整

    简短的查询序列。请注意,这将覆盖手动设置的参数,例如字大小和e值。当序列长度> 30个残基时关闭。默认:无。

  • 服务 plain、psi、phi、rpsblast、megablast(大写)

该函数不检查参数的有效性,而是将值按原样传递给服务器。 更多帮助,请访问:https://blast.ncbi.nlm.nih.gov/doc/blast-help/urlapi.html

此函数返回的http.client.HTTPSResponse对象具有附加属性rid和rtoe,以及此RST搜索的请求ID和请求执行时间。