Browse Source

completar análisis

master
marcelcosta 4 years ago
parent
commit
0ad5926807
1 changed files with 183 additions and 7 deletions
  1. +183
    -7
      invivos/app.R

+ 183
- 7
invivos/app.R

@ -6,6 +6,7 @@ library(dplyr)
library(car) library(car)
library(ggbeeswarm) library(ggbeeswarm)
library(gtools) library(gtools)
library(gridExtra)
source("../../funcions.R") source("../../funcions.R")
# Define UI for application # Define UI for application
@ -17,21 +18,42 @@ ui <- fluidPage(
sidebarPanel( sidebarPanel(
fileInput(inputId = "file_sizes", label = "Hoja de tamaños", multiple = F), 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")), 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") downloadButton("downloadData", "Descargar Excel")
), ),
mainPanel( mainPanel(
plotOutput("firstPlot"),
plotOutput("distPlot") 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 # Define server logic required to draw a histogram
server <- function(input, output) { server <- function(input, output) {
# Diseño
dades<-reactiveValues() dades<-reactiveValues()
dades$taula<-NULL dades$taula<-NULL
dades$groups<-NULL dades$groups<-NULL
@ -42,12 +64,42 @@ server <- function(input, output) {
dades$groups<-read.xlsx(input$file_sizes$datapath, sheet = 2)[,1] dades$groups<-read.xlsx(input$file_sizes$datapath, sheet = 2)[,1]
} }
}) })
output$distPlot <- renderPlot({
output$firstPlot <- renderPlot({
observeEvent(dades$taula, {}) observeEvent(dades$taula, {})
if (!is.null(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 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<-df[df$Volumen < up_cuttof & df$Volumen > low_cuttof,]
df["Mouse"]<-gsub("[a-zA-Z]", "", df$MouseID) df["Mouse"]<-gsub("[a-zA-Z]", "", df$MouseID)
@ -88,6 +140,11 @@ server <- function(input, output) {
geom_jitter(width=0.25)+ geom_jitter(width=0.25)+
geom_point(stat="summary", color="blue", size=3)+ geom_point(stat="summary", color="blue", size=3)+
lims(y=c(0,max(df_def$Volumen)+10)) lims(y=c(0,max(df_def$Volumen)+10))
})
output$distPlot <- renderPlot({
observeEvent(dades$taula, {})
if (!is.null(dades$taula)){
grafic()
} }
}) })
@ -144,7 +201,126 @@ server <- function(input, output) {
write.xlsx(dtemplate,file) write.xlsx(dtemplate,file)
} }
) )
# 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 # Run the application

Loading…
Cancel
Save