DoHeatmap((函数的源代码位于https://github.com/satijalab/seurat/blob/develop/R/visualization.R.traceback((显示
我正试图使用Seurat中的DoHeatmap函数来显示一些已定义簇中许多基因的表达。B_cells是我的Seurat对象。
tfs <- c("PRDM1", "PAX5", "BACH2")
DoHeatmap(B_cells, features=tfs)
我正在恢复这个错误;
Error in data.frame(group = sort(x = group.use), x = x.divs) :
arguments imply differing number of rows: 10411, 0
当我查看Seurat对象中的行数和列数时;
nrow(B_cells) = 19651
ncol(B_cells) = 10151
如果这是一个愚蠢的问题,我很抱歉,但我已经纠结了一段时间了。
编辑回溯((:
3: stop(gettextf("arguments imply differing number of rows: %s",
paste(unique(nrows), collapse = ", ")), domain = NA)
2: data.frame(group = sort(x = group.use), x = x.divs)
1: DoHeatmap(B_cells, features = genes)
visualization.R
的第363行导致错误:
if (label) {
x.max <- max(pbuild$layout$panel_params[[1]]$x.range)
# Attempt to pull xdivs from x.major in ggplot2 < 3.3.0; if NULL, pull from the >= 3.3.0 slot
x.divs <- pbuild$layout$panel_params[[1]]$x.major %||% pbuild$layout$panel_params[[1]]$x$break_positions()
x <- data.frame(group = sort(x = group.use), x = x.divs)
...
}
作为绕过错误的变通方法,请尝试:
DoHeatmap(B_cells, features=tfs, label=FALSE)
我也有类似的错误。事实证明,我的集群标签有一个问题,我的一个集群最终得到了一个空标签("(。当我要求使用标签=T的DimPlot时,我发现了它,其中一个集群没有标签。当我返回并正确地重新标记集群时,DoHeatmap错误消失了。