Пакет R NMF: как извлечь классификацию образцов?

В R-пакете NMF можно использовать консенсусную карту() для визуализации выходных данных. Графики показывают, какие образцы относятся к каким кластерам на треке «консенсуса».

Я хотел бы извлечь эту примерную классификацию, чтобы получить такой фрейм данных:

Sample    Cluster
S1        1
S2        1
S3        2
S4        1
.         .
.         .
S100      2

В пакете ConsensusClusterPlus это легко сделать. Вы просто вытаскиваете результаты $consensusClass. Я не могу найти аналогичное решение для NMF-пакета. Я попытался посмотреть на необработанные данные графика, но они слишком запутаны, чтобы извлечь из них какой-либо смысл.

Вот иллюстрация проблемы: мне нужно выяснить, какой «статус» находится в рамках какого «консенсуса».

введите здесь описание изображения


person Esben Eickhardt    schedule 20.11.2016    source источник


Ответы (1)


Пройтись по всему дереву и посчитать?

> v <- syntheticNMF(20, 3, 10)

> xx<-consensusmap(x) 

> str(xx)
List of 4
$ Rowv  :  ..--[dendrogram w/ 2 branches and 10 members at h = 1,  midpoint = 5.97, value = 3.4]
  ..  |--[dendrogram w/ 2 branches and 7 members at h = 1, midpoint = 3.69, value = 2.5]
  ..  |  |--[dendrogram w/ 2 branches and 4 members at h = 0, midpoint = 2.12, value = 1.6]
  ..  |  |  |--[dendrogram w/ 2 branches and 3 members at h = 0, midpoint = 1.25, value = 1.2]
  ..  |  |  |  |--[dendrogram w/ 2 branches and 2 members at h = 0, midpoint = 0.5, value = 0.8]
  ..  |  |  |  |  |--leaf "2" ( value.2 = 0.4 )
  ..  |  |  |  |  `--leaf "1" ( value.1 = 0.4 )
  ..  |  |  |  `--leaf "3" ( value.3 = 0.4 )
  ..  |  |  `--leaf "4" ( value.4 = 0.4 )
  ..  |  `--[dendrogram w/ 2 branches and 3 members at h = 0, midpoint = 1.25, value = 0.9]
  ..  |     |--[dendrogram w/ 2 branches and 2 members at h = 0, midpoint = 0.5, value = 0.6]
  ..  |     |  |--leaf "6" ( value.6 = 0.3 )
  ..  |     |  `--leaf "5" ( value.5 = 0.3 )
  ..  |     `--leaf "7" ( value.7 = 0.3 )
  ..  `--[dendrogram w/ 2 branches and 3 members at h = 0, midpoint = 1.25, value = 0.9]
  ..     |--[dendrogram w/ 2 branches and 2 members at h = 0, midpoint = 0.5, value = 0.6]
  ..     |  |--leaf "9" ( value.9 = 0.3 )
  ..     |  `--leaf "8" ( value.8 = 0.3 )
  ..     `--leaf "10" ( value.10 = 0.3 )
  $ rowInd: int [1:10] 2 1 3 4 6 5 7 9 8 10
  $ Colv  :  ..--[dendrogram w/ 2 branches and 10 members at h = 1, midpoint = 3.03, value = 3.4]
  ..  |--[dendrogram w/ 2 branches and 3 members at h = 0, midpoint = 0.75, value = 0.9]
  ..  |  |--leaf "10" ( value.10 = 0.3 )
  ..  |  `--[dendrogram w/ 2 branches and 2 members at h = 0, midpoint = 0.5, value = 0.6]
  ..  |     |--leaf "8" ( value.8 = 0.3 )
  ..  |     `--leaf "9" ( value.9 = 0.3 )
  ..  `--[dendrogram w/ 2 branches and 7 members at h = 1, midpoint = 2.31, value = 2.5]
  ..     |--[dendrogram w/ 2 branches and 3 members at h = 0, midpoint = 0.75, value = 0.9]
  ..     |  |--leaf "7" ( value.7 = 0.3 )
  ..     |  `--[dendrogram w/ 2 branches and 2 members at h = 0, midpoint = 0.5, value = 0.6]
  ..     |     |--leaf "5" ( value.5 = 0.3 )
  ..     |     `--leaf "6" ( value.6 = 0.3 )
  ..     `--[dendrogram w/ 2 branches and 4 members at h = 0, midpoint = 0.875, value = 1.6]
  ..        |--leaf "4" ( value.4 = 0.4 )
  ..        `--[dendrogram w/ 2 branches and 3 members at h = 0, midpoint = 0.75, value = 1.2]
  ..           |--leaf "3" ( value.3 = 0.4 )
  ..           `--[dendrogram w/ 2 branches and 2 members at h = 0, midpoint = 0.5, value = 0.8]
  ..              |--leaf "1" ( value.1 = 0.4 )
  ..              `--leaf "2" ( value.2 = 0.4 )
 $ colInd: int [1:10] 10 8 9 7 5 6 4 3 1 2


> lapply(cut(xx$Rowv,0.5)$lower, function(l) rapply(l, function(i) i))
[[1]]
[1] 2 1 3 4

[[2]]
[1] 6 5 7

[[3]]
[1]  9  8 10
person p2004r    schedule 20.11.2016
comment
Спасибо за предложение. Я не совсем понимаю эту древовидную структуру и не могу найти там дорожку «консенсуса». В моих данных я даже не вижу тех $ Colv, которые, как я вижу, есть у вас в ваших. У меня есть данные о случаях/контроле, и я хочу посмотреть, имеют ли случаи или контроль чрезмерно представленные архетипы. - person Esben Eickhardt; 20.11.2016