Overview
PSSM算法是生物信息学领域中的一个常用算法,全名“位置特异性打分矩阵(position-specific scoring matrix)”,又称作"位置比重矩阵(position weight matrix)".有关该方法更多的细节,详见维基百科Position weight matrix.本文仅阐述其设计思想,实际项目的例子将在另一篇文章中进行介绍.
1.建模思想
一个PWM包含N行(列),当模型为DNA时,N=4;当模型为蛋白质时,N=20。维基百科给出的是DNA的核苷酸序列的例子,对于我们的项目来说,不同的也仅仅是矩阵行列数而已:组成DNA的基本核苷酸有A,C,G,T四种,故行列式有四行(列);组成蛋白质的基本氨基酸有二十种,故行列式有二十行(列)。同时PWM对于每个不同位置都对应一列(行)数据。而选择基本核苷酸(氨基酸)作为行或列,需要针对各自的需要进行调整。
1.1 构建位置频度矩阵(PFM)
位置频度矩阵(position frequency matrix)的构建的思路还是比较简单的,这里仍然以维基百科的例子介绍。DNA序列如下表所示:
|
GAGGTAAAC |
共有10行9列,则相应的PFM为
这个矩阵的列数也是9,而每一列的数各自加起来正好是10,也就是DNA序列的行数。这样,构建矩阵的原理就很清晰了:计算每一列中的各核苷酸的数量,然后存入矩阵的相应位置。
1.2 构建位置概率矩阵(PPM)
通过PFM求PPM,只需要下面的公式:
其中,i为行号,j为列号,即:
且I是指示函数,即:
则1.1中的PFM相应的PPM为:
在这里有一点需要特别注意:
对于每一个匹配成功的核苷酸,我们计分为1,未匹配则记为0,这只是一个简单的思想。而在实际情况下,我们用BLAST或者PSI-BLAST等程序求序列的PSSM时,相应的打分规则就要复杂许多。这时候就需要根据自身的需要选择相应的各种参数,如:gap,λ。
关于上面一段话中提及的程序,更多的细节请点击:
https://en.wikipedia.org/wiki/BLAST
http://blast.ncbi.nlm.nih.gov/Blast.cgi
http://www.ebi.ac.uk/Tools/sss/psiblast/
http://blast.ncbi.nlm.nih.gov/Blast.cgi?CMD=Web&PAGE=Proteins&PROGRAM=blastp&RUN_PSIBLAST=on
我们假定这些矩阵在行列式的每个位置上都是统计独立的。非统计独立模型请参考Chris的一篇文章http://www.nohup.cc/article/111/,这里就不赘述了。那么对于DNA序列S=GAGGTAAAC来说,它出现的概率就是
1.3 构建位置比重矩阵(PWM)
这里引入一个参数b,b=1/k,其中,当序列为蛋白质序列时,k=20;序列为DNA时,k=4.那么对于相同的位置上的PWM和PPM的矩阵元素,其关系为:
那么1.2中的PPM相对应的PWM为:
至此,我们已经介绍完构建PSSM的基本思想。
Check beneath, are some completely unrelated web sites to ours, however, they are most trustwor[...]
[...]1.构建PSSM的步骤[...]