#' Generates a kinase ball model using the Z score table
#'
#' This function takes in a Z score table and produces a kinase ball model
#'
#' @param kinase_hits a vector of kinases
#' @param Ztable Z score table
#' @param frq = cutoff for number of connections with other nodes
#' @param Nsize = size of nodes scale
#' @param Tsize = size of text scale
#'
#' @return igraph network
#'
#' @family plots
#'
#'
#' @export
#'
#' @examples
#' TRUE
krsa_ball_model <- function(kinase_hits, Ztable, frq, Nsize, Tsize) {
Ztable %>%
dplyr::rename(MeanZ = .data$AvgZ) %>%
dplyr::mutate(breaks = cut(abs(.data$MeanZ),
breaks = c(0, 1, 1.5, 2, Inf),
right = F,
labels = c("Z <= 1", "1 >= Z < 1.5", "1.5 >= Z < 2", "Z >= 2")
)) -> Ztable
nodes2 <- ballModel_nodes
edges <- ballModel_edges
nodes2 %>%
dplyr::filter(.data$FinName %in% Ztable$Kinase) %>%
dplyr::pull(.data$FinName) -> sigHITS
edges %>%
dplyr::filter(.data$Source %in% sigHITS | .data$Target %in% sigHITS, .data$Source != .data$Target) -> modEdges
modsources <- dplyr::pull(modEdges, .data$Source)
modtargets <- dplyr::pull(modEdges, .data$Target)
modALL <- unique(c(modsources, modtargets))
nodes2 %>%
dplyr::filter(.data$FinName %in% modALL) -> nodesF
edges %>%
dplyr::filter(.data$Source %in% nodesF$FinName & .data$Target %in% nodesF$FinName, .data$Source != .data$Target) -> modEdges
modEdges %>%
dplyr::mutate(line = ifelse(.data$Source %in% sigHITS | .data$Target %in% sigHITS, 2, 1)) -> modEdges
modsources <- dplyr::pull(modEdges, .data$Source)
modtargets <- dplyr::pull(modEdges, .data$Target)
modALL <- c(modsources, modtargets)
as.data.frame(table(modALL)) -> concts
concts %>%
dplyr::rename(FinName = .data$modALL) -> concts
concts$FinName <- as.character(concts$FinName)
dplyr::right_join(nodesF, concts) -> nodesF
nodesF %>%
dplyr::left_join(dplyr::select(Ztable, .data$Kinase, .data$breaks) %>%
dplyr::distinct(), by = c("FinName" = "Kinase")) %>%
dplyr::mutate(cl = dplyr::case_when(
.data$breaks == "1 >= Z < 1.5" ~ "#FCAE91",
.data$breaks == "Z <= 1" ~ "#FEE5D9",
.data$breaks == "1.5 >= Z < 2" ~ "#FB6A4A",
.data$breaks == "Z >= 2" ~ "#CB181D",
T ~ "grey"
)) -> nodesF
nodesF %>%
dplyr::filter(.data$Freq >= frq | !.data$cl %in% c("grey", "#FEE5D9", "#FCAE91")) %>%
dplyr::pull(.data$FinName) -> FinKinases
modEdges %>%
dplyr::filter(.data$Source %in% FinKinases & .data$Target %in% FinKinases) -> modEdges
nodesF %>%
dplyr::filter(.data$FinName %in% FinKinases) %>%
dplyr::mutate(Freq = ifelse(.data$Freq < 4, 4, .data$Freq)) -> nodesF
net <- igraph::graph_from_data_frame(d = modEdges, vertices = nodesF, directed = T)
net <- igraph::simplify(net, remove.loops = F, remove.multiple = F)
igraph::V(net)$size <- log2(igraph::V(net)$Freq) * Nsize
colrs <- c("#FEE5D9", "#FCAE91", "#FB6A4A", "#CB181D", "grey")
igraph::V(net)$color <- igraph::V(net)$cl
colrs2 <- c("gray", "black")
igraph::E(net)$color <- colrs2[igraph::E(net)$line]
plot(net, edge.arrow.size = .05, vertex.label = igraph::V(net)$FinName, vertex.label.color = "black", vertex.label.cex = log2(igraph::V(net)$Freq) / Tsize, layout = igraph::layout_in_circle)
graphics::legend("bottomleft", c("Z <= 1", "1 >= Z < 1.5", "1.5 >= Z < 2", "Z >= 2", "NA"),
pch = 21,
col = "#777777", pt.bg = colrs, pt.cex = 2, cex = .8, bty = "n", ncol = 1
)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.