美文网首页生物信息学R 语言生物信息可视化
Motif可视化——从PFM矩阵到sequence logo

Motif可视化——从PFM矩阵到sequence logo

作者: 生信阿拉丁 | 来源:发表于2021-07-26 12:49 被阅读0次

    Sequence Logo是如何画出来的呢?

    作者:snail
    审稿:童蒙
    编辑:amethyst

    计算PFM

    还是以MEME example中第一个的Motif结果举个栗子~

    根据包含该Motif的各序列中,统计每个位点四种核苷酸出现的次数,并计算频数即得到Position Frequency Matrix(PFM)。


    以第一个位点为例,A出现了2次,T出现了12次,因此矩阵的第一列A计数为2,T计数为12,C和G计数为0,其他位点以此类推。

    计算每个位点的四个核苷酸频率,得到PPM矩阵,该文件一般是一个N行4列的矩阵,矩阵中描述了每一个碱基在每一个位置上出现的频率。以第一行为例,A出现的频率为2/(2+12)=0.142857;T出现的频率为14/(2+12)=0.857143。假设PFM各个位点之间相互独立,那么例如该Motif序列为:TACTGTATATAHAHMCAG,则该序列的出现的概率为碱基在每个位点上的概率乘积,0.860.86111*0.93……以此类推。

    PPM矩阵文件一般在网页版的结果中可直接下载,点击Submit/Download,选择Probability Matrix的数据格式。

    获取PWM

    接下来,我们要获取到位置权重矩阵position weight matrix(PWM)。用下方公式中k表示A/C/G/T,j表示位点,b表示背景碱基频率,M表示PPM矩阵中的碱基频率。


    背景碱基含量在网页结果的最后一部分中有统计结果,如下图所示。

    因此可根据公式将PPM矩阵转化为PWM矩阵,如下图所示。以第一行第一列为例:log2(0.142857/0.29)=-1.02148117。根据PWM矩阵可以计算序列的得分,即将碱基在各个位点的在PWM矩阵中的值进行加和,从而可以判断该序列是一段随机序列还是功能位点。例如上述序列TACTGTATATAHAHMCAG的的得分为1.56+1.56+2.25+1.79+2.25+1.68+……,该得分如果大于0,则认为该序列是一个潜在的功能位点,预测到该Motif;如果得分小于0,则认为该序列是一段随机序列;如果等于0,则认为各有50%的概率。

    绘制seqlog

    R包ggseqlogo,可基于PPM矩阵进行Motif的可视化。

    library(ggseqlogo)
    library(ggplot2)
    Motif <- t(read.table("ppm.txt"))
    rownames(Motif) <- c("A","C","G","T")
    ##list_col_schemes(v = T)查看配色
    p1 <- ggseqlogo(Motif,method="prob",col_scheme="base_pairing")
    p2 <- ggseqlogo(Motif,method="bits",col_scheme="nucleotide")
    gridExtra::grid.arrange(p1,p2)
    

    参考资料

    Position weight matrix - Wikipedia ( https://en.wikipedia.org/wiki/Position_weight_matrix )

    相关文章

      网友评论

        本文标题:Motif可视化——从PFM矩阵到sequence logo

        本文链接:https://www.haomeiwen.com/subject/fysimltx.html