编程语言
首页 > 编程语言> > BioPython:使用Entrez.esummary / Entrez.read跳过不良的GID

BioPython:使用Entrez.esummary / Entrez.read跳过不良的GID

作者:互联网

对不起,奇怪的标题.

我正在使用eSearch&电子摘要来自

登记号-> gID->税号

假设“登录号”是20个登录号的列表(我一次执行20个登录号,因为这是NCBI允许的最大值).

我做:

handle = Entrez.esearch(db="nucleotide", rettype="xml", term=accessions)
record = Entrez.read(handle)
gids = ",".join(record[u'IdList'])

这使我从这20个登录号中获得了20个对应的GID.

其次是:

handle = Entrez.esummary(db="nucleotide", id=gids)
record = Entrez.read(handle)

这给了我这个错误,因为gid中的一个GID已从NCBI中删除:

File ".../biopython-1.52/build/lib.macosx-10.6-universal-2.6/Bio/Entrez/Parser.py", line 191, in endElement value = IntegerElement(value)
ValueError: invalid literal for int() with base 10: ''

我可以尝试::,除了:否则可以跳过其他19个GID,这是可以的.

我的问题是:

如何使用Entrez.read一次读取20条记录,并在不牺牲其他20条记录的情况下跳过那些丢失的记录?我可以一次执行一次,但是速度会非常慢(我有30万个登录号,而NCBI仅允许您每秒执行3个查询,但实际上,它更像是每秒1个查询).

解决方法:

我向BioPython邮件列表发送了一条消息.显然这是一个错误&他们正在努力.

标签:biopython,bioinformatics,python
来源: https://codeday.me/bug/20191210/2101909.html