diff --git a/panels/dataInput.R b/panels/dataInput.R index 932f43629cd922de7d10c411b9e8e401f1152c9a..5a6a55b050d0a802b590d8252ea3e6778422ef56 100644 --- a/panels/dataInput.R +++ b/panels/dataInput.R @@ -300,13 +300,13 @@ output$transformFun <- renderText({ sep = "\n"), "sqrt" = "data_sqrt <- transform_sample_counts(data, sqrt)", "clr" = paste("gm_mean <- function(x, na.rm=TRUE) {", - " exp(sum(log(x[x > 0 & !is.na(x)]), na.rm=na.rm) / length(x))", - " }", - "clr <- function(x, base=2) {", - " x <- log((x / gm_mean(x)), base)", - " x[!is.finite(x) | is.na(x)] <- 0.0", - " return(x)", + " return(exp(mean(log(x), na.rm=na.rm)))", "}", + "clr <- function(x, base=exp(1)) {", + " x <- x+1", + " x <- log(x/gm_mean(x), base)", + " return(x)", + "}", "data_clr <- transform_sample_counts(data, clr)", sep = "\n") ) @@ -328,11 +328,11 @@ observeEvent(input$transformData, { }, "clr" = { gm_mean <- function(x, na.rm=TRUE) { - exp(sum(log(x[x > 0 & !is.na(x)]), na.rm=na.rm) / length(x)) + return(exp(mean(log(x), na.rm=na.rm))) } - clr <- function(x, base=2) { - x <- log((x / gm_mean(x)), base) - x[!is.finite(x) | is.na(x)] <- 0.0 + clr <- function(x, base=exp(1)) { + x <- x+1 + x <- log(x/gm_mean(x), base) return(x) } physeq(transform_sample_counts(physeq(), clr))