PSSM矩阵(位置权重矩阵)

PSSM矩阵(位置权重矩阵)

  1. 定义

-参考维基百科
-同时参考这篇优秀的博客: http://www.nohup.cc/article/112/

可以反映出每个位置上不同碱基出现的频率,矩阵每一列表示相应位置上碱基出现的频率。
构造PSSM的第一步:通过计算每个位置上每个碱基出现的次数来创建一个基本频率矩阵(PFM)
第二步:标准化,用每个位置的原核苷酸计数除以序列数。构建位置频率矩阵
给定一个长度为l的序列集合X (N),在这里插入图片描述
第三步:构建位置比重矩阵b=1/k,k为20(蛋白质)

  1. 获得PSSM矩阵
    参考了以下博客:

-http://www.nohup.cc/article/115/
-https://blog.csdn.net/weixin_43405130/article/details/103716040
-http://www.nohup.cc/article/110/(CKSAAP)
-PSSM特征-从生成到处理
-如何生成PSSM矩阵
-https://blog.csdn.net/cpc784221489/article/details/88879650
-https://www.cnblogs.com/cong3Z/p/12775414.html

  • 第一步:下载blast,使用psiblast
  • 第二步:下载数据库,下载swissprot,网址为:

https://ftp.ncbi.nlm.nih.gov/blast/db/或者ftp://ftp.ncbi.nlm.nih.gov/blast/db/
进去后选择:swissprot,
下载链接为:https://ftp.ncbi.nlm.nih.gov/blast/db/swissprot.tar.gz或者
ftp://ftp.ncbi.nlm.nih.gov/blast/db/swissprot.tar.gz
注意下载到blast/bin路径下
解压缩:tar zxvf filename.tar

  • 第三步:批量处理序列:
i = 0
fw = open('/blast/bin/0.txt', 'w')
for line in open('filename.fasta', 'r'):
    fw.write(line)
    i += 1
    if i % 2 == 0:
        fw.close()
        fw = open(str(i) + '.txt', 'w')
fw.close()
  • 第四步:格式化数据库(可以不用做这一步):
makeblastdb -in swissprot -parse_seqids -hash_index -dbtype prot(nulc)
  • 第五步:批量对序列进行处理,获得其pssm矩阵:
import os
os.chdir('/blast/bin/sequence/')
for i in range(0,num(sequence),2):
    os.system("/blast/bin/psiblast -query /blast/bin/sequence/"+ str(i) + ".txt"+" -db /blast/swissprot -evalue 0.001 -num_iterations 3 -num_threads 38 -out /blast/bin/pssm_file/"+str(i)+".pssm")

注意-db前的空格,否则会报错“too many positional arguments”
第六步:处理得到的PSSM矩阵

pssm = []
with open('out.pssm') as f:
            lines = f.readlines()[3:-6]
            pssm = np.array([line.split()[2:22] for line in lines], dtype=int)```

你可能感兴趣的:(生物信息学)