Как импортировать в cytoscape igraph и его настройки (раскраску узлов и т. Д.)?

Что я пытаюсь сделать

Я использую пакет igraph R для создания и визуализации интересующей сети.

Макет в R довольно плохой. Я хотел бы импортировать свою сеть в Cytoscape, чтобы самому составить макет.

Что не работает

Я сохраняю свой объект igraph и использую пакет RCy3 R (функция createNetworkFromIgraph) для его экспорта в cytoscape. Однако сетевое форматирование (цвет узлов и т. Д.) Теряется! Есть ли способ сохранить форматирование и перенести его в Cytoscape?

Мой код

library(igraph)

network_graph <- graph_from_data_frame(d = network_df, directed = F)  
vertices = unique(as.character(network_df[,2]))
netm <- get.adjacency(network_graph, sparse = F)

network_df - это data.frame с источником, целью и значением. Вот голова:

  source      target  means
  colchicine  TUBB1 0.08330359
  colchicine    TTL 0.08330359
  colchicine  TTLL2 0.08330359
  colchicine TUBA4A 0.08330359
  colchicine TUBB2B 0.08330359
  colchicine   BRD4 0.08330359

Выбор макета (для разреженных графиков подходят оба варианта: fr или kk)

l <- layout_with_fr(network_graph)

Нормализация координат, чтобы мы знали, насколько велика фигура в координатах базовой графики

l <- norm_coords(l, ymin=-1, ymax=1, xmin=-1, xmax=1)

Придайте узлам скаляр цветов. Обеспечьте разрывы значений узлов, чтобы они имели другой цветовой оттенок.

pal <- colorRampPalette(c("red", "slateblue"))(6)
values <- network_df$means
bks <- pheatmap:::generate_breaks(values, length(pal), center = F)
cols <- pheatmap:::scale_colours(values, col=pal, breaks=bks, na_col = "grey")
network_df$cols <- cols
shapes = c(rep('square',10), rep('circle', dim(network_df)[1]-10)) 

save.image('igraph_drug_targets.RData')

Это та часть, которую я хочу нарисовать в Cytoscape

plot(network_graph, rescale = F, layout=l*1.0, vertex.label = NA, 
vertex.shape=shapes, vertex.frame.color = "gray20", edge.arrow.size = 
.5, vertex.color = network_df$cols, vertex.size = 5,  edge.color = 
rgb(0,0,0,0.4), edge.width = 0.3, xlim = c(-1.3, 1.3), ylim = c(-1.3, 
1.3))

Добавьте собственные текстовые метки

for(j in 1:nrow(netm)) 
text(l[j,1], l[j,2], labels=rownames(netm)[j], pos = 3,  cex = 0.7, font = 2)

Создание координат Y для прямоугольников в цветовом ключе

rect_series = seq(0.3, 1, length.out = max(network_df$means) + 1)

Цикл для рисования прямоугольников внутри цветового ключа

pal2 <- c(pal1[1], rev(pal[1:length(pal)-1]))

for(q in 1:max(network_df$means+1)){ 
    rect(1.1, rect_series[q], 1.2, 
    rect_series[q+1], col = pal2[q], border = NA)
    rect(1.1, 0.3, 1.2, 1)
    text(1.2, 0.3, min(network_df$means, 2), pos = 4)
    text(1.2, 1, round(max(network_df$means, 2),2), pos = 4)
    text(1.2, 1.1, labels = "Log10 normalized counts", pos = 4)

}

person Eleni Christodoulou    schedule 01.08.2018    source источник
comment
По идее, если вам не нравятся макеты iGraph, вы можете попробовать ggraph, очень хорошее смешивание между iGraph и ggplot2, не выходя R. Ясно, что это намек, а не ответ на ваш вопрос.   -  person s__    schedule 01.08.2018


Ответы (1)


Поскольку код не публикуется, я предлагаю несколько альтернатив.

Я бы создал фрейм данных, содержащий сеть (2 столбца, фрейм данных N строк), который вы можете легко экспортировать из R и импортировать в Cytoscape как файл .sif.

Затем я бы создал еще один фрейм данных, содержащий атрибуты узлов:

  Node_Name | Attribute_1 | ... | Attribute_N
   node1    |   protein   | ... |    ...
   node2    |     RNA     | ... |    ...
   nodeN    |    gene     | ... |    ...

и т. д., чтобы вы могли импортировать его в виде таблицы в Cytoscape. Таким образом, теперь вы можете использовать потенциал редактора стилей Cytoscape. Учтите, что атрибуты, данные узлам, полезны для применения определенных форм, цветов и размеров к различным типам узлов. То же самое работает с краями (возможно, вам нужны и другие виды краев): создайте фрейм данных, содержащий атрибуты краев, и импортируйте его в Cytoscape.

Если вы хотите пройти через R и создавать с его помощью красивые графики, я настоятельно рекомендую вам взглянуть на эту ссылку: http://kateto.net/network-visualization

редактировать:

похоже, что RCy3 в моей версии R не работает, поэтому я не могу вам помочь, предоставив код.

Но поскольку в Cytoscape вы можете создавать, импортировать, экспортировать и применять к сетям свои собственные стили, я считаю, что вам следует сделать следующее. Используя предложенную вами функцию, то есть createNetworkFromIgraph (), вы строите график Cytoscape. Затем вы должны создать новый стиль с помощью функции createVisualStyle () и, наконец, вы должны применить этот стиль к сети, как указано здесь: https://www.bioconductor.org/packages/release/bioc/manuals/RCy3/man/RCy3.pdf

Надеюсь, это поможет!

person gabt    schedule 01.08.2018
comment
Большое спасибо за ваш ответ и за прекрасный учебник, который вы предложили (действительно хороший!). Мне очень жаль, что я не включил код в свой исходный пост. Я его сейчас отредактировал, так что надеюсь, что он понятнее. Я хотел бы визуализировать в Cytoscape сюжет, который я создаю в своем сценарии. Что мне нужно экспортировать из моего скрипта, чтобы затем использовать функцию RCy3 createNetworkFromIgraph () и получить желаемый график в Cytoscape? - person Eleni Christodoulou; 01.08.2018
comment
По-прежнему невозможно протестировать код, поскольку нет образца ваших наборов данных. Я предполагаю, что network_ds - это матрица как минимум с 3 столбцами: source | цель | масса взаимодействия но ... df_all? что в нем содержится? - person gabt; 02.08.2018
comment
Извините, это тоже network_df, а не df_all ... В моем исходном скрипте было больше data.frames. Я упростил свой исходный сценарий и разместил его здесь. Я обновил свой код в своем исходном сообщении соответственно и добавил заголовок network_df (это сеть, нацеленная на наркотики от STITCH) - person Eleni Christodoulou; 02.08.2018