NR(Non-Redundant Protein Sequence Database)非冗余蛋白库,是所有GenBank+EMBL+DDBJ+PDB中的非冗余蛋白序列。
NR数据库包含了所有物种分类的蛋白序列数据,文章时间NR数据库大约83G大小,由于注释数据运行时间时间和数据库大小几乎呈集合级增长,另外防止其他物种序列影响注释结果,因此在NR数据库建库时可以根据NCBI提供的物种分类号文件对NR数据库序列进行分类,于我微生物研究方向一般使用bacteria和viruses的物种分类部分,因此本文章示例使用这两部分的分类内容,其余建库思路相似。
数据准备部分:
第一步,下载NR数据库序列和md5文件,大文件下载后最好验证一下文件完整性
可以在https网页下查看包含内容
https://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/
或者直接下载:
wget -c https://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/nr.gz
#加-c可以断点续传
md5sum -c nr.gz.md5 nr.gz
第二步,下载taxid的accession号,同样验证完整性
同样https浏览文件结构
https://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/
截至文章时间,prot.accession2taxid目前有两个文件,我下载了FULL版本:
wget -c https://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.FULL.gz
第三步:下载taxdump.tar.gz
wget ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz
解压下载文件:
gzip -d nr.gz
gzip -d accession2taxid/prot.accession2taxid.FULL.gz
tar zxvf taxdump.tar.gz
把解压后的taxdump文件包含的两个文件移到用户根目录下的.taxonkit路径中
mkidr ~/.taxonkit
cp names.dmp ~/.taxonkit
cp nodes.dmp ~/.taxonkit
数据准备完成后,根据accession文件和fasta文件对应来建立不同物种分类下的子库
序列提取方法很多,可以自己写脚本提取,也可以用NCBI的序列提取工具,工具会简单一些,但是也有人说用那些工具会有结果误差,无论哪种方法,数据库fasta文件提取出来以后最好检查一下数据库内容和完整性
序列提取用到的软件:
csvtk:https://bioinf.shenwei.me/csvtk/download/
taxonkit:https://bioinf.shenwei.me/taxonkit/download/
nr文件和accession文件解压后的格式如下
nr:
accession:
首先使用TaxonKit提取特定taxons下的所有taxid,细菌是2,病毒是10239:
taxonkit list --ids 2 --indent "" > bacteria.taxid.txt
taxonkit list --ids 10239 --indent "" > bacteria.taxid.txt
之后使用csvtk在prot.accession2taxid.gz文件中提取plant.taxid所有的accession:
cat prot.accession2taxid.FULL |/home/software/csvtk -t grep -f taxid -P taxid/2.bacteria/bacteria.taxid.txt |/home/software/csvtk -t cut -f accession.version > bacteria.taxid.acc.txt
wc -l bacteria.taxid.acc.txt
bacteria(2894144498)个taxid被找到,综合archaea(9261926)、viruses(7496359)、fungi(24447089)、eukaryota(98755300)的数量来看数量应该是对的
随后利用上面的得到的plant.taxid.acc.txt文件,我计算资源充足,可以使用blastdbcmd:
blastdbcmd可以从构建好的库里提取序列
构建NR库可以有两种方式,一种是上述下载链接直接下载构建,另一种可以从ftp下载已经构建好的NR库
#方法 1)
使用上面下载nr库解压后makeblastdb构建数据库
#方法 2)
wget -c https://ftp.ncbi.nlm.nih.gov/blast/db/nr.*
这里方法不完全,把00-38(2020-12-14)全都下载解压即可
随后使用blastdbcmd提取序列
blstdbcmd -db nr -entry_batch ../bacteria.taxid.acc.txt -out - | pigz -c > nr.bacteria.fa.gz
blast 或diamond建库即可
如果是想提取特定物种(比如植物)下的所有NR序列,那么可以按照http://bioinf.shenwei.me/taxonkit/tutorial/的方法,主要的也是利用blast+的blastdbcmd工具:
blastdbcmd -db nr -entry all -outfmt "%a\t%T" |csvtk -t grep -f 2 -P plant.taxid.acc.txt |csvtk -t cut -f 1 |blastdbcmd -db nr -entry_batch - -out nr.plant.fa
由于我不需要构建,因此最后这部分引用自网络:链接
另一篇参考文献://www.greatytc.com/p/1d6edfcb4110
还有一篇官方说明可供参考:https://bioinf.shenwei.me/taxonkit/tutorial/
由此建库基本完毕,可以使用