如何使用NCBI Batch Entrez获取所有记录

时间:2013-04-03 17:05:43

标签: bioinformatics

我在平面文件中有超过200,000个加入,需要从NBCI检索相关条目。

我使用Batch Entrez(http://www.ncbi.nlm.nih.gov/sites/batchentrez)来完成这项工作。但遇到了几个问题:

  1. 初始文件被拆分为多个子文件,每个子文件包含4000行。但似乎Batch Entrez对返回的文件有一些大小限制。例如:如果前1000个种质都有数万行达到大小限制,那么其余的3000种种质将被拒绝并且不会被搜索。
  2. 我头脑中的一个可能的解决方案是将文件拆分为更多子文件并单独搜索。然而,这需要太多的手动工作。

    所以我只是想知道是否有其他解决方案,或者可以使用任何代码。

    提前致谢

1 个答案:

答案 0 :(得分:1)

您的问题听起来非常适合Bio-star工具包。这是使用BioSmalltalk

的解决方案
| giList gbReader |
giList := (BioObject openFullFileNamed: 'd:\Batch_entrez_1.txt') contents lines.
gbReader := BioNCBIGenBankReader new.
gbReader
    genBankRecordsFrom: 'nuccore'
    format: #setModeXML
    uids: giList.
(BioGBSeqCollection newFromXMLCollection: gbReader searchResults)
    collect: [: e | BioParser 
                       tokenizeNcbiXmlBlast: e contents 
                       nodes: #('GBAuthor' 'GBSeq_definition') ]

要执行/调试脚本,只需选择它,然后右键单击将打开Smalltalk世界菜单。

API自动拆分并获取您的入藏列表(在Batch_entrez_1.txt中包含的脚本中),维护NCBI Entrez帖子限制以避免处罚。

结果格式是XML(解析或过滤特定字段的“简单”格式),尽管它可以是retrieval modes supported by Entrez中的任何一个,例如设置#setModeText将回答ASN.1表示。将“nuccore”替换为要查询的数据库。最后选择有趣的字段,在脚本中我选择了“GBAuthor”和“GBSeq_definition”,但您可以自由选择available nodes中的任何一个。