####---- ORA Gene Set Network Plot Function ----####

make_ora_network_plot <- function(edges, nodes, node_colours, node_outer_max_size, node_inner_max_size, node_label_size, label_nodes)
{
  set.seed(1)

  if (nrow(edges) > 0) {

    # cluster network
    nodes = cluster_network(edges, nodes)

    # build network
    net = 0
    net = network(edges[,c(1,2)], directed = FALSE)


    # gets the colours
    colours = gg_color_hue(max(as.numeric(unique(nodes$cluster))))

    # adds colours to nodes
    nodes$node_colour = "white"
      for (row_index in 1:nrow(nodes))
      {
        nodes[row_index,"node_colour"] = colours[nodes[row_index,"cluster"]]
      }

    x = data.frame(node = network.vertex.names(net))
    x = merge(x, nodes, by = "node", sort = FALSE)$node_colour
    net %v% "node_colour" = as.character(x)


    # make the plot
    if (label_nodes)
    {
      ggp = ggnet2(net, color = 'node_colour', size = 0) +
        xlab("") +
        ylab("") +
        theme_SL2() +
        theme(legend.position="none") +
        geom_point(aes(color = "black"), size=node_outer_max_size, alpha = 1) +
        geom_point(aes(color = color), size=node_inner_max_size, alpha = 1) +
        geom_label(aes(label = network.vertex.names(net), color = color) , size=node_label_size)
    }
    else
    {
      ggp = ggnet2(net, color = 'node_colour', size = 0) +
        xlab("") +
        ylab("") +
        theme_SL2() +
        theme(legend.position="none") +
        geom_point(aes(color = "black"), size=node_outer_max_size, alpha = 1) +
        geom_point(aes(color = color), size=node_inner_max_size, alpha = 1)
    }
    return(ggp)
  }

  return(ggplot(data.frame()) + theme_SL2() + geom_blank() + ggtitle("There were too few significant nodes to plot this."))
}

