diff --git a/R/Evaluation_func.R b/R/Evaluation_func.R index d4b42b2bb8eda93f2963315001680d090bc5c3af..01dd47a553bd17a192307229006e8dba656c9eb9 100644 --- a/R/Evaluation_func.R +++ b/R/Evaluation_func.R @@ -45,9 +45,9 @@ #' #' @return List of 7 elements needed to plot the final regulatory network #' @export -trace_plots <- function(mcmc_res, burn_in, thin, figures_dir, gene_annot, PK, +trace_plots <- function(mcmc_res, burn_in, thin, figures_dir, gene_annot, PK=NULL, OMICS_mod_res, edge_weights = "MCMC_freq", edge_freq_thres = NULL, gene_ID, -TFtargs) +TFtargs = NULL) { if(!(edge_weights %in% c("MCMC_freq","empB"))) { @@ -117,8 +117,12 @@ TFtargs) y = strength_threshold+0.015, col="#E69F00") grDevices::dev.off() - PK <- PK[PK$src_entrez %in% unlist(lapply(OMICS_mod_res$omics,colnames)),] - PK <- PK[PK$dest_entrez %in% unlist(lapply(OMICS_mod_res$omics,colnames)),] + if(!is.null(PK)) + { + PK <- PK[PK$src_entrez %in% unlist(lapply(OMICS_mod_res$omics,colnames)),] + PK <- PK[PK$dest_entrez %in% unlist(lapply(OMICS_mod_res$omics,colnames)),] + } + if(gene_ID=="entrezID") { @@ -233,8 +237,8 @@ normalise <- function (x, from = range(x), to = c(0, 1)) { #' #' @return List of 6 elements needed to plot the final regulatory network edges #' @export -edge_types <- function(mcmc_res, PK, gene_annot, edge_list, node_list, -OMICS_mod_res, edge_weights, TFtargs) +edge_types <- function(mcmc_res, PK = NULL, gene_annot, edge_list, node_list, +OMICS_mod_res, edge_weights, TFtargs = NULL) { omics <- OMICS_mod_res$omics layers_def <- OMICS_mod_res$layers_def @@ -242,35 +246,52 @@ OMICS_mod_res, edge_weights, TFtargs) if(any(regexpr("ENTREZID:",node_list)>0)) { - PK <- paste(PK$src_entrez, PK$dest_entrez, sep="_") - + if(!is.null(PK)) + { + PK <- paste(PK$src_entrez, PK$dest_entrez, sep="_") + } # end if(!is.null(PK)) + if(edge_weights=="empB") { edge_list[,"edge_type"] <- "empirical" - 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) + + if(!is.null(TFtargs)) { - 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" + 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) + } # end if(!is.null(TFtargs)) + + if(!is.null(PK)) + { + edge_list[match(intersect(edge_list[,"edge"],PK), + edge_list[,"edge"]), "edge_type"] <- "PK" + } # end if(!is.null(PK)) + edge_list[,"weight"] <- round(as.numeric(unlist(lapply(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" + if(!is.null(PK)) + { + 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(!is.null(PK)) + } # end if else (edge_weights=="empB") ge_cols <- RColorBrewer::brewer.pal(9, "Blues") @@ -444,16 +465,19 @@ OMICS_mod_res, edge_weights, TFtargs) } # end if(any(mapply(omics,FUN=function(list)... } 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(!is.null(PK)) + { + 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="_") + } # end if(!is.null(PK)) + if(edge_weights=="empB") { edge_list[,"edge_type"] <- "empirical" @@ -461,41 +485,52 @@ OMICS_mod_res, edge_weights, TFtargs) 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) + if(!is.null(TFtargs)) { - 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(unlist(lapply(seq_along(edge_list[,2]), - FUN=function(row) mcmc_res$B_prior_mat_weighted[ - edge_list[row,"from"],edge_list[row,"to"]]))),2) + 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) + } # end if(!is.null(TFtargs)) + + + if(!is.null(PK)) + { + edge_list[match(intersect(edge_list[,"edge"],PK), + edge_list[,"edge"]), "edge_type"] <- "PK" + } # end if(!is.null(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(unlist(lapply(seq_along(edge_list[,2]), + 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" + if(!is.null(PK)) + { + 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(!is.null(PK)) } # end if else (edge_weights=="empB") ge_cols <- RColorBrewer::brewer.pal(9, "Blues")