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))
}