在
上一篇文章
中介绍用的来批量下载序列,那篇文章只是这一篇的一个引子,起到抛砖引玉的作用。那种方法确实很方便,但是那种方法需要我们先通过NCBI网页端下载得到的列表,然后用列表来批量下载序列。如果我只有一个基因,那么这样下载起来还算方便,但是如果我有n个基因然后想下载n个基因在m个不同物种当中的序列,那么用这种方法我起码要先在NCBI中搜索n次,但是我不想搜索n次,我只想一步到位,即利用一个关键词就得到所有我需要的结果。
除了之前介绍的之外,还有另外一个比较好用的api工具Entrez Programming Utilities[1],这个工具主要依托于,安装方法可参考[2]但是今天我在上面尝试了一下,总是报错,恰好我在里面也有这个api的模块[3],于是干脆用。
经过一番研究后,我发现可以这么做:
确认搜索语法
先在NCBI中搜索下,确认下搜索语法,比方说我想在NCBI的数据库中搜索鸟类中的VAPA基因,那么我先在NCBI的搜索框中输入,然后可以看见在NCBI的右侧有搜索语法显示
用获得符合条件的数据列表
于是我们可以先用来搜索得到所有的id列表
的功能是通过特定关键词在数据库中进行检索,返回符合条件的条目的列表。我们需要修改的地方是, Entrez.esearch里的。
利用和的结果来下载序列
在这里先解释一下,为什么要先通过来获得序列的编号列表,然后再通过来下载序列呢?首先只有搜索关键词并返回结果的id的功能,没有下载的功能,而只有根据来下载序列的功能没有根据关键词来下载序列的功能。
的主要参数有如下几个
主要参数有如下几个
运行以上代码后,就可以下载nucleotide数据库中所有鸟类的基因的序列,我检查了一下,用这个脚本下载下来的序列数量和序列与直接从NCBI网页端下载下来的相同。
剩下的具体参数和细节各位自己去探索吧,另外我根据上面的代码写了一个脚本,现在已经上传到github[5]。
参考资料
1.https://www.ncbi.nlm.nih.gov/books/NBK25501/
3.http://biopython.org/DIST/docs/tutorial/Tutorial.html#htoc120
4.https://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.EFetch
5.https://github.com/xieduo7/my_script/blob/master/ncbi/ncbi_download.py
领取专属 10元无门槛券
私享最新 技术干货