【问题标题】:-Inf content in a Position Weight Matrix-Inf 位置权重矩阵中的内容
【发布时间】:2018-02-22 01:08:17
【问题描述】:

当我在位置权重矩阵的某些位置有 -Inf 内容时,这意味着什么?

我正在使用 seqLogo 包。绘制 seqLogo:

library(seqLogo)

seqLogo(weight_matrix, ic.scale=TRUE, xaxis=TRUE, yaxis=TRUE, xfontsize=15, yfontsize=15)

我有:

seqLogo 中的错误(weight_matrix,ic.scale = TRUE,xaxis = TRUE,yaxis = TRUE, : PWM 的列加起来必须为 1.0

【问题讨论】:

  • 我在 R 中加载了一个核碱基数据集,我想创建位置频率矩阵和位置权重矩阵。问题是,在频率矩阵中我有 0 的位置,在 PWM 中我有 -Inf。我也想做一个seqLogo,-Inf 会阻止我这样做吗?
  • 因为log2(0/0.25)-Inf,请参阅wikipedia 了解更多信息。
  • -Inf 是否阻止我创建 seqLogo?因为我遇到了一个错误,我想知道是不是 -Inf 的原因。
  • 从错误很明显,列和必须等于1,因为它是概率之和不能大于1。

标签: r bioinformatics bioconductor


【解决方案1】:

从错误很明显,列和必须等于1。因为它是概率之和,不能大于1。参见示例:

以下工作正常,使用 seqLogo 包中的示例 m 矩阵:

library(seqLogo)

# get example matrix
mFile <- system.file("Exfiles/pwm1", package="seqLogo")
m <- read.table(mFile)

# check if all columns have sum of 1
colSums(m)
# V1 V2 V3 V4 V5 V6 V7 V8 
#  1  1  1  1  1  1  1  1 

# plot, all great!
seqLogo(m)

现在,让我们更改其中一个值,使列总和大于 1。这会给我们带来错误。

m[1, 1] <- 1

# check if all columns have sum of 1
# V1 V2 V3 V4 V5 V6 V7 V8 
#  2  1  1  1  1  1  1  1 

seqLogo(m)
# Error in seqLogo(m) : Columns of PWM must add up to 1.0

其他原因可能是矩阵值已被记录。如果它们是,则使用以下方法将它们转换回概率:

plotMatrix <- 2 ^ weight_matrix * 0.25

然后绘制:

seqLogo(plotMatrix)

【讨论】:

    猜你喜欢
    • 2019-05-26
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多