43 lines
1.3 KiB
R
43 lines
1.3 KiB
R
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))
|
|
} |