Bio.Entrez包

子模块

模块内容

提供通过WWW访问NCBI的代码。

有关恩特雷兹的主要网页,请访问:http://www.ncbi.nlm.nih.gov/Entrez/

有关Entrez编程实用程序的网页,请访问:http://www.ncbi.nlm.nih.gov/books/NBK25501/

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

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

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

Entrez模块还提供了一个XML解析器,该解析器接受句柄作为输入。

变量:

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

  • 工具设置Entrez工具参数(默认值为 biopython )。

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

  • MAX_TRIES配置出错时自动重试失败请求的次数(默认值为3)。

  • SLEEP_BETWEEN_尝试出错时重试请求之前的延迟(以秒为单位)(默认值为15)。

功能:

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

  • ePost发布一个包含主要ID列表的文件,以供将来在用户环境中使用,以便与后续搜索策略一起使用

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

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

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

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

  • egquery使用Global Query为单一搜索提供XML格式的Entrez数据库计数。

  • espell检索拼写建议。

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

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

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

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

  • 解析由上述函数返回的XML结果,这些函数可以返回多个记录-例如efetch、esumary和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()
    

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

  • _OPEN内部使用的函数。

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

发布一个标识符文件以供将来使用。

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

有关参数的说明,请参阅联机文档:http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.EPost

返回结果的句柄。

如果存在网络错误,则引发ioerror异常。

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

获取作为句柄返回的Entrez结果。

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

有关参数的说明,请参阅联机文档:http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.EFetch

返回结果的句柄。

如果存在网络错误,则引发ioerror异常。

简短的示例:

>>> 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个,这将自动使用HTTP POST而不是HTTP GET。

警告: NCBI在2012年2月更改了默认的retmode,因此许多以前返回文本输出的数据库现在都提供XML。

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

运行Entrez搜索并返回结果的句柄。

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

有关参数的说明,请参阅联机文档:http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.ESearch

返回始终为XML格式的结果的句柄。

如果存在网络错误,则引发ioerror异常。

简短的示例:

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

检查链接的外部项目并返回句柄。

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

有关参数的说明,请参阅联机文档:http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.ELink

返回结果的句柄,默认情况下为XML格式。

如果存在网络错误,则引发ioerror异常。

此示例在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"]]
>>> "17121776" in linked
True

在Biopython教程中对此进行了更详细的说明。

Bio.Entrez.einfo(**keywds)

返回Entrez数据库的摘要作为结果句柄。

EInfo为每个Entrez数据库提供字段名称、索引项计数、上次更新和可用的链接。

有关参数的说明,请参阅联机文档:http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.EInfo

返回结果的句柄,默认情况下为XML格式。

如果存在网络错误,则引发ioerror异常。

简短的示例:

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

检索文档摘要作为结果句柄。

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

有关参数的说明,请参阅联机文档:http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.ESummary

返回结果的句柄,默认情况下为XML格式。

如果存在网络错误,则引发ioerror异常。

此示例发现有关结构数据库中条目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
Bio.Entrez.egquery(**keywds)

为全局搜索提供Entrez数据库计数。

EGQuery以XML格式提供Entrez数据库计数,用于使用Global Query进行单一搜索。

有关参数的说明,请参阅联机文档:http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.EGQuery

以XML格式返回结果的句柄。

如果存在网络错误,则引发ioerror异常。

这个快速示例基于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
Bio.Entrez.espell(**keywds)

将拼写建议作为结果句柄检索。

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

有关参数的说明,请参阅联机文档:http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.ESpell

返回结果的句柄,默认情况下为XML格式。

如果存在网络错误,则引发ioerror异常。

简短的示例:

>>> 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
Bio.Entrez.ecitmatch(**keywds)

检索作为句柄返回的输入引用字符串的PMID。

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

有关参数的说明,请参阅联机文档:http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.ECitMatch

返回结果的句柄,默认情况下以纯文本形式返回

如果存在网络错误,则引发ioerror异常。

简短的示例:

>>> 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()
Bio.Entrez.read(handle, validate=True, escape=False)

将NCBI Entrez Utilities中的XML文件解析为python对象。

此函数解析由NCBI的Entrez实用程序创建的XML文件,返回Python列表和字典的多级数据结构。此函数可以解析NCBI的Entrez实用程序返回的大多数XML文件,前提是其DTD可用。Biopython包括最常用的Entrez实用程序的DTD。

句柄必须为二进制模式。这允许解析器检测XML文件中的编码,并使用它将XML中的所有文本转换为正确的Unicode字符串。Bio.Entrez中用于访问NCBI Entrez的函数将自动以二进制模式返回XML数据。对于文件,请在打开文件时使用模式“RB”,如

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

如果VALIDATE为True(默认值),解析器将根据DTD验证XML文件,如果XML文件包含未在DTD中表示的标记,则会引发错误。如果VALIDATE为FALSE,解析器将简单地跳过这些标记。

如果ESCAPE为True,则所有无效的HTML字符都将替换为HTML转义字符,以确保返回的字符串是有效的HTML片段。例如,小于号(<)将替换为&lt;。如果ESCAPE为FALSE(默认值),则按原样返回字符串。

虽然数据结构似乎由泛型Python列表、字典、字符串等组成,但它们实际上都是从基类型派生的类。这允许我们将每个元素的属性(如果有的话)存储在字典my_element.tributes中,并将标记名存储在my_element.tag中。

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

将NCBI Entrez Utilities中的XML文件解析为python对象。

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

此函数可以解析NCBI的Entrez实用程序返回的大多数XML文件,前提是其DTD可用。Biopython包括最常用的Entrez实用程序的DTD。

句柄必须为二进制模式。这允许解析器检测XML文件中的编码,并使用它将XML中的所有文本转换为正确的Unicode字符串。Bio.Entrez中用于访问NCBI Entrez的函数将自动以二进制模式返回XML数据。对于文件,请在打开文件时使用模式“RB”,如

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

如果VALIDATE为True(默认值),解析器将根据DTD验证XML文件,如果XML文件包含未在DTD中表示的标记,则会引发错误。如果VALIDATE为FALSE,解析器将简单地跳过这些标记。

如果ESCAPE为True,则所有无效的HTML字符都将替换为HTML转义字符,以确保返回的字符串是有效的HTML片段。例如,小于号(<)将替换为&lt;。如果ESCAPE为FALSE(默认值),则按原样返回字符串。

虽然数据结构似乎由泛型Python列表、字典、字符串等组成,但它们实际上都是从基类型派生的类。这允许我们将每个元素的属性(如果有的话)存储在字典my_element.tributes中,并将标记名存储在my_element.tag中。