Я использовал те же самые варианты кода pheatmap для создания тепловых карт в течение нескольких месяцев без каких-либо проблем, но в последнее время он перестал иметь возможность кластеризовать строки. Столбцы по-прежнему кластеризуются как обычно, но всякий раз, когда я пытаюсь добавить кластеризацию строк, это выдает мне одно и то же сообщение об ошибке NA / NaN / Inf в данных
Все мои наборы данных выглядят очень похожими, в основном только с количеством строк меняется (между 40-2000 и более). Вот глава данных, которые я сейчас использую, все 0 уже заменены на NA
:
> head(protdata, 4)
PR1 PO1 WA1 PR2 PO2 WA2 PR3 PO3 WA3 PR4 PO4 WA4 PR5 PO5
[1,] 0.004420 NA 0.002370 0.00141 0.002890 0.003740 4.36e-03 0.005370 0.00143 0.002070 NA 0.00428 0.005220 NA
[2,] 0.000233 8.85e-06 0.000136 NA 0.000056 0.000713 5.98e-05 NA NA 0.000541 NA NA 0.006700 4.95e-05
[3,] 0.001220 1.79e-05 0.000447 0.00183 0.000136 NA 6.99e-04 0.000298 0.00267 0.001330 NA NA 0.000655 1.36e-04
[4,] 0.001170 6.84e-04 0.000282 0.00173 0.001620 0.000648 1.05e-03 0.003570 0.00101 0.001410 NA NA 0.002960 NA
WA5 PR6 PO6 WA6 PR7 PO7 WA7
[1,] 0.001030 0.00448 NA 1.53e-03 0.005220 0.005520 1.86e-03
[2,] 0.000139 0.00145 0.000484 8.88e-05 0.000118 0.000122 1.79e-05
[3,] 0.003680 0.00033 NA NA NA 0.000163 3.99e-03
[4,] 0.000393 0.00023 NA NA 0.000625 NA 7.15e-04
В наборах данных много нулей, но кластеризация всегда работала, пока они преобразуются в NA
. Ни один из столбцов или строк не имеет нулевой дисперсии. Вот код, который я использовал для создания тепловых карт:
protdata <- as.matrix(input[,-1])
protdata[protdata == 0] <- NA
rownames <- input[,1]
annotation_row <- data.frame(rownames)
rownames(protdata) <- annotation_row$Gene
pheatmap(log10(protdata), scale="row", border_color=NA, na_col="white", breaks=seq(-2,2,.01),
color=colorRampPalette(rev(brewer.pal(n=7, name="RdYlBu")))(400))
А вот сообщение об ошибке, которое я получаю:
Error in hclust(d, method = method) :
NA/NaN/Inf in foreign function call (arg 10)
Единственный способ получить сюжет, чтобы появиться с cluster_rows=FALSE
, включенным в выше. Я озадачен тем, почему это работает отлично, а теперь нет, когда, насколько я знаю, я ничего не изменил в способе ввода данных.
Любая помощь будет принята с благодарностью !!