1.下载数据db文件
这次主要用到2中类型的蛋白质数据nr和nt,下载地址:ftp://ftp.ncbi.nlm.nih.gov/blast/db,由于nr和nt比较大,建议使用迅雷下载分割的小文件(nr64个,nt45个),如nr.00.tar.gz
2.解压所有的.gz文件
可以使用通配符解压(不知为何中途出错),
tar -xzvf *.gz
也可以使用脚本命令解压,下面给出python的解压代码
import os
for i in range(0,65):
os.system("tar -xzvf nr.%02d.tar.gz"%i)
3.使用命令获得PSSM特征矩阵
psiblast -query /home/javis/data_base/1a2yC -db /home/javis/data_base/nr/nr -num_iterations 3 -out test1 -out_ascii_pssm test1.pssm
-query 是待匹配的fasta文件
-db 是之前解压的数据文件目录,这里注意所有的nr文件都是放在/home/javis/data_base/nr/下,但是-db 的后面必须再追加nr(nr为下载的数据库前缀),否则会出现如下错误
BLAST Database error: No alias or index file found for protein database [/home/javis/data_base/nr2] in search path [/home/javis/data_base/nt::]
-num_iterations 3 迭代次数为3次
-out test1 输出文件
-out_ascii_pssm test1.pssm 矩阵输出文件
最后注意,下载的文件最好和服务器提供的md5码比对下,如果其中一个文件损坏,会导致C++异常
BLAST Database error: CSeqDBAtlas::MapMmap: While mapping file [/home/javis/data_base/nr/nr.33.psq] with 13124431561 bytes allocated, caught exception:
NCBI C++ Exception:
"/build/buildd/ncbi-blast+-2.2.28/c++/src/objtools/blast/seqdb_reader/seqdbatlas.cpp", line 152: Error: ncbi::SeqDB_ThrowException() - Validation failed: [end <= file_size] at /build/buildd/ncbi-blast+-2.2.28/c++/src/objtools/blast/seqdb_reader/seqdbatlas.cpp:506