completar análisis
This commit is contained in:
+182
-6
@@ -6,6 +6,7 @@ library(dplyr)
|
||||
library(car)
|
||||
library(ggbeeswarm)
|
||||
library(gtools)
|
||||
library(gridExtra)
|
||||
source("../../funcions.R")
|
||||
|
||||
# Define UI for application
|
||||
@@ -17,21 +18,42 @@ ui <- fluidPage(
|
||||
sidebarPanel(
|
||||
fileInput(inputId = "file_sizes", label = "Hoja de tamaños", multiple = F),
|
||||
selectInput(inputId = "measure_sys", "Sistema de medida", selected = "L-W-D", choices = c("L-W-D","Min-Max","Absorbance")),
|
||||
sliderInput("ncages", "Cajas", min=1, max=10, value=1),
|
||||
sliderInput("iterations", "Iteraciones", min=100, max=2000, step=100, value=100),
|
||||
uiOutput('ncages'),
|
||||
uiOutput('lowcut'),
|
||||
uiOutput('upcut'),
|
||||
uiOutput('goButton'),
|
||||
uiOutput('iterations'),
|
||||
downloadButton("downloadData", "Descargar Excel")
|
||||
),
|
||||
mainPanel(
|
||||
plotOutput("firstPlot"),
|
||||
plotOutput("distPlot")
|
||||
)
|
||||
),
|
||||
tabPanel("Análisis")
|
||||
tabPanel("Análisis",
|
||||
sidebarPanel(
|
||||
fileInput(inputId = "file_analy", label = "Hoja de análisis", multiple = F),
|
||||
selectInput(inputId = "vacc", "Experimento de Vacunación", selected = "No", choices = c("Sí","No")),
|
||||
checkboxInput("filter_stats","Filtrar Estadística")
|
||||
),
|
||||
mainPanel(
|
||||
h3('Ratones'),
|
||||
tableOutput('ntable'),
|
||||
h3('Cinéticas'),
|
||||
plotOutput('cin_group'),
|
||||
plotOutput('cin_indiv'),
|
||||
h3('Estadística'),
|
||||
verbatimTextOutput('stats'),
|
||||
tableOutput('tab_stats')
|
||||
))
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
# Define server logic required to draw a histogram
|
||||
server <- function(input, output) {
|
||||
|
||||
# Diseño
|
||||
dades<-reactiveValues()
|
||||
dades$taula<-NULL
|
||||
dades$groups<-NULL
|
||||
@@ -42,12 +64,42 @@ server <- function(input, output) {
|
||||
dades$groups<-read.xlsx(input$file_sizes$datapath, sheet = 2)[,1]
|
||||
}
|
||||
})
|
||||
output$distPlot <- renderPlot({
|
||||
output$firstPlot <- renderPlot({
|
||||
observeEvent(dades$taula, {})
|
||||
if (!is.null(dades$taula)){
|
||||
ggplot(dades$taula, aes(x="1", y=Volumen))+geom_quasirandom(width=0.2)
|
||||
}
|
||||
})
|
||||
|
||||
output$iterations<-renderUI({
|
||||
if (!is.null(dades$taula)){
|
||||
sliderInput("iterations", "Iteraciones", min=100, max=2000, step=100, value=100)
|
||||
}
|
||||
})
|
||||
output$lowcut<-renderUI({
|
||||
if (!is.null(dades$taula)){
|
||||
sliderInput("lowcut", "Corte inferior", min=0, max=1000, step=5, value=0)
|
||||
}
|
||||
})
|
||||
output$upcut<-renderUI({
|
||||
if (!is.null(dades$taula)){
|
||||
sliderInput("upcut", "Corte superior", min=0, max=1000, step=5, value=400)
|
||||
}
|
||||
})
|
||||
output$goButton<-renderUI({
|
||||
if (!is.null(dades$taula)){
|
||||
actionButton("goButton", "Selecciona")
|
||||
}
|
||||
})
|
||||
output$ncages<-renderUI({
|
||||
if (is.null(dades$taula)){
|
||||
sliderInput("ncages", "Cajas", min=1, max=10, value=1)
|
||||
}
|
||||
})
|
||||
grafic<-eventReactive(input$goButton,{
|
||||
df<-dades$taula
|
||||
up_cuttof<-400
|
||||
low_cuttof<-50
|
||||
up_cuttof<-input$upcut
|
||||
low_cuttof<-input$lowcut
|
||||
df<-df[df$Volumen < up_cuttof & df$Volumen > low_cuttof,]
|
||||
df["Mouse"]<-gsub("[a-zA-Z]", "", df$MouseID)
|
||||
|
||||
@@ -88,6 +140,11 @@ server <- function(input, output) {
|
||||
geom_jitter(width=0.25)+
|
||||
geom_point(stat="summary", color="blue", size=3)+
|
||||
lims(y=c(0,max(df_def$Volumen)+10))
|
||||
})
|
||||
output$distPlot <- renderPlot({
|
||||
observeEvent(dades$taula, {})
|
||||
if (!is.null(dades$taula)){
|
||||
grafic()
|
||||
}
|
||||
})
|
||||
|
||||
@@ -145,6 +202,125 @@ server <- function(input, output) {
|
||||
}
|
||||
)
|
||||
|
||||
# Análisis
|
||||
analysis<-reactiveValues()
|
||||
analysis$taula<-NULL
|
||||
analysis$taula_def<-NULL
|
||||
observe({
|
||||
if (!is.null(input$file_analy)){
|
||||
analysis$taula<-read.xlsx(input$file_analy$datapath, sheet = 1)
|
||||
}
|
||||
})
|
||||
output$ntable<-renderTable({
|
||||
if (!is.null(input$file_analy)){
|
||||
observeEvent(analysis$taula, {})
|
||||
stattest<-"dunn"
|
||||
oneside<-""
|
||||
cutoff<-750
|
||||
|
||||
table<-analysis$taula
|
||||
table<- table %>% add_column("0"=0, .before="12")
|
||||
table[table$ID.tumor == "R","0"]<-NA
|
||||
table<-melt(table, id=colnames(table)[1:6], variable.name = "Timepoint")
|
||||
if ("DPV" %in% colnames(table)){
|
||||
table<-dcast(table, Cage+ID.animal+ID.tumor+Group+Timepoint~DPV, value.var = "value")
|
||||
table$Major<-table$Major/1000
|
||||
table$Minor<-table$Minor/1000
|
||||
table["Volume"]<-((table$Major*table$Minor*table$Minor)*(pi/6))*1000
|
||||
}
|
||||
if ("TS" %in% colnames(table)){
|
||||
table<-dcast(table, Cage+ID.animal+ID.tumor+Group+Timepoint~TS, value.var = "value")
|
||||
table["Volume"]<-table$`TS-Deep`*table$`TS-Length`*table$`TS-Width`*pi/6
|
||||
}
|
||||
table<-table %>% filter(!is.na(Group))
|
||||
analysis$taula_def<-table
|
||||
|
||||
table_plot<-dcast(dcast(table %>% filter(!is.na(Volume)), Cage+`ID.animal`+Group+Timepoint~., value.var = "Volume", fun.aggregate = mean), Group~Timepoint)
|
||||
table_plot
|
||||
}
|
||||
})
|
||||
output$cin_group<-renderPlot({
|
||||
if (!is.null(input$file_analy) & !is.null(analysis$taula_def)){
|
||||
observeEvent(analysis$taula_def, {})
|
||||
table<-analysis$taula_def
|
||||
ggplot(table, aes(as.numeric(as.character(Timepoint)), Volume, color=Group, group=Group))+
|
||||
geom_errorbar(stat="summary", width=0.05)+
|
||||
geom_line(stat="summary")+
|
||||
geom_point(stat="summary")+
|
||||
facet_grid(factor(ID.tumor, labels = c("Vaccination", "Rechallenge"))~., scale="free_y")+
|
||||
labs(x="Days after tumor challenge")+
|
||||
scale_y_continuous(expand = expansion(mult = c(0,0.05)))+
|
||||
scale_x_continuous(expand = expansion(mult = c(0,0.05)), limits = c(0, (round(max(as.numeric(as.character(table$Timepoint))) / 5)+1)*5))+
|
||||
theme_bw()
|
||||
}
|
||||
})
|
||||
output$cin_indiv<-renderPlot({
|
||||
if (!is.null(input$file_analy) & !is.null(analysis$taula_def)){
|
||||
observeEvent(analysis$taula_def, {})
|
||||
table<-analysis$taula_def
|
||||
ggplot(table, aes(as.numeric(as.character(Timepoint)), Volume, color=Group, group=paste0(Cage,ID.animal)))+
|
||||
# geom_errorbar(stat="summary", width=0.05)+
|
||||
geom_line()+
|
||||
geom_point()+
|
||||
scale_y_continuous(expand = expansion(mult = c(0,0.05)))+
|
||||
scale_x_continuous(expand = expansion(mult = c(0,0.05)), limits = c(0, (round(max(as.numeric(as.character(table$Timepoint))) / 5)+1)*5))+
|
||||
facet_grid(factor(ID.tumor, labels = c("Vaccination", "Rechallenge"))~Group, scale="free_y")+
|
||||
labs(x="Days after tumor challenge")+
|
||||
theme_bw()
|
||||
}
|
||||
})
|
||||
output$stats<-renderPrint({
|
||||
stattest<-"dunn"
|
||||
oneside<-""
|
||||
cutoff<-750
|
||||
if (!is.null(input$file_analy) & !is.null(analysis$taula_def)){
|
||||
observeEvent(analysis$taula_def, {})
|
||||
table<-analysis$taula_def
|
||||
if (oneside != ""){
|
||||
tableR<-filter(table, ID.tumor == rechallenge) %>% filter(!is.na(Volume))
|
||||
summary(aov(Volume~Group+Timepoint+Error(ID.animal), data=table[table$ID.tumor == oneside,]))
|
||||
}else{
|
||||
for (side in c("L","R")){
|
||||
tableR<-filter(table, ID.tumor == side) %>% filter(!is.na(Volume))
|
||||
if (length(unique(tableR$Volume)) > 1 & length(unique(tableR$Timepoint)) > 1){
|
||||
print(paste0("Side: ",side))
|
||||
# print(summary(aov(Volume~Group+Timepoint+Error(paste0(ID.animal,Cage)), data=tableR)))
|
||||
print(summary(aov(Volume~Group+Timepoint+Error(ID.animal), data=tableR)))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
output$tab_stats<-renderTable({
|
||||
stattest<-"dunn"
|
||||
oneside<-""
|
||||
cutoff<-750
|
||||
if (!is.null(input$file_analy) & !is.null(analysis$taula_def)){
|
||||
table<-analysis$taula_def
|
||||
table_stats<-list()
|
||||
for (side in c("L","R")){
|
||||
tableR<-filter(table, ID.tumor == side) %>% filter(!is.na(Volume))
|
||||
if (length(unique(tableR$Volume)) > 1){
|
||||
table_stats[[side]]<-multi_stats(tableR, "Volume", "Timepoint", "Group", stat.test=stattest)
|
||||
}
|
||||
table_kw<-as.data.frame(matrix(nrow=0, ncol=2))
|
||||
for (point in unique(tableR$Timepoint)){
|
||||
len_group<-length(unique(tableR %>% filter(Timepoint == point) %>% pull(Group)))
|
||||
if (len_group > 1){
|
||||
table_kw<-rbind(table_kw, data.frame(point,kruskal.test(tableR %>% filter(Timepoint == point) %>% pull(Volume), tableR %>% filter(Timepoint == point) %>% pull(Group))[3][[1]]))
|
||||
}
|
||||
}
|
||||
colnames(table_kw)<-c("Timepoint", "KW-p.val")
|
||||
table_stats[[side]]<-merge(table_stats[[side]], table_kw)
|
||||
}
|
||||
table_stats_def<-bind_rows(table_stats, .id = "ID tumor")
|
||||
if (input$filter_stats == T){
|
||||
table_stats_def %>% filter(p.adj < 0.05)
|
||||
}else{
|
||||
table_stats_def
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
# Run the application
|
||||
|
||||
Reference in New Issue
Block a user