Bio. Deliverz包

子模块

模块内容

提供通过万维网访问NCBI的代码。

Deliverz主要网页可访问:http://www.ncbi.nlm.nih.gov/Entrez/

Deliverz编程实用程序网页可访问:http://www.ncbi.nlm.nih.gov/books/NBK25501/

此模块提供了许多功能,如 efetch (这将作为句柄对象返回数据)。这是Python中使用的标准接口,用于从文件读取数据,或者在本例中是从远程网络连接读取数据,并提供了以下方法: .read() 或者提供逐行的内容迭代。另见“什么是手柄?http://biopython.org/DIST/docs/tutorial/Tutorial.html http://biopython.org/DIST/docs/tutorial/Tutorial.pdf这些函数返回的句柄可以是文本模式,也可以是二进制模式,具体取决于请求的数据和NCBI BLOG z返回的结果。通常,XML数据将处于二进制模式,而其他数据将处于文本模式,这是下游解析器解析数据所要求的。

与磁盘上文件的句柄不同, open(filename) 函数,它有 .name 属性提供文件名、来自的手柄 Bio.Entrez 都有一个 .url 属性提供用于连接到NCBI Deliverz API的URL。

epost , efetch ,而且 esummary 工具采用“id”参数,该参数对应于一个或多个数据库UID(或在序列数据库(例如“nuccore”或“蛋白质”)的情况下,accessiation.Version标识符)。传递给这些函数的“id”关键字的Python值可以是作为字符串或integer的单个ID,也可以是作为字符串/integer的迭代对象的多个ID。您还可以传递包含多个由逗号分隔的ID的单个字符串。的 elink 工具还接受多个ID,但该参数的处理方式与其他三个ID不同。有关更多信息,请参阅该函数的文档字符串。

所有向NCBI Deliverz API发送请求的功能都将自动遵守NCBI速率限制(在没有API密钥的情况下每秒3个请求,或在有API密钥的情况下每秒10个请求),并在遇到暂时故障时自动重新尝试(即连接失败或HTT5XX代码)。默认情况下,Biopython在放弃之前最多尝试三次,并在尝试之间休眠15秒。您可以通过设置来调整这些参数 Bio.Entrez.max_triesBio.Entrez.sleep_between_tries .

Deliverz模块还提供了一个将手柄作为输入的ML解析器。

变量:

  • 电子邮件 设置Deliverz电子邮件参数(默认未设置)。

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

  • api_key 来自NCBI的个人API密钥。如果未设置,每秒仅允许3次查询。每秒10次查询,否则使用有效的API密钥。

  • max_tries 配置失败的请求将在错误时自动重新尝试多少次(默认为3)。

  • sleep_between_tries 因错误而重新尝试请求之前的延迟(以秒为单位)。

功能:

  • 电子提取 从一个或多个主要ID的列表或从用户环境中检索请求格式的记录

  • 电子公告 发布包含主要ID列表的文件,供将来在用户环境中使用,以用于后续搜索策略

  • esearch 初始化和检索主要ID(用于EFetch、ELink和Esummary)和术语翻译,并可以选择保留结果以供将来在用户环境中使用。

  • 屹领 检查一个或多个主要ID列表中是否存在外部或相关文章链接。 检索指向Deliverz数据库或相关文章的链接的主要ID和相关性分数;为特定ID和数据库创建指向主要LinkOut提供者的超链接,或列出多个ID的LinkOut URL和属性。

  • einfo 提供每个数据库的字段索引词条计数、上次更新和可用链接。

  • 概要 从主要ID列表或用户环境中检索文档摘要。

  • egquiry 为使用全局查询的单次搜索提供以HTML形式的Deliverz数据库计数。

  • 埃斯佩尔 检索拼写建议。

  • ecitmatch 检索与一组输入引用字符串对应的PubMed ID(PMID)。

  • 读 分析上述任何函数返回的ML结果。或者,也可以从以二进制模式打开的文件中读取HTML数据。典型用法是:

    >>> from Bio import Entrez
    >>> Entrez.email = "Your.Name.Here@example.org"
    >>> handle = Entrez.einfo() # or esearch, efetch, ...
    >>> record = Entrez.read(handle)
    >>> handle.close()
    

    其中记录现在是Python字典或列表。

  • 解析 分析上述函数返回的ML结果,这些函数可以返回多个记录-例如efetch、esummary和elink。典型用法是:

    >>> handle = Entrez.esummary(db="pubmed", id="19304878,14630660", retmode="xml")
    >>> records = Entrez.parse(handle)
    >>> for record in records:
    ...     # each record is a Python dictionary or list.
    ...     print(record['Title'])
    Biopython: freely available Python tools for computational molecular biology and bioinformatics.
    PDB file parser and structure class implemented in Python.
    >>> handle.close()
    

    此函数仅在ML文件包含多个记录时才适用,并且对于大文件特别有用。

  • _打开 内部使用的功能。

Bio.Entrez.epost(db, **keywds)

发布标识符文件以备将来使用。

发布包含UI列表的文件,供将来在用户环境中使用,以便与后续搜索策略一起使用。

有关参数的解释,请参阅在线文档:http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.EPost

返回:

处理结果。

抛出:

urllib.error.URLError -- 如果出现网络错误。

Bio.Entrez.efetch(db, **keywords)

获取Inbox结果,该结果作为处理返回。

EFetch从一个或多个UI的列表或集合或用户环境中检索所请求格式的记录。

有关参数的解释,请参阅在线文档:http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.EFetch

简短的例子:

>>> from Bio import Entrez
>>> Entrez.email = "Your.Name.Here@example.org"
>>> handle = Entrez.efetch(db="nucleotide", id="AY851612", rettype="gb", retmode="text")
>>> print(handle.readline().strip())
LOCUS       AY851612                 892 bp    DNA     linear   PLN 10-APR-2007
>>> handle.close()

如果NCBI建议的标识符超过200个,则将自动使用HTTSET而不是HTTGET。

Warning: NCBI于2012年2月更改了默认的重新模式,因此许多以前返回文本输出的数据库现在提供了ML。

返回:

处理结果。

抛出:

urllib.error.URLError -- 如果出现网络错误。

Bio.Entrez.esearch(db, term, **keywds)

运行Deliverz搜索并返回结果的处理。

ESSEARCH搜索和检索主要ID(用于EFetch、ELink和Esummary)和术语翻译,并可以选择保留结果以供将来在用户环境中使用。

有关参数的解释,请参阅在线文档:http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.ESearch

简短的例子:

>>> from Bio import Entrez
>>> Entrez.email = "Your.Name.Here@example.org"
>>> handle = Entrez.esearch(
...     db="nucleotide", retmax=10, idtype="acc",
...     term="opuntia[ORGN] accD 2007[Publication Date]"
... )
...
>>> record = Entrez.read(handle)
>>> handle.close()
>>> int(record["Count"]) >= 2
True
>>> "EF590893.1" in record["IdList"]
True
>>> "EF590892.1" in record["IdList"]
True
返回:

结果的处理,始终采用ML格式。

抛出:

urllib.error.URLError -- 如果出现网络错误。

检查链接的外部文章并返回手柄。

ELink检查一个或多个主要ID列表中是否存在外部或相关文章链接;检索指向Deliverz数据库或相关文章的链接的ID和相关性分数;为特定ID和数据库创建指向主要LinkOut提供者的超链接,或列出LinkOut URL和多个ID的属性。

有关参数的解释,请参阅在线文档:http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.ELink

请注意,当给定多个值时,ELink对待“id”参数的方式与其他工具不同。您通常应该将多个UID作为字符串或integer列表传递。这将在结果中提供从源数据库UID到目标数据库UID的“一对一”映射。如果多个源UID作为单个逗号分隔字符串传递,则所有目标UID将在结果中混合在一起。

此示例在PubMed数据库中查找与Biopython应用笔记条目相关的文章:

>>> from Bio import Entrez
>>> Entrez.email = "Your.Name.Here@example.org"
>>> pmid = "19304878"
>>> handle = Entrez.elink(dbfrom="pubmed", id=pmid, linkname="pubmed_pubmed")
>>> record = Entrez.read(handle)
>>> handle.close()
>>> print(record[0]["LinkSetDb"][0]["LinkName"])
pubmed_pubmed
>>> linked = [link["Id"] for link in record[0]["LinkSetDb"][0]["Link"]]
>>> "14630660" in linked
True

这在《Biopython》中有更详细的解释。

返回:

结果句柄,默认为XML格式。

抛出:

urllib.error.URLError -- 如果出现网络错误。

Bio.Entrez.einfo(**keywds)

返回Deliverz数据库的摘要作为结果处理。

EInfo提供了字段名称、索引项计数、最后更新和每个ESPIZZ数据库的可用链接。

有关参数的解释,请参阅在线文档:http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.EInfo

简短的例子:

>>> from Bio import Entrez
>>> Entrez.email = "Your.Name.Here@example.org"
>>> record = Entrez.read(Entrez.einfo())
>>> 'pubmed' in record['DbList']
True
返回:

结果句柄,默认为XML格式。

抛出:

urllib.error.URLError -- 如果出现网络错误。

Bio.Entrez.esummary(**keywds)

将文档摘要视为结果处理。

Esummary从主要ID列表或用户环境中检索文档摘要。

有关参数的解释,请参阅在线文档:http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.ESummary

此示例在结构数据库中发现了有关条目19923的更多信息:

>>> from Bio import Entrez
>>> Entrez.email = "Your.Name.Here@example.org"
>>> handle = Entrez.esummary(db="structure", id="19923")
>>> record = Entrez.read(handle)
>>> handle.close()
>>> print(record[0]["Id"])
19923
>>> print(record[0]["PdbDescr"])
CRYSTAL STRUCTURE OF E. COLI ACONITASE B
返回:

结果句柄,默认为XML格式。

抛出:

urllib.error.URLError -- 如果出现网络错误。

Bio.Entrez.egquery(**keywds)

为全球搜索提供Deliverz数据库计数(已废除)。

EGQuery为使用Global Query进行的单次搜索提供了以HTML形式的Deliverz数据库计数。然而,NCBI不再维护此功能,并建议在每个感兴趣的数据库上使用esbitt。

有关参数的解释,请参阅在线文档:http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.EGQuery

这个基于Biopython收件箱中较长版本的快速示例,只是检查PubMedCentral中是否有超过60个“Biopython”匹配项:

>>> from Bio import Entrez
>>> Entrez.email = "Your.Name.Here@example.org"
>>> handle = Entrez.egquery(term="biopython")
>>> record = Entrez.read(handle)
>>> handle.close()
>>> for row in record["eGQueryResult"]:
...     if "pmc" in row["DbName"]:
...         print(int(row["Count"]) > 60)
True
返回:

结果句柄,默认为XML格式。

抛出:

urllib.error.URLError -- 如果出现网络错误。

Bio.Entrez.espell(**keywds)

将拼写建议视为结果处理。

ESpell检索拼写建议(如果可用)。

有关参数的解释,请参阅在线文档:http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.ESpell

简短的例子:

>>> from Bio import Entrez
>>> Entrez.email = "Your.Name.Here@example.org"
>>> record = Entrez.read(Entrez.espell(term="biopythooon"))
>>> print(record["Query"])
biopythooon
>>> print(record["CorrectedQuery"])
biopython
返回:

结果句柄,默认为XML格式。

抛出:

urllib.error.URLError -- 如果出现网络错误。

Bio.Entrez.ecitmatch(**keywds)

为输入引用字符串指定PMID,作为处理返回。

ECitMatch检索与一组输入引用字符串对应的PubMed ID(PMID)。

有关参数的解释,请参阅在线文档:http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.ECitMatch

简短的例子:

>>> from Bio import Entrez
>>> Entrez.email = "Your.Name.Here@example.org"
>>> citation_1 = {"journal_title": "proc natl acad sci u s a",
...               "year": "1991", "volume": "88", "first_page": "3248",
...               "author_name": "mann bj", "key": "citation_1"}
>>> handle = Entrez.ecitmatch(db="pubmed", bdata=[citation_1])
>>> print(handle.read().strip().split("|"))
['proc natl acad sci u s a', '1991', '88', '3248', 'mann bj', 'citation_1', '2014248']
>>> handle.close()
返回:

结果句柄,默认为纯文本。

抛出:

urllib.error.URLError -- 如果出现网络错误。

Bio.Entrez.read(source, validate=True, escape=False, ignore_errors=False)

将NCBI Deliverz Utilities中的ML文件解析为Python对象。

该函数解析由NCBI的Deliverz Utilities创建的一个ML文件,返回Python列表和字典的多层数据结构。只要其DART可用,该函数都可以解析NCBI的Deliverz Utilities返回的大多数ML文件。Biopython包括最常用的Deliverz Utilities的DDD。

的论点 source 必须是以二进制模式打开的文件或类似文件的对象,或者是文件名。解析器检测来自ML文件的编码,并使用它将ML中的所有文本转换为正确的Unicode字符串。Bio. Deliverz中访问NCBI Deliverz的函数将自动以二进制模式返回HTML数据。对于文件,打开文件时使用模式“rb”,如中

>>> from Bio import Entrez
>>> path = "Entrez/esearch1.xml"
>>> stream = open(path, "rb")  # opened in binary mode
>>> record = Entrez.read(stream)
>>> print(record['QueryTranslation'])
biopython[All Fields]
>>> stream.close()

或者,您可以直接使用文件名,如中

>>> record = Entrez.read(path)
>>> print(record['QueryTranslation'])
biopython[All Fields]

这更安全,因为文件流将在读取记录后或发生错误后自动关闭。

如果validate为True(默认值),解析器将根据DART验证该文档,如果该文档包含未在DART中表示的标签,则会引发错误。如果validate为False,解析器将简单地跳过此类标签。

如果escape为True,则所有不是有效HTML的字符都将替换为HTML转义字符,以保证返回的字符串是有效的HTML片段。例如,小于号(<)被替换为。如果escape为False(默认值),则字符串按原样返回。

如果ignore_errors为False(默认值),则ML文件中的任何错误消息都将引发RuntimeMessage。如果ignore_errors为True,则错误消息将存储为WRElement项,而不会引发异常。

尽管数据结构似乎由通用Python列表、字典、字符串等组成,但其中每一个实际上都是从基类型派生的类。这允许我们将每个元素的属性(如果有的话)存储在字典my_Element. attractors中,并将标签名称存储在my_element.tag_0中。

Bio.Entrez.parse(source, validate=True, escape=False, ignore_errors=False)

将NCBI Deliverz Utilities中的ML文件解析为Python对象。

该函数解析由NCBI的Deliverz Utilities创建的一个ML文件,返回Python列表和字典的多层数据结构。此函数适用于XML文件,这些文件(在Python中)可以表示为单个记录的列表。“read”读取整个文件并返回一个Python列表,而“parse”是一个生成器函数,它逐个返回记录。因此,此函数对于解析大文件特别有用。

只要其DART可用,该函数都可以解析NCBI的Deliverz Utilities返回的大多数ML文件。Biopython包括最常用的Deliverz Utilities的DDD。

的论点 source 必须是以二进制模式打开的文件或类似文件的对象,或者是文件名。解析器检测来自ML文件的编码,并使用它将ML中的所有文本转换为正确的Unicode字符串。Bio. Deliverz中访问NCBI Deliverz的函数将自动以二进制模式返回HTML数据。对于文件,打开文件时使用模式“rb”,如中

>>> from Bio import Entrez
>>> path = "Entrez/pubmed1.xml"
>>> stream = open(path, "rb")  # opened in binary mode
>>> records = Entrez.parse(stream)
>>> for record in records:
...     print(record['MedlineCitation']['Article']['Journal']['Title'])
...
Social justice (San Francisco, Calif.)
Biochimica et biophysica acta
>>> stream.close()

或者,您可以直接使用文件名,如中

>>> records = Entrez.parse(path)
>>> for record in records:
...     print(record['MedlineCitation']['Article']['Journal']['Title'])
...
Social justice (San Francisco, Calif.)
Biochimica et biophysica acta

这更安全,因为文件流将在读取所有记录后或发生错误后自动关闭。

如果validate为True(默认值),解析器将根据DART验证该文档,如果该文档包含未在DART中表示的标签,则会引发错误。如果validate为False,解析器将简单地跳过此类标签。

如果escape为True,则所有不是有效HTML的字符都将替换为HTML转义字符,以保证返回的字符串是有效的HTML片段。例如,小于号(<)被替换为。如果escape为False(默认值),则字符串按原样返回。

如果ignore_errors为False(默认值),则ML文件中的任何错误消息都将引发RuntimeMessage。如果ignore_errors为True,则错误消息将存储为WRElement项,而不会引发异常。

尽管数据结构似乎由通用Python列表、字典、字符串等组成,但其中每一个实际上都是从基类型派生的类。这允许我们将每个元素的属性(如果有的话)存储在字典my_Element. attractors中,并将标签名称存储在my_element.tag_0中。