对不起,奇怪的标题。
我正在使用 eSearch 和 eSummary 从
入藏号 --> gID --> TaxID
假设“accessions”是一个包含 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)
这给了我这个错误,因为 gids 中的一个 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 条记录?我可以一次做一个,但这会非常慢(我有 300,000 个登录号,而 NCBI 只允许您每秒进行 3 次查询,但实际上它更像是每秒 1 次查询)。