从NCBI批量下载指定参考序列
不想学习了,过来写个post。
网页方法
进入下面这个网站,按指示操作。
http://www.ncbi.nlm.nih.gov/sites/batchentrez?
- 输入AC/GI号,保存为文本文件。
- 在mac里面可能比较方便的方法是:Textedit ctrl+command+t。但是我好像不怎么用得到,直接终端
vi
更香的亚子。
- 在mac里面可能比较方便的方法是:Textedit ctrl+command+t。但是我好像不怎么用得到,直接终端
- 选择对应数据库,这里是
Nucleotide
,传入上面的带有序列号的文本文件,点击Retrieve
返回搜索序列记录。 - 点击Retrieve records for xxx UID(s)
- Send to - file -fasta
命令行版本
使用NCBI Entrez Direct UNIX E-utilities.
下载安装文件: https://www.ncbi.nlm.nih.gov/books/NBK179288/bin/install-edirect.sh
进行安装
1 | source ./install-edirect.sh |
它会把一些目录写到.bashrc
里面,因此需要
1 | source ~/.bashrc |
下载序列,例如
1 | esearch -db nucleotide -query "NC_030850.1" | efetch -format fasta > NC_030850.1.fasta |
即可下载fasta序列。
如果有多个序列要下载,可以写一个小bash脚本。
例如原始的序列号可能由于一些原因是有重复的,可以将其进行一个重的去,举个例子
1 | cat xx.csv |cut -d, -f1 |uniq > ./index.txt |
然后写个download.sh
:用一个循环就可以遍历序列号下载了
1 | for line in {1..26075} |
批量下载,顾名思义,量有点多,必然要把脚本放到后台运行,然后我就可以出去玩了!
1 | nohup bash download.sh & |
花絮
在使用esearch
的时候,可能会遇到下面这个警告。
1 | perl: warning: Setting locale failed. |
主要原因是LC_ALL没有设置
LC_ALL变量设置命令’locale -a’输出的所有区域变量。它是一种方便的使用一个变量指定语言环境的方法,而不必指定每个LC_*变量。在该环境中启动的进程将在指定的区域设置中运行。
1 | $ locale |
解决办法是将export LC_ALL="en_US.UTF-8”
加到~/.bashrc最后一行。
然后可以看一下
1 | $ locale |
就不会再出现上述的警告了。
记得写过aspera下载NCBI数据,目的略有不同,各取所需,撤。