From ab4cff55763301968d63cce0e616de5dbc4898ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Anna=20Pa=C4=8D=C3=ADnkov=C3=A1?= <394358@mail.muni.cz>
Date: Wed, 15 Jun 2022 10:11:54 +0200
Subject: [PATCH] Upload New File

---
 source_code/edge_types.R | 240 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 240 insertions(+)
 create mode 100644 source_code/edge_types.R

diff --git a/source_code/edge_types.R b/source_code/edge_types.R
new file mode 100644
index 0000000..8fdaf3b
--- /dev/null
+++ b/source_code/edge_types.R
@@ -0,0 +1,240 @@
+#' @export
+edge_types <- function(mcmc_res, PK, gene_annot, edge_list, node_list, OMICS_module_res, edge_weights, TFtargs)
+{
+  omics <- OMICS_module_res$omics
+  layers_def <- OMICS_module_res$layers_def
+  omics_meth_original <- OMICS_module_res$omics_meth_original
+  
+  if(any(regexpr("ENTREZID:",node_list)>0))
+  {
+    PK <- paste(PK$src_entrez, PK$dest_entrez, sep="_")
+    
+    if(edge_weights=="empB")
+    {
+      edge_list[,"edge_type"] <- "empirical"
+      # in columns are TFs, in rows are their targets
+      TF_pk <- as.matrix(TFtargs[intersect(edge_list[,"to"], rownames(TFtargs)),intersect(edge_list[,"from"], colnames(TFtargs))])
+      colnames(TF_pk) <- intersect(edge_list[,"from"], colnames(TFtargs))
+      
+      if(ncol(TF_pk)>=1)
+      {
+        TF_pk <- paste(colnames(TF_pk)[which(TF_pk==1, arr.ind = TRUE)[,2]],
+                       rownames(TF_pk)[which(TF_pk==1, arr.ind = TRUE)[,1]],
+                       sep="_")
+        edge_list[match(intersect(edge_list[,"edge"],TF_pk), edge_list[,"edge"]),"edge_type"] <- "TF"
+      } # end if(ncol(TF_pk)>=1)
+      
+      edge_list[match(intersect(edge_list[,"edge"],PK),edge_list[,"edge"]), "edge_type"] <- "PK"
+      edge_list[,"weight"] <- round(as.numeric(vapply(seq_along(edge_list[,2]),1,FUN=function(row) mcmc_res$B_prior_mat_weighted[edge_list[row,"from"],edge_list[row,"to"]])),2)
+    } else {
+      edge_list[match(setdiff(edge_list[,"edge"],PK),edge_list[,"edge"]),"edge_type"] <- "new"
+      edge_list[match(intersect(edge_list[,"edge"],PK),edge_list[,"edge"]), "edge_type"] <- "PK"
+    } # end if else (edge_weights=="empB")
+    
+    # GE node colors
+    ge_cols <- brewer.pal(9, "Blues")
+    ge_common <- intersect(unique(node_list),colnames(omics[[layers_def$omics[1]]]))
+    omics_ge_gs <- as.matrix(omics[[layers_def$omics[1]]][,ge_common])
+    colnames(omics_ge_gs) <- ge_common
+    
+    borders_ge_b1 <- unlist(lapply(strsplit(levels(cut(omics[[layers_def$omics[1]]][omics[[layers_def$omics[1]]]<=median(omics[[layers_def$omics[1]]])], seq(from=min(omics[[layers_def$omics[1]]]), to=median(omics[[layers_def$omics[1]]]), length.out=5), include.lowest = T)),","),FUN=function(l) l[1]))
+    borders_ge_b1[1] <- sub("[","(",borders_ge_b1[1], fixed = TRUE)
+    borders_ge_b1 <- as.numeric(sub("(","",borders_ge_b1, fixed = TRUE))
+    borders_ge_b2 <- unlist(lapply(strsplit(levels(cut(omics[[layers_def$omics[1]]][omics[[layers_def$omics[1]]]>median(omics[[layers_def$omics[1]]])], seq(from=median(omics[[layers_def$omics[1]]]), to=max(omics[[layers_def$omics[1]]]), length.out=6), include.lowest = T)),","),FUN=function(l) l[1]))
+    borders_ge_b2[1] <- sub("[","(",borders_ge_b2[1], fixed = TRUE)
+    borders_ge_b2 <- as.numeric(sub("(","",borders_ge_b2, fixed = TRUE))
+    borders_ge_b <- c(borders_ge_b1,borders_ge_b2)
+    
+    borders_ge_t1 <- as.numeric(sub("]","",unlist(lapply(strsplit(levels(cut(omics[[layers_def$omics[1]]][omics[[layers_def$omics[1]]]<=median(omics[[layers_def$omics[1]]])], seq(from=min(omics[[layers_def$omics[1]]]), to=median(omics[[layers_def$omics[1]]]), length.out=5), include.lowest = T)),","),FUN=function(l) l[2]))))
+    borders_ge_t2 <- as.numeric(sub("]","",unlist(lapply(strsplit(levels(cut(omics[[layers_def$omics[1]]][omics[[layers_def$omics[1]]]>median(omics[[layers_def$omics[1]]])], seq(from=median(omics[[layers_def$omics[1]]]), to=max(omics[[layers_def$omics[1]]]), length.out=6), include.lowest = T)),","),FUN=function(l) l[2]))))
+    borders_ge_t <- c(borders_ge_t1,borders_ge_t2)
+    borders <- sort(unique(c(borders_ge_b,borders_ge_t)))
+    expr_group <- cut(colMeans(omics_ge_gs), breaks = borders, include.lowest = T, labels = FALSE)
+    names(expr_group) <- colnames(omics_ge_gs)
+    node_list <- matrix(data = c(node_list,
+                                 as.numeric(expr_group[match(node_list, names(expr_group))])),
+                        nrow = length(node_list),
+                        dimnames = list(c(), c("label", "color")))
+    ind_cols <- paste(paste("(", paste(borders[-length(borders)], borders[-1]),sep=""),"]",sep="")
+    borders_cnv <- NULL
+    borders_meth <- NULL
+    
+    if(any(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))
+    {
+      # CNV node colors
+      cnv_cols <- brewer.pal(11, "PiYG")
+      cnv_common <- intersect(node_list[,"label"][regexpr("entrez",node_list[,"label"])>0],colnames(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]]))
+      omics_cnv_gs <- as.matrix(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]][,cnv_common])
+      
+      borders_cnv_b1 <- unlist(lapply(strsplit(levels(cut(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]][omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]]<=0], seq(from=min(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]], na.rm = TRUE), to=0, length.out=6), include.lowest = T)),","),FUN=function(l) l[1]))
+      borders_cnv_b1[1] <- sub("[","(",borders_cnv_b1[1], fixed = TRUE)
+      borders_cnv_b1 <- as.numeric(sub("(","",borders_cnv_b1, fixed = TRUE))
+      borders_cnv_b2 <- unlist(lapply(strsplit(levels(cut(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]][omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]]>0], seq(from=0, to=max(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]], na.rm = TRUE), length.out=7), include.lowest = T)),","),FUN=function(l) l[1]))
+      borders_cnv_b2[1] <- sub("[","(",borders_cnv_b2[1], fixed = TRUE)
+      borders_cnv_b2 <- as.numeric(sub("(","",borders_cnv_b2, fixed = TRUE))
+      borders_cnv_b <- c(borders_cnv_b1,borders_cnv_b2)
+      
+      borders_cnv_t1 <- as.numeric(sub("]","",unlist(lapply(strsplit(levels(cut(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]][omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]]<=0], seq(from=min(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]], na.rm = TRUE), to=0, length.out=6), include.lowest = T)),","),FUN=function(l) l[2]))))
+      borders_cnv_t2 <- as.numeric(sub("]","",unlist(lapply(strsplit(levels(cut(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]][omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]]>0], seq(from=0, to=max(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]], na.rm = TRUE), length.out=7), include.lowest = T)),","),FUN=function(l) l[2]))))
+      borders_cnv_t <- c(borders_cnv_t1,borders_cnv_t2)
+      borders_cnv <- sort(unique(c(borders_cnv_b,borders_cnv_t)))
+      
+      cnv_group <- cut(colMeans(omics_cnv_gs, na.rm = TRUE), breaks = borders_cnv, include.lowest = T, labels = FALSE) + length(ge_cols)
+      names(cnv_group) <- colnames(omics_cnv_gs)
+      node_list[regexpr("entrez",node_list[,"label"])>0,"color"] <- as.numeric(cnv_group[match(node_list[regexpr("entrez",node_list[,"label"])>0,"label"], names(cnv_group))])
+      
+      ge_cols <- c(ge_cols, cnv_cols)
+    } # end if(any(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))
+    
+    if(any(mapply(omics,FUN=function(list) any(regexpr("entrezid:",colnames(list), ignore.case = TRUE)<0))))
+    {
+      # METH node colors
+      meth_cols <- brewer.pal(9, "YlOrRd")
+      meth_common <- intersect(node_list[,"label"],colnames(omics_meth_original))
+      omics_meth_gs <- as.matrix(omics_meth_original[,meth_common])
+      colnames(omics_meth_gs) <- meth_common
+      
+      borders_meth_b1 <- unlist(lapply(strsplit(levels(cut(omics_meth_original[omics_meth_original<=0.5], seq(from=min(omics_meth_original, na.rm = TRUE), to=0.5, length.out=5), include.lowest = T)),","),FUN=function(l) l[1]))
+      borders_meth_b1[1] <- sub("[","(",borders_meth_b1[1], fixed = TRUE)
+      borders_meth_b1 <- as.numeric(sub("(","",borders_meth_b1, fixed = TRUE))
+      borders_meth_b2 <- unlist(lapply(strsplit(levels(cut(omics_meth_original[omics_meth_original>0.5], seq(from=0.5, to=max(omics_meth_original, na.rm = TRUE), length.out=6), include.lowest = T)),","),FUN=function(l) l[1]))
+      borders_meth_b2[1] <- sub("[","(",borders_meth_b2[1], fixed = TRUE)
+      borders_meth_b2 <- as.numeric(sub("(","",borders_meth_b2, fixed = TRUE))
+      borders_meth_b <- c(borders_meth_b1,borders_meth_b2)
+      
+      borders_meth_t1 <- as.numeric(sub("]","",unlist(lapply(strsplit(levels(cut(omics_meth_original[omics_meth_original<=0.5], seq(from=min(omics_meth_original, na.rm = TRUE), to=0.5, length.out=5), include.lowest = T)),","),FUN=function(l) l[2]))))
+      borders_meth_t2 <- as.numeric(sub("]","",unlist(lapply(strsplit(levels(cut(omics_meth_original[omics_meth_original>0.5], seq(from=0.5, to=max(omics_meth_original, na.rm = TRUE), length.out=6), include.lowest = T)),","),FUN=function(l) l[2]))))
+      borders_meth_t <- c(borders_meth_t1,borders_meth_t2)
+      borders_meth <- sort(unique(c(borders_meth_b,borders_meth_t)))
+      
+      meth_group <- cut(colMeans(omics_meth_gs, na.rm = TRUE), breaks = borders_meth, include.lowest = T, labels = FALSE) + length(ge_cols)
+      names(meth_group) <- colnames(omics_meth_gs)
+      
+      node_list[!is.na(match(node_list[,"label"],colnames(omics_meth_original))),"color"] <- as.numeric(meth_group[match(node_list[,"label"][!is.na(match(node_list[,"label"],colnames(omics_meth_original)))],names(meth_group))])
+      
+      ge_cols <- c(ge_cols, meth_cols)
+    } # end if(any(mapply(omics,FUN=function(list) any(regexpr("entrezid:",colnames(list), ignore.case = TRUE)<0))))
+    
+  } else {
+    
+    PK_src_dest <- as.character(gene_annot$gene_symbol[match(PK$src_entrez,gene_annot$entrezID)])
+    PK_src_dest[regexpr("entrezid",PK_src_dest)>0] <- tolower(as.character(gene_annot$gene_symbol[match(toupper(PK_src_dest[regexpr("entrezid",PK_src_dest)>0]),gene_annot$entrezID)]))
+    PK_src_dest[is.na(PK_src_dest)] <- PK$src_entrez[is.na(PK_src_dest)]
+    
+    PK <- paste(PK_src_dest,
+                as.character(gene_annot$gene_symbol[match(PK$dest_entrez,gene_annot$entrezID)]), sep="_")
+    
+    if(edge_weights=="empB")
+    {
+      edge_list[,"edge_type"] <- "empirical"
+      # in columns are TFs, in rows are their targets
+      targs_eid <- gene_annot$entrezID[match(edge_list[,"to"], gene_annot$gene_symbol)]
+      TFs_eid <- gene_annot$entrezID[match(edge_list[,"from"], gene_annot$gene_symbol, nomatch = 0)]
+      TF_pk <- as.matrix(TFtargs[intersect(targs_eid, rownames(TFtargs)),intersect(TFs_eid, colnames(TFtargs))])
+      colnames(TF_pk) <- intersect(TFs_eid, colnames(TFtargs))
+      
+      if(ncol(TF_pk)>=1)
+      {
+        TF_pk <- paste(gene_annot$gene_symbol[match(colnames(TF_pk)[which(TF_pk==1, arr.ind = TRUE)[,2]], gene_annot$entrezID)],
+                       gene_annot$gene_symbol[match(rownames(TF_pk)[which(TF_pk==1, arr.ind = TRUE)[,1]], gene_annot$entrezID)],
+                       sep="_")
+        edge_list[match(intersect(edge_list[,"edge"],TF_pk), edge_list[,"edge"]),"edge_type"] <- "TF"
+      } # end if(ncol(TF_pk)>=1)
+      
+      edge_list[match(intersect(edge_list[,"edge"],PK),edge_list[,"edge"]), "edge_type"] <- "PK"
+      rownames(mcmc_res$B_prior_mat_weighted)[!is.na(match(rownames(mcmc_res$B_prior_mat_weighted), gene_annot$entrezID))] <- gene_annot$gene_symbol[match(rownames(mcmc_res$B_prior_mat_weighted), gene_annot$entrezID, nomatch = 0)]
+      rownames(mcmc_res$B_prior_mat_weighted)[!is.na(match(toupper(rownames(mcmc_res$B_prior_mat_weighted)), gene_annot$entrezID))] <- tolower(gene_annot$gene_symbol[match(toupper(rownames(mcmc_res$B_prior_mat_weighted)), gene_annot$entrezID, nomatch = 0)])
+      colnames(mcmc_res$B_prior_mat_weighted) <- rownames(mcmc_res$B_prior_mat_weighted)
+      edge_list[,"weight"] <- round(as.numeric(vapply(seq_along(edge_list[,2]),1,FUN=function(row) mcmc_res$B_prior_mat_weighted[edge_list[row,"from"],edge_list[row,"to"]])),2)
+    } else {
+      edge_list[match(setdiff(edge_list[,"edge"],PK),edge_list[,"edge"]),"edge_type"] <- "new"
+      edge_list[match(intersect(edge_list[,"edge"],PK),edge_list[,"edge"]), "edge_type"] <- "PK"
+    } # end if else (edge_weights=="empB")
+    
+    # GE node colors
+    ge_cols <- brewer.pal(9, "Blues")
+    ge_common <- intersect(gene_annot$entrezID[match(unique(node_list),gene_annot$gene_symbol)],colnames(omics[[layers_def$omics[1]]]))
+    omics_ge_gs <- as.matrix(omics[[layers_def$omics[1]]][,ge_common])
+    colnames(omics_ge_gs) <- gene_annot$gene_symbol[match(ge_common,gene_annot$entrezID)]
+    
+    borders_ge_b1 <- unlist(lapply(strsplit(levels(cut(omics[[layers_def$omics[1]]][omics[[layers_def$omics[1]]]<=median(omics[[layers_def$omics[1]]])], seq(from=min(omics[[layers_def$omics[1]]]), to=median(omics[[layers_def$omics[1]]]), length.out=5), include.lowest = T)),","),FUN=function(l) l[1]))
+    borders_ge_b1[1] <- sub("[","(",borders_ge_b1[1], fixed = TRUE)
+    borders_ge_b1 <- as.numeric(sub("(","",borders_ge_b1, fixed = TRUE))
+    borders_ge_b2 <- unlist(lapply(strsplit(levels(cut(omics[[layers_def$omics[1]]][omics[[layers_def$omics[1]]]>median(omics[[layers_def$omics[1]]])], seq(from=median(omics[[layers_def$omics[1]]]), to=max(omics[[layers_def$omics[1]]]), length.out=6), include.lowest = T)),","),FUN=function(l) l[1]))
+    borders_ge_b2[1] <- sub("[","(",borders_ge_b2[1], fixed = TRUE)
+    borders_ge_b2 <- as.numeric(sub("(","",borders_ge_b2, fixed = TRUE))
+    borders_ge_b <- c(borders_ge_b1,borders_ge_b2)
+    
+    borders_ge_t1 <- as.numeric(sub("]","",unlist(lapply(strsplit(levels(cut(omics[[layers_def$omics[1]]][omics[[layers_def$omics[1]]]<=median(omics[[layers_def$omics[1]]])], seq(from=min(omics[[layers_def$omics[1]]]), to=median(omics[[layers_def$omics[1]]]), length.out=5), include.lowest = T)),","),FUN=function(l) l[2]))))
+    borders_ge_t2 <- as.numeric(sub("]","",unlist(lapply(strsplit(levels(cut(omics[[layers_def$omics[1]]][omics[[layers_def$omics[1]]]>median(omics[[layers_def$omics[1]]])], seq(from=median(omics[[layers_def$omics[1]]]), to=max(omics[[layers_def$omics[1]]]), length.out=6), include.lowest = T)),","),FUN=function(l) l[2]))))
+    borders_ge_t <- c(borders_ge_t1,borders_ge_t2)
+    borders <- sort(unique(c(borders_ge_b,borders_ge_t)))
+    expr_group <- cut(colMeans(omics_ge_gs), breaks = borders, include.lowest = T, labels = FALSE)
+    names(expr_group) <- colnames(omics_ge_gs)
+    node_list <- matrix(data = c(node_list,
+                                 as.numeric(expr_group[match(node_list, names(expr_group))])),
+                        nrow = length(node_list),
+                        dimnames = list(c(), c("label", "color")))
+    ind_cols <- paste(paste("(", paste(borders[-length(borders)], borders[-1]),sep=""),"]",sep="")
+    borders_cnv <- NULL
+    borders_meth <- NULL
+    
+    if(any(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))
+    {
+      # CNV node colors
+      cnv_cols <- brewer.pal(11, "PiYG")
+      cnv_common <- intersect(tolower(gene_annot$entrezID[match(toupper(node_list[is.na(node_list[,"color"]),"label"]),gene_annot$gene_symbol)]),colnames(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]]))
+      omics_cnv_gs <- as.matrix(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]][,cnv_common])
+      colnames(omics_cnv_gs) <- node_list[node_list[,"label"]==tolower(node_list[,"label"]),"label"][gene_annot$entrezID[match(toupper(node_list[node_list[,"label"]==tolower(node_list[,"label"]),"label"]),gene_annot$gene_symbol)] %in% toupper(colnames(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]]))]
+      
+      borders_cnv_b1 <- unlist(lapply(strsplit(levels(cut(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]][omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]]<=0], seq(from=min(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]], na.rm = TRUE), to=0, length.out=6), include.lowest = T)),","),FUN=function(l) l[1]))
+      borders_cnv_b1[1] <- sub("[","(",borders_cnv_b1[1], fixed = TRUE)
+      borders_cnv_b1 <- as.numeric(sub("(","",borders_cnv_b1, fixed = TRUE))
+      borders_cnv_b2 <- unlist(lapply(strsplit(levels(cut(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]][omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]]>0], seq(from=0, to=max(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]], na.rm = TRUE), length.out=7), include.lowest = T)),","),FUN=function(l) l[1]))
+      borders_cnv_b2[1] <- sub("[","(",borders_cnv_b2[1], fixed = TRUE)
+      borders_cnv_b2 <- as.numeric(sub("(","",borders_cnv_b2, fixed = TRUE))
+      borders_cnv_b <- c(borders_cnv_b1,borders_cnv_b2)
+      
+      borders_cnv_t1 <- as.numeric(sub("]","",unlist(lapply(strsplit(levels(cut(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]][omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]]<=0], seq(from=min(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]], na.rm = TRUE), to=0, length.out=6), include.lowest = T)),","),FUN=function(l) l[2]))))
+      borders_cnv_t2 <- as.numeric(sub("]","",unlist(lapply(strsplit(levels(cut(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]][omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]]>0], seq(from=0, to=max(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]], na.rm = TRUE), length.out=7), include.lowest = T)),","),FUN=function(l) l[2]))))
+      borders_cnv_t <- c(borders_cnv_t1,borders_cnv_t2)
+      borders_cnv <- sort(unique(c(borders_cnv_b,borders_cnv_t)))
+      
+      cnv_group <- cut(colMeans(omics_cnv_gs, na.rm = TRUE), breaks = borders_cnv, include.lowest = T, labels = FALSE) + length(ge_cols)
+      names(cnv_group) <- colnames(omics_cnv_gs)
+      
+      node_list[node_list[,"label"]==tolower(node_list[,"label"]),"color"][gene_annot$entrezID[match(toupper(node_list[node_list[,"label"]==tolower(node_list[,"label"]),"label"]),gene_annot$gene_symbol)] %in% toupper(colnames(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]]))] <- as.numeric(cnv_group[match(node_list[node_list[,"label"]==tolower(node_list[,"label"]),"label"][gene_annot$entrezID[match(toupper(node_list[node_list[,"label"]==tolower(node_list[,"label"]),"label"]),gene_annot$gene_symbol)] %in% toupper(colnames(omics[[names(which(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))]]))], names(cnv_group))])
+      
+      ge_cols <- c(ge_cols, cnv_cols)
+    } # end if(any(mapply(FUN=function(mod) any(regexpr("entrezid:",colnames(mod))>0), omics)==TRUE))
+    
+    if(any(mapply(omics,FUN=function(list) any(regexpr("entrezid:",colnames(list), ignore.case = TRUE)<0))))
+    {
+      # METH node colors
+      meth_cols <- brewer.pal(9, "YlOrRd")
+      meth_common <- intersect(node_list[,"label"],colnames(omics_meth_original))
+      omics_meth_gs <- as.matrix(omics_meth_original[,meth_common])
+      colnames(omics_meth_gs) <- meth_common
+      
+      borders_meth_b1 <- unlist(lapply(strsplit(levels(cut(omics_meth_original[omics_meth_original<=0.5], seq(from=min(omics_meth_original, na.rm = TRUE), to=0.5, length.out=5), include.lowest = T)),","),FUN=function(l) l[1]))
+      borders_meth_b1[1] <- sub("[","(",borders_meth_b1[1], fixed = TRUE)
+      borders_meth_b1 <- as.numeric(sub("(","",borders_meth_b1, fixed = TRUE))
+      borders_meth_b2 <- unlist(lapply(strsplit(levels(cut(omics_meth_original[omics_meth_original>0.5], seq(from=0.5, to=max(omics_meth_original, na.rm = TRUE), length.out=6), include.lowest = T)),","),FUN=function(l) l[1]))
+      borders_meth_b2[1] <- sub("[","(",borders_meth_b2[1], fixed = TRUE)
+      borders_meth_b2 <- as.numeric(sub("(","",borders_meth_b2, fixed = TRUE))
+      borders_meth_b <- c(borders_meth_b1,borders_meth_b2)
+      
+      borders_meth_t1 <- as.numeric(sub("]","",unlist(lapply(strsplit(levels(cut(omics_meth_original[omics_meth_original<=0.5], seq(from=min(omics_meth_original, na.rm = TRUE), to=0.5, length.out=5), include.lowest = T)),","),FUN=function(l) l[2]))))
+      borders_meth_t2 <- as.numeric(sub("]","",unlist(lapply(strsplit(levels(cut(omics_meth_original[omics_meth_original>0.5], seq(from=0.5, to=max(omics_meth_original, na.rm = TRUE), length.out=6), include.lowest = T)),","),FUN=function(l) l[2]))))
+      borders_meth_t <- c(borders_meth_t1,borders_meth_t2)
+      borders_meth <- sort(unique(c(borders_meth_b,borders_meth_t)))
+      
+      meth_group <- cut(colMeans(omics_meth_gs, na.rm = TRUE), breaks = borders_meth, include.lowest = T, labels = FALSE) + length(ge_cols)
+      names(meth_group) <- colnames(omics_meth_gs)
+      
+      node_list[!is.na(match(node_list[,"label"],colnames(omics_meth_original))),"color"] <- as.numeric(meth_group[match(node_list[,"label"][!is.na(match(node_list[,"label"],colnames(omics_meth_original)))],names(meth_group))])
+      ge_cols <- c(ge_cols, meth_cols)
+    } # end if(any(mapply(omics,FUN=function(list) any(regexpr("entrezid:",colnames(list), ignore.case = TRUE)<0))))
+  } # end if else(any(regexpr("ENTREZID:",node_list)>0))
+  return(list(edge_list = edge_list, node_list = node_list, borders_GE = borders, borders_CNV = borders_cnv, borders_METH = borders_meth, node_palette = ge_cols))
+}
-- 
GitLab