#' Perform Fisher's Exact test for edges in pathway
#' @description Obtain a measure for strength and significance for the
#' relationship (i.e. an edge) based on the concordance/discordance of
#' UP-and-DOWN regulated genes shared by two different experimental
#' gene-knockouts
#' Intended for use within \code{\link{overlap_info}}
#' @export
#' @importFrom stats fisher.test p.adjust p.adjust.methods
#' @param edges The set of eges to be analyzed; Although the intended use is for
#' LINCS data overlaps, the function should work with any typical data object as
#' long as it has columns labeled ("UP", "DOWN", "UK1_DK2", "DK1_UK2") that
#' contain integer values.
#' @param method The method to correct/adjust p-values for multiple testing.
#' For available methods, type 'p.adjust.methods' into command promt and
#' press enter.
#' @return The input edge data.frame object with additional columns containing
#' the results of the applied statistical test
#' @examples
#' ex.data <- data.frame("UP" = c(70,6), "DOWN" = c(8,20),
#' "UK1_DK2" = c(4,47), "DK1_UK2" = c(3, 28))
#'
#' overlaps <- get_fisher_info(ex.data, method = "BH")
get_fisher_info <-
function(edges, method){
if (!method %in% p.adjust.methods){
warning("Method for p-value adjustment is not valid. For valid
adjustment methods please type 'p.adjust.methods' in the
command line and press enter. P-values will not be adjusted")
method = "none"
}
for (i in 1:nrow(edges)){
fisher_test<- fisher.test(matrix(c(edges$UP[i] + 1,edges$UK1_DK2[i] + 1,
edges$DK1_UK2[i] + 1 ,edges$DOWN[i] + 1), 2,2))
edges$fisher_OR[i] <- unlist(fisher_test[[3]])
edges$fisher_pval[i] <- unlist(fisher_test[[1]])
if (edges$fisher_OR[i] <= 1) {
edges$fisher_sign[i] <- -1
}
else {
edges$fisher_sign[i] <- 1
}
edges$summary_score[i] <-
-log(edges$fisher_pval[i])*edges$fisher_sign[i]
}
raw_pvals <- edges$fisher_pval
adj_pvals <- p.adjust(raw_pvals, method = method)
edges$p_value <- adj_pvals
for (i in 1:nrow(edges)){
if (edges$p_value[i] <= 0.05){
edges$significant[i] <- 1
}
else {
edges$significant[i] <- 0
}
}
return(edges)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.