completar análisis
This commit is contained in:
+183
-7
@@ -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),
|
uiOutput('ncages'),
|
||||||
sliderInput("iterations", "Iteraciones", min=100, max=2000, step=100, value=100),
|
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
|
up_cuttof<-input$upcut
|
||||||
low_cuttof<-50
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user