Un objet igraph peut-il avoir des arêtes dirigées et non dirigées?

Aug 20 2020

J'essaie d'utiliser igraph / ggraph pour tracer un réseau, dans lequel certaines des arêtes sont dirigées et d'autres pas.

Un petit exemple de ma edgelist. Ici, les bords du site protéique sont ce que je veux représenter comme non orienté et le bord de phosphorylation comme indiqué.

df <- data.frame(
  stringsAsFactors = FALSE,
              from = c("RPS6KA3", "RPS6KA3", "RPS6KA3", "RPS6KA3", "RPS6KA3"),
                to = c("RPS6KA3_Y529-p",
                       "RPS6KA3_S227-p","RPS6KA3_S369-p","RPS6KA3_T577-p","ATF4"),
            action = c("protein-site","protein-site",
                       "protein-site","protein-site","phosphorylation")
)

J'ai essayé de sous-définir les bords non dirigés et de les spécifier comme tels, mais cela n'a pas fonctionné:

library(igraph)
nw <- graph_from_data_frame(df)

E(nw)[E(nw)$action == "protein-site"] <- as.undirected(subgraph.edges(nw, E(nw)[E(nw)$action == "protein-site"] ))

Quelqu'un at-il d'autres suggestions? Comme je l'ai dit, je ne veux vraiment que tracer cela (en utilisant ggraph).

Merci!

Réponses

3 desval Aug 20 2020 at 13:51

Si vous souhaitez tracer avec, igraphvous pouvez importer la liste des arêtes comme indiqué, puis l'utiliser edge.arrow.mode.

nw <- graph_from_data_frame(df, directed = T)


plot(nw)

plot(nw,
     edge.arrow.mode = ifelse(E(nw)$action=="protein-site", "-", ">"))

Je ne suis pas sûr de ggraphsoutenir quoi que ce soit de similaire. J'ai pensé qu'il serait possible de changer la taille des flèches et de la définir sur 0 pour les bords non dirigés. Cela ne fonctionne pas, car les flèches héritent du style du reste du bord.