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
TCCGTAAGT
CAGGTTGGA
ACAGTCAGT
TAGGTCATT
TAGGTACTG
ATGGTAACT
CAGGTATAC
TGTGTGAGT
AAGGTAAGT

共有109列,则相应的PFM

M=ACGT[36100672122100211211710011514110101126]

这个矩阵的列数也是9,而每一列的数各自加起来正好是10,也就是DNA序列的行数。这样,构建矩阵的原理就很清晰了:计算每一列中的各核苷酸的数量,然后存入矩阵的相应位置

1.2 构建位置概率矩阵(PPM)

通过PFMPPM,只需要下面的公式:

Mk,j=1NNi=1I(Xi,j=k)

其中,i为行号,j为列号,即:

i(1,2,,N),j(1,2,,l).

I是指示函数,即:

I(Xi,j=k)={1,if Xi,j=k;0,if Xi,jk.

则1.1中的PFM相应的PPM为:

M=ACGT[0.30.60.10.00.00.60.70.20.10.20.20.10.00.00.20.10.10.20.10.10.71.00.00.10.10.50.10.40.10.10.01.00.10.10.20.6]

在这里有一点需要特别注意

对于每一个匹配成功的核苷酸,我们计分为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来说,它出现的概率就是

p(SM)=0.1×0.6×0.7×1.0×1.0×0.6×0.7×0.2×0.2=0.0007056

1.3 构建位置比重矩阵(PWM)

这里引入一个参数bb=1/k,其中,当序列为蛋白质序列时,k=20;序列为DNA时,k=4.那么对于相同的位置上的PWMPPM的矩阵元素,其关系为:

MPWM=ln(MPPMb)

那么1.2中的PPM相对应的PWM为:

M=ACGT[0.180.870.910.871.020.220.910.220.220.910.220.910.910.220.910.911.021.380.910.910.690.910.470.910.911.380.910.910.220.87]

至此,我们已经介绍完构建PSSM的基本思想。