# Patient vs control iPSC lines with no true difference: differentiations as n, clones as n, and donors as n.
# R 4.3.3, base R.
d <- read.csv("ipsc.csv")                            # one row per differentiation: status, donor, clone, differentiation, log_neurite
f2 <- function(p) formatC(signif(p, 2), format = "g")
compare <- function(x, unit) {
  p <- x$status == "patient"; t <- t.test(x$log_neurite[p], x$log_neurite[!p])
  cat(sprintf("%s (%d vs %d): patient / control %.2f (95%% CI %.2f to %.2f), p = %s\n", unit, sum(p), sum(!p),
              exp(mean(x$log_neurite[p]) - mean(x$log_neurite[!p])), exp(t$conf.int[1]), exp(t$conf.int[2]), f2(t$p.value)))
}
compare(d, "Differentiations as n")
compare(aggregate(log_neurite ~ status + donor + clone, data = d, FUN = mean), "Clones as n")
compare(aggregate(log_neurite ~ status + donor, data = d, FUN = mean), "Donors as n")
