Функция DoHeatmap Seurat - Ошибка в фрейме данных: аргументы подразумевают разное количество строк
Я пытаюсь использовать функцию DoHeatmap в Seurat, чтобы показать экспрессию ряда генов в некоторых определенных кластерах. 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
Извините, если это глупый вопрос, но я уже давно на нем застрял.
редактировать traceback():
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)
2 ответа
Исходный код функции DoHeatmap() можно найти по адресу https://github.com/satijalab/seurat/blob/develop/R/visualization.R. Функция traceback() показывает строку 363 изvisualization.R
вызывает ошибку:
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)
У меня была аналогичная ошибка. Оказывается, возникла проблема с маркировкой моего кластера, когда один из моих кластеров оказался с пустой меткой (""). Я нашел его, когда запросил DimPlot с меткой =T, а у одного из кластеров не было метки. Когда я вернулся и правильно перемаркировал кластеры, ошибка DoHeatmap исчезла.