1. 从ncbi上下载数据
下载地址:https://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/
mac端:
安装brew,运行如下命令:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
安装wget命令:
brew install wget
安装md5sum命令(用于校验下载文件是否完整):
brew install md5sha1sum
尝试一:
wget -c https://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/nr.gz
wget -c https://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/nt.gz
-c 支持断点续传
结果:下载缓慢,结果不完整
尝试二:
rsync命令下载
rsync --copy-links --recursive --times --verbose rsync://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/nt.gz ./
结果:下载缓慢,结果不完整
尝试三:
aspera 下载
参考文章:
尝试conda 安装aspera
Conda 安装命令:
conda install -c hcc aspera-cli -y
但是报错:
You must agree to the license before using aspera-cli, http://www-03.ibm.com/software/sla/sladb.nsf/displaylis/2ABD3328689EBBFE8525830C007A5F38
不明觉厉,选择安装包安装
参考如下文章:
跳转至官网Aspera - Connect | IBM 下载推荐的apk安装包(4.2)进行安装(需进行注册)
但是最新版的安装之后在Resources目录下找不到需要的asperaweb_id_dsa.openssh 文件。
卸载之后安装低版本4.1,终于正常存在asperaweb_id_dsa.openssh 文件
使用如下命令进行下载:
/Users/XXX/Applications/Aspera\ Connect.app/Contents/Resources/ascp -i /Users/XXX/Applications/Aspera\ Connect.app/Contents/Resources/asperaweb_id_dsa.openssh --overwrite=diff -T -l6000m anonftp@ftp.ncbi.nlm.nih.gov:blast/db/FASTA/nt.gz /Users/XXX/database
Aspera的常用参数:
-T
不进行加密。若不添加此参数,可能会下载不了。
-i string
输入私钥,安装 aspera 后有在目录 Aspera\ Connect.app/Contents/Resources下有
--host=string
ftp的host名,NCBI的为ftp-private.ncbi.nlm.nih.gov;EBI的为fasp.sra.ebi.ac.uk。
--user=string
用户名,NCBI的为anonftp,EBI的为era-fasp。
-l string
设置最大传输速度,比如设置为 200M 则表示最大传输速度为 200m/s。若不设置该参数,则一般可达到10m/s的速度,而设置了,传输速度可以更高。
结果:速度很快,校验没有问题。
linux端(Ubuntu系统):
一样,wget和rsync很慢
Aspera相同,4.2版本也是找不到asperaweb_id_dsa.openssh 文件
4.1版本可正常下载,密钥的位置为~/.aspera/connect/etc/目录下。
若出现如下报错:
ascp: Failed to open TCP connection for SSH, exiting.
Session Stop (Error: Failed to open TCP connection for SSH)
命令中增加-P 33001
注意:大写P
2.获取nr/nt子库信息
参考文章:
a.提取对应物种的taxid
需要使用到的软件安装:
# taxonkit
conda install -c bioconda taxonkit
# csvtk
conda install csvtk
数据库:
wget -c https://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz
tar -zxvf taxdump.tar.gz
# 解压文件存于home目录中.taxonkit/,
程序默认数据库默认目录 mkdir -p $HOME/.taxonkit
cp names.dmp nodes.dmp delnodes.dmp merged.dmp $HOME/.taxonkit
准备完毕后,获取相应物种的taxonID
例如植物的:
grep -iw "plants" ~/.taxonkit/names.dmp
或者:
grep -P "\|\s+[pP]lant\w*\s*\|" ~/.taxonkit/names.dmp
可得到如下结果:
通过这种方式,可以获得不同物种taxonID
我获取的几种结果如下:
b.获取对应物种类群所包含的序列(accessionID获取)
获取accessionID数据,下载地址:
Index of /pub/taxonomy/accession2taxidhttps://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/nr库相关:https://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz
nt库相关:https://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/nucl_gb.accession2taxid.gz
写如下shell脚本,获取对应物种中的accessionID
~/software/taxonkit list --ids $1 --indent "" > $1.taxid.txt &&\
~/software/csvtk grep -t -f taxid -P $1.taxid.txt nucl_gb.accession2taxid | ~/software/csvtk cut -t -f accession.version,taxid | sed 1d > $1.acc2taxid.txt &&\
cut -f 1 $1.acc2taxid.txt > $1.acc.txt
运行sh getaccid.sh taxonID获取对应信息,例如:
sh getaccid.sh 3193
最终结果(xxx.acc.txt)中包含如下结果
可根据这个列表,通过seqkit软件获取对应的fa序列。
~/software/seqkit grep -f 10239.acc.txt nt.fa -o viruses.fa
~/software/seqkit grep -f 10509.acc.txt nt.fa -o Mastadenovirus.fa
~/software/seqkit grep -f 2157.acc.txt nt.fa -o archaea.fa
~/software/seqkit grep -f 2759.acc.txt nt.fa -o eukaryotes.fa
~/software/seqkit grep -f 2.acc.txt nt.fa -o bacteria.fa
~/software/seqkit grep -f 3193.acc.txt nt.fa -o plants.fa
~/software/seqkit grep -f 33208.acc.txt nt.fa -o animals.fa
~/software/seqkit grep -f 4751.acc.txt nt.fa -o fungi.fa
~/software/seqkit grep -f prokaryotes.acc.txt nt.fa -o prokaryotes.fa
3.根据fa文件构建index
blast+ index构建
命令如下:
nt:
~/software/ncbi-blast-2.13.0/bin/makeblastdb -in ~/Database/nt/animals.fa -dbtype nucl -input_type fasta -out animals -parse_seqids
nr:
~/software/ncbi-blast-2.13.0/bin/makeblastdb -in ~/Database/nr/animals.fa -dbtype prot -input_type fasta -out animals -parse_seqids
diamond index构建
~/software/diamond makedb --in animals.fa -d animals