Функция 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 исчезла.

Другие вопросы по тегам