source("Schrick-Noah_Simulated-Data.R") if (!require("igraph")) install.packages("igraph") library(igraph) if (!require("Matrix")) install.packages("Matrix") library(Matrix) # bdiag sim_graph_data <- function(){ npc <-25 # nodes per cluster n_clust <- 4 # 4 clusters with 25 nodes each # no clusters g0 <- erdos.renyi.game(npc*n_clust, 0.2) plot(g0) matlist = list() for (i in 1:n_clust){ matlist[[i]] = get.adjacency(erdos.renyi.game(npc, 0.2)) } # merge clusters into one matrix mat_clust <- bdiag(matlist) # create block-diagonal matrix ## the following two things might not be necessary # check for loner nodes, connected to nothing, and join them to something k <- rowSums(mat_clust) node_vector <- seq(1,npc*n_clust) for (i in node_vector){ if (k[i]==0){ # if k=0, connect to something random j <- sample(node_vector[-i],1) mat_clust[i,j] <- 1 mat_clust[j,i] <- 1 } } node_colors <- c(rep("red",npc), rep("green",npc), rep("blue",npc), rep("orange",npc)) g1 <- graph_from_adjacency_matrix(mat_clust, mode="undirected", diag=F) plot(g1, vertex.color=node_colors) ### Dataset with g1 bundled_graph_data <- create_data(graph.structure=g1) return(list(bundled_graph_data=bundled_graph_data,g1=g1)) }