Compare commits

3 Commits

Author SHA1 Message Date
Costa becbc582a1 Cambiar sistema de estadística a rstatix y ggpubr 2021-07-29 14:58:23 +02:00
Costa 0de660099a Añadir README.md 2021-07-29 13:44:56 +02:00
Costa aadbe29aa1 Start ggpubr stats usage. 2021-07-29 11:41:15 +02:00
2 changed files with 31 additions and 20 deletions
+7
View File
@@ -0,0 +1,7 @@
# Analizador de ELISPOTs
En proceso/pendiente:
+ Estadística de paquetes ggpubr y rstatix.
+ Mejorar editor.
+ ggedit podría servir pero no parece que la estadística de ggpubr sea compatible.
+24 -20
View File
@@ -1,13 +1,16 @@
library(shiny) library(shiny)
library(openxlsx) library(openxlsx)
library(readxl) library(readxl)
library(ggplot2) # library(ggplot2)
library(reshape2) library(reshape2)
library(dplyr) # library(dplyr)
library(ggbeeswarm) library(ggbeeswarm)
library(magrittr) library(magrittr)
library(flextable) library(flextable)
source("funcions.R") source("funcions.R")
library(tidyverse)
library(rstatix)
library(ggpubr)
ui <- fluidPage( ui <- fluidPage(
#Navbar #Navbar
@@ -119,17 +122,13 @@ server <- function(input, output) {
dades$maps<<-t_maps dades$maps<<-t_maps
}else{ }else{
if (input$test == "T-test (adj Holm)"){ if (input$test == "T-test (adj Holm)"){
t_stats<-multi_stats(t, "value", "variable", "Groups", stat.test = "ttest") t_stats<-t %>% rename("Condition"="variable") %>% group_by(Condition) %>% t_test(value~Groups)
} }
if (input$test == "Wilcoxon (adj Holm)"){ if (input$test == "Wilcoxon (adj Holm)"){
t_stats<-multi_stats(t, "value", "variable", "Groups", stat.test = "wilcox") t_stats<-t %>% rename("Condition"="variable") %>% group_by(Condition) %>% wilcox_test(value~Groups)
} }
dades$stats<<-t_stats dades$stats<<-t_stats
t_stats<-t_stats %>% filter(p.signif != "ns")
t_maps<-generate_labstats(t_stats, t, "value", "variable", "Groups")
dades$maps<<-t_maps
} }
if (length(unique(dades$taula %>% pull(Groups))) < 2){ if (length(unique(dades$taula %>% pull(Groups))) < 2){
dades$stats<<-null dades$stats<<-null
@@ -145,7 +144,7 @@ server <- function(input, output) {
need(exists("mock_mean"), "No se puede elegir positividad con múltiples mocks") need(exists("mock_mean"), "No se puede elegir positividad con múltiples mocks")
) )
if (exists("mock_mean")){ if (exists("mock_mean")){
ggplot(melt(t_substr, id=ids), aes(variable, value))+ g<-ggplot(melt(t_substr, id=ids), aes(variable, value))+
labs(x="", y="Spots/2.5*10^5 cells")+ labs(x="", y="Spots/2.5*10^5 cells")+
# geom_errorbar(stat="summary", position=position_dodge(width=0.9), width=0.5, aes(fill=Groups))+ # geom_errorbar(stat="summary", position=position_dodge(width=0.9), width=0.5, aes(fill=Groups))+
geom_hline(data=mock_mean, aes(color=Groups, yintercept = `.`))+ geom_hline(data=mock_mean, aes(color=Groups, yintercept = `.`))+
@@ -162,7 +161,7 @@ server <- function(input, output) {
}else{ }else{
ids=c("Mice", "Groups", c(ctrl, mock)[c(ctrl, mock) %in% colnames(t_substr)]) ids=c("Mice", "Groups", c(ctrl, mock)[c(ctrl, mock) %in% colnames(t_substr)])
ggplot(melt(t_substr, id=ids), aes(variable, value))+ g<-ggplot(melt(t_substr, id=ids, variable.name = "Condition"), aes(Condition, value))+
labs(x="", y="Spots/2.5*10^5 cells")+ labs(x="", y="Spots/2.5*10^5 cells")+
# geom_errorbar(stat="summary", position=position_dodge(width=0.9), width=0.5, aes(fill=Groups))+ # geom_errorbar(stat="summary", position=position_dodge(width=0.9), width=0.5, aes(fill=Groups))+
# geom_bar(stat="summary", position="dodge", color="black", aes(fill=Groups))+ # geom_bar(stat="summary", position="dodge", color="black", aes(fill=Groups))+
@@ -170,11 +169,17 @@ server <- function(input, output) {
geom_jitter(position=position_jitterdodge(jitter.width = 0.2), shape=21, aes(fill=Groups), size=3)+ geom_jitter(position=position_jitterdodge(jitter.width = 0.2), shape=21, aes(fill=Groups), size=3)+
# geom_quasirandom(width=0.2, position=position_dodge(), shape=21)+ # geom_quasirandom(width=0.2, position=position_dodge(), shape=21)+
scale_x_discrete(limits=colnames(t_substr)[!colnames(t_substr) %in% c("Mice", "Groups", ctrl, mock)])+ scale_x_discrete(limits=colnames(t_substr)[!colnames(t_substr) %in% c("Mice", "Groups", ctrl, mock)])+
geom_segment(data=t_maps$brackets, aes(x=x1, xend=x2, y=y1, yend=y2), color="black")+ # geom_segment(data=t_maps$brackets, aes(x=x1, xend=x2, y=y1, yend=y2), color="black")+
geom_text(data=t_stats, aes(t_maps$label$x, t_maps$label$y, label=p.signif), color="black")+ # geom_text(data=t_stats, aes(t_maps$label$x, t_maps$label$y, label=p.signif), color="black")+
theme_bw()+ theme_bw()+
theme(axis.text.x=element_text(angle=45, hjust=1)) theme(axis.text.x=element_text(angle=45, hjust=1))
} }
if (input$showstats == T){
stat.pos<-t_stats %>% add_xy_position(x="Condition", step.increase = 0.06, dodge = 0.75)
g+stat_pvalue_manual(stat.pos,hide.ns = T)
}else{
g
}
} }
}) })
@@ -204,12 +209,11 @@ server <- function(input, output) {
if (!is.null(dades$final)){ if (!is.null(dades$final)){
print(dades$stats) print(dades$stats)
t_substr<-dades$final t_substr<-dades$final
t_stats<-dades$stats %>% filter(p.signif != "ns") t_stats<-dades$stats
t_maps<-dades$maps
ids<-c("Mice", "Groups") ids<-c("Mice", "Groups")
set.seed(123) set.seed(123)
g<-ggplot(melt(t_substr, id=ids), aes(variable, value))+ g<-ggplot(melt(t_substr, id=ids, variable.name="Condition"), aes(Condition, value))+
labs(x="", y="Spots/2.5*10^5 cells")+ labs(x="", y="Spots/2.5*10^5 cells")+
geom_boxplot(color="black", aes(fill=Groups), alpha=0.4, outlier.alpha = 0, position=position_dodge(width=0.8),width=input$`boxplot-width`)+ geom_boxplot(color="black", aes(fill=Groups), alpha=0.4, outlier.alpha = 0, position=position_dodge(width=0.8),width=input$`boxplot-width`)+
geom_jitter(position=position_jitterdodge(jitter.width = 0.2), shape=21, aes(fill=Groups), size=input$`point-size`)+ geom_jitter(position=position_jitterdodge(jitter.width = 0.2), shape=21, aes(fill=Groups), size=input$`point-size`)+
@@ -224,13 +228,13 @@ server <- function(input, output) {
g<-g+theme_gray(base_size = input$`font-size`) g<-g+theme_gray(base_size = input$`font-size`)
} }
g<-g+theme(axis.text.x=element_text(angle=45, hjust=1)) g<-g+theme(axis.text.x=element_text(angle=45, hjust=1))
if (input$stats2 == T){
g<-g+geom_segment(data=t_maps$brackets, aes(x=x1, xend=x2, y=y1, yend=y2), color="black")+
geom_text(data=t_stats, aes(t_maps$label$x, t_maps$label$y, label=p.signif), color="black")
}
if (input$legend == F){ if (input$legend == F){
g<-g+guides(color=FALSE, fill=FALSE) g<-g+guides(color=FALSE, fill=FALSE)
} }
if (input$stats2 == T){
stat.pos<-dades$stats %>% add_xy_position(x="Condition", step.increase = 0.06, dodge = 0.75)
g<-g+stat_pvalue_manual(stat.pos,hide.ns = T)
}
if (input$colors != ""){ if (input$colors != ""){
v_col<-strsplit(input$colors, ",")[[1]] v_col<-strsplit(input$colors, ",")[[1]]
g<-g+scale_color_manual(values=v_col)+ g<-g+scale_color_manual(values=v_col)+