Diamond
将序列比对到nt、nr、uniprot、pfam等数据库是常有的事,blast无疑是最常用的比对软件,但是它的速度一直提不起来,非常耗费时间。估计比对等不到blast的结果了,于是想到了另一款软件Diamond
Diamond简介
序列比对软件,能输出与BLAST类似的结果,但是速度快了数百倍。
对于长序列,支持Frameshift alignments;
占用资源更少,但只是相对blast来讲;
自定义多种输出格式
记得引用:
Buchfink B, Xie C, Huson DH, “Fast and sensitive protein alignment using DIAMOND”, Nature Methods 12, 59-60 (2015). doi:10.1038/nmeth.3176
Diamond使用
还是conda安装好diamond,说明书在此:https://github.com/bbuchfink/diamond/raw/master/diamond_manual.pdf
第一步: 准备数据集
先从NCBI上下载蛋白数据库。 NR库是NCBI的非冗余蛋白数据库,
wget ftp://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/nr.gz
gunzip nr.gz
第二步: 建库
就两个参数,--in nr输入文件,--db nr 输出的数据库前缀
diamond makedb --in nr.faa -db nr -p 20
最近下载了一个nr数据库,解压完是110G,命名为nr.faa.
结果会生成一个nr.dmnd的索引文件
我用了20核构建了110G的nr数据库,用时5726.56s,作为参考
Pfam数据库7.1G,24核用时190.931s,还是非常快的
附带数据库下载地址:
Nr:http://mirrors.vbi.vt.edu/mirrors/ftp.ncbi.nih.gov/blast/db/FASTA/nr.gz
Pfam:ftp://ftp.ebi.ac.uk/pub/databases/Pfam/releases/Pfam32.0/Pfam-A.fasta.gz
第三步: 搜索
就两个子命令,blastp和blastx,前者比对蛋白,后者比对DNA序列
# 因为要将核酸序列比对到蛋白库,因此使用blastx功能
diamond blastx -d nr -q reads.fna -o nr.matches
默认输出格式是BLAST的tab结果,-o指定输出文件名
- -q/ –query输入检索序列
- –out/ -o输出文件,默认以–outfmt 6输出结果和BLAST+的–outfmt 6结果一致。
需要注意的是:
- 这个过程需要消耗大量的内存与硬盘(用于存放临时文件),如果资源不够,可以设置
-b参数调整 - 默认的比对模式(fast模式)是针对短序列的,如果要比对的序列比较长,建议使用sensitive模式,设置
—sensitive或者--more-sensitive - 运行时间不与比对文件大小成正比,相反,文件越大(比如大于1M reads)比对速度越快
- 比对结果中的X表示Masked residues
- 默认的阈值是0.001而Blast是10,相比之下,diamond比对更严格,得到的weak hits会更少