作为一个新手,初次使用PSSM矩阵,感觉无从下手,经过一番研究,终于得到了生成PSSM矩阵的方法,为了给更多像我这样的小白一点思路,特写下我做PSSM矩阵的一些方法,希望能给大家一些帮助,也欢迎大家进行批评指正。
1.下载ncbi-blast,下载地址为:ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/,选择适合自己电脑的版本(windows/macos/linux),利用xftp将其传入服务器【我用的是xshell和xftp,Xshell可以在Windows界面下用来访问远端不同系统下的服务器,xftp用以传输文件】
2.将下载的blast进行解压,解压指令为:tar -xzvf ncbi-blast-2.7.1+x64-linux.tar.gz(下载的blast的压缩文件,在linux系统上可以使用tab键打全) 解压完后,可以ls一下,查看是否解压成功,解压完成后,使用cd ncbi-blast-2.7.1+,再ls可查看一下ncbi-blast-2.7.1里面的内容。
3.再去下载所需要的数据库(nr库)
用到的是蛋白质序列,下载nr库即可,下载地址:ftp://ftp.ncbi.nlm.nih.gov/blast/db/ ,nr库比较大,用迅雷批量下载。还可以暂时使用swissprot库代替一下。
4.下载完后,将下载的文件进行批量解压,使用指令:ls *.tar.gz | xargs -n1 tar xzvf
5.将下载的数据库进行格式化数据,用到makeblastdb:/home/xzsang/ncbi-blast-2.7.1+/bin/makeblastdb -in /home/xzsang/ncbi-blast-2.7.1+/db/sp/uniprot_sprot.fasta -dbtype prot -title sp -out /home/xzsang/ncbi-blast-2.7.1+/db/sp/sp -parse_seqids
6.简单的代码输出矩阵(这样是输出单条序列的pssm矩阵):/home/xzsang/ncbi-blast-2.7.1+/bin/psiblast -query /home/xzsang/query.fasta -db /home/xzsang/ncbi-blast-2.7.1+/db/sp/sp -num_iterations 3 -out 1 -out_ascii_pssm 1.pssm
7.批量输出PSSM矩阵:可使用pycharm编写的python 程序,程序如下:
#!/usr/bin/python
# -*- coding:utf-8 -*-
import os
totalSize = 0
fileNum = 0
dirNum = 0
def visitDir(path):
global totalSize
global fileNum
global dirNum
for lists in os.listdir(path):
sub_path = os.path.join(path, lists)
if os.path.isfile(sub_path):
fileNum = fileNum+1 # 统计文件数量
totalSize = totalSize+os.path.getsize(sub_path) # 文件总大小
elif os.path.isdir(sub_path):
dirNum = dirNum+1
visitDir(sub_path)
visitDir("/home/xzsang/binder/")
print(fileNum)
for i in range(1,fileNum+1):
os.system("/home/xzsang/ncbi-blast-2.7.1+/bin/psiblast -query /home/xzsang/binder/split_"+ str(i)+".fasta"+" -db /home/xzsang/ncbi-blast-2.7.1+/db/sp/sp -num_iterations 3"+" -out_ascii_pssm "+str(i)+".pssm")
将该程序放到服务器上,在操作系统上执行该程序即可,运行出来的结果就是批量生成的PSSM矩阵(可分开两部分做,DNA结合蛋白批量生成PSSM矩阵,非结合的批量生成PSSM矩阵,将生成的矩阵分别放在两个文件夹下面,便于日后处理数据使用)