hclust и ggplotr

У меня есть файл со значениями, как показано ниже

gene_name s1    s2  s3  s4  s5
gene1  0.5004357 -0.9613324  1.4624021 -0.8051191 -0.1963863
gene2  1.1662839 -0.3210387 -0.3653730 -1.3095341  0.8296619
gene3  1.0511340 -0.7007560 -0.3025992  1.0511340 -1.0989128
gene4 -0.2422484 -0.4203723  0.4651577 -1.2295635  1.4270265
gene5 -1.3491928 -0.6743735  0.1860456  0.9507387  0.8867820
gene6 -0.9254673  0.1860328 -1.0089603  0.3438866  1.4045082
dim(df)
[1] 21752     5

Чего я пытаюсь добиться, так это использовать метод hclust и dist, чтобы увидеть тенденции в данных, я пытаюсь в основном сделать что-то, что показано в вопросе здесь из SO ps ответ Сандипан Дей

Я не могу понять, поскольку в вопросе нет данных, которые я хотел бы построить,

  1. x: по оси x мои образцы имен (s1, s2, s3, s4, s5)

  2. ось y zscore и

  3. каждая строка представляет каждое имя гена

  4. facet_wrap для каждого кластера, где я мог видеть, какой кластер даст хорошую четкую кластеризацию или разделение выборки

РЕДАКТИРОВАТЬ

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

моя версия кода

d_final <- cbind.data.frame(expr, cluster=cutree(hc, k = n))
d_final %>% 
  gather(key, value, -geneID, -cluster) %>% 
  ggplot(aes(x=key, y=value, color=factor(cluster), group=geneID)) + 
  geom_point() + geom_path() +
  facet_wrap(~cluster) #changed it to wrap

когда я попробую это

d <- dist(expr[,-1] , method = "euclidean")
hc <- hclust(dist(d), method = "average")

на Mac с 16 ГБ оперативной памяти R Studio зависает


person novicebioinforesearcher    schedule 30.07.2017    source источник
comment
Вы смотрели на пакет Dendextend R?   -  person Tal Galili    schedule 30.07.2017
comment
нет, сэр, не знаю об этом пакете, кто-нибудь использовал его для создания таких графиков?   -  person novicebioinforesearcher    schedule 31.07.2017


Ответы (1)


Что-то вроде этого?

library(tidyverse)
hc <- hclust(dist(d[,-1]))
plot(hc)
# try three clusters for instance: 
n <- 3
d_final <- cbind.data.frame(d, cluster=cutree(hc, k = n))
d_final %>% 
  gather(key, value, -gene_name, -cluster) %>% 
  ggplot(aes(x=key, y=value, color=factor(cluster), group=gene_name)) + 
     geom_point() + geom_path() +
     coord_flip() +
     facet_grid(~gene_name)

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

 # or change to
    facet_grid(~cluster)

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

person Roman    schedule 31.07.2017
comment
спасибо, позвольте мне попробовать это на моих реальных данных, и я опубликую вывод через несколько минут. - person novicebioinforesearcher; 31.07.2017
comment
Он работает отлично! Я обновил комментарии, последний вопрос: есть ли способ узнать, какие гены_символы принадлежат к какому кластеру? например, если мне нужно знать, какие гены_символы были задействованы в кластере 25, возможно ли это? - person novicebioinforesearcher; 31.07.2017
comment
попробуйте изменить цвет на color=geneID. Но я предполагаю, что сюжеты действительно шумные тогда. Может быть, таблица лучше иллюстрирует эту информацию? Попробуйте aggregate(d_final$gene_name, list(d_final$cluster), paste, collapse=",") - person Roman; 01.08.2017
comment
В какую строку я должен интегрировать это? - person novicebioinforesearcher; 01.08.2017
comment
вместо color=factor(cluster) - person Roman; 02.08.2017