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