Bio.Entrez包¶
子模块¶
- Bio.Entrez.Parser模块
NoneElement
IntegerElement
StringElement
ListElement
DictionaryElement
NotXMLError
CorruptedXMLError
ValidationError
DataHandlerMeta
DataHandler
DataHandler.global_dtd_dir
DataHandler.global_xsd_dir
DataHandler.local_dtd_dir
DataHandler.local_xsd_dir
DataHandler.__init__()
DataHandler.read()
DataHandler.parse()
DataHandler.xmlDeclHandler()
DataHandler.handleMissingDocumentDefinition()
DataHandler.startNamespaceDeclHandler()
DataHandler.endNamespaceDeclHandler()
DataHandler.schemaHandler()
DataHandler.startElementHandler()
DataHandler.startRawElementHandler()
DataHandler.startSkipElementHandler()
DataHandler.endStringElementHandler()
DataHandler.endRawElementHandler()
DataHandler.endSkipElementHandler()
DataHandler.endErrorElementHandler()
DataHandler.endElementHandler()
DataHandler.endIntegerElementHandler()
DataHandler.characterDataHandlerRaw()
DataHandler.characterDataHandlerEscape()
DataHandler.skipCharacterDataHandler()
DataHandler.parse_xsd()
DataHandler.elementDecl()
DataHandler.open_dtd_file()
DataHandler.open_xsd_file()
DataHandler.save_dtd_file()
DataHandler.save_xsd_file()
DataHandler.externalEntityRefHandler()
模块内容¶
提供通过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_tries
和 Bio.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
- Bio.Entrez.elink(**keywds)¶
检查链接的外部项目并返回句柄。
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片段。例如,小于号(<)将替换为<;。如果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片段。例如,小于号(<)将替换为<;。如果ESCAPE为FALSE(默认值),则按原样返回字符串。
虽然数据结构似乎由泛型Python列表、字典、字符串等组成,但它们实际上都是从基类型派生的类。这允许我们将每个元素的属性(如果有的话)存储在字典my_element.tributes中,并将标记名存储在my_element.tag中。