BioPython:跳过糟糕的gidEntrez.e摘要/Entrez.阅读

2024-05-15 16:00:51 发布

您现在位置:Python中文网/ 问答频道 /正文

很抱歉这个奇怪的标题。在

我正在使用eSearch&esSummary从

登录号-->;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个相应的gid从这20个登记号码。在

其次是:

^{pr2}$

这给了我这个错误,因为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,这是可以的。在

我的问题是:

如何一次读取20个记录Entrez.read公司在不牺牲另外20个的情况下跳过丢失的那些?我可以一次做一个,但这将是难以置信的慢(我有300000个注册号,NCBI只允许你每秒执行3个查询,但实际上它更像是每秒1个查询)。在


Tags: gt标题列表readvaluencbientrezrecord
2条回答

我去看看分析器.py看看正在解析什么。看起来您从ncbiok得到了一个结果,但是一条记录的格式使解析器出错。

可能可以将解析器的子类/monkeypatch使其通过异常。

我给BioPython邮寄了一封信名单。显然这是个窃听器,他们正在研究。

相关问题 更多 >