From 940f9b842913e2056ed8a0759b7db5a96e7d57cd Mon Sep 17 00:00:00 2001 From: marcelcosta Date: Tue, 3 Nov 2020 19:40:52 +0100 Subject: [PATCH] =?UTF-8?q?a=C3=B1adir=20randomizado=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- invivos/app.R | 83 +++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 61 insertions(+), 22 deletions(-) diff --git a/invivos/app.R b/invivos/app.R index a374a7d..bee5a9d 100755 --- a/invivos/app.R +++ b/invivos/app.R @@ -5,6 +5,7 @@ library(openxlsx) library(dplyr) library(car) library(ggbeeswarm) +library(gtools) source("../../funcions.R") # Define UI for application @@ -17,9 +18,12 @@ ui <- fluidPage( 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), downloadButton("downloadData", "Descargar Excel") ), - plotOutput("distPlot") + mainPanel( + plotOutput("distPlot") + ) ), tabPanel("Análisis") ) @@ -28,9 +32,20 @@ ui <- fluidPage( # Define server logic required to draw a histogram server <- function(input, output) { - + dades<-reactiveValues() + dades$taula<-NULL + dades$groups<-NULL + dades$db<-NULL + observe({ + if (!is.null(input$file_sizes)){ + dades$taula<-read.xlsx(input$file_sizes$datapath, sheet = 1) + dades$groups<-read.xlsx(input$file_sizes$datapath, sheet = 2)[,1] + } + }) output$distPlot <- renderPlot({ - df<-read.xlsx(input$file1$datapath) + observeEvent(dades$taula, {}) + if (!is.null(dades$taula)){ + df<-dades$taula up_cuttof<-400 low_cuttof<-50 df<-df[df$Volumen < up_cuttof & df$Volumen > low_cuttof,] @@ -38,16 +53,16 @@ server <- function(input, output) { s<-shapiro.test(df$Volumen)[[2]] - ngroup<-5 + ngroup<-length(dades$groups) ind.list<-list() pval.list<-list() lvn.list<-list() test.list<-list() - for (data in 1:2000){ + for (data in 1:input$iterations){ interr=T while(interr == T){ - ind<-sample(rep(1:ngroup, each=7), length(unique(df$Mouse))) + ind<-sample(rep(dades$groups, each=7), length(unique(df$Mouse))) df_temp<-merge(df, data.frame("Mouse"=unique(df$Mouse), "group"=as.factor(ind))) interr<-any(table(df_temp$group) < floor(nrow(df_temp)/5) | table(df_temp$group) > ceiling(nrow(df_temp)/5)) } @@ -66,12 +81,14 @@ server <- function(input, output) { index<-which(unlist(lvn.list) == min(unlist(lvn.list)[which(unlist(pval.list) %in% sort(unlist(pval.list), decreasing = T)[1:20])])) df_def<-merge(df, ind.list[[index]]) + dades$db<-df_def ggplot(df_def, aes(group, Volumen))+ geom_boxplot(outlier.alpha = F)+ geom_jitter(width=0.25)+ geom_point(stat="summary", color="blue", size=3)+ lims(y=c(0,max(df_def$Volumen)+10)) + } }) output$downloadData <- downloadHandler( @@ -85,23 +102,45 @@ server <- function(input, output) { id_tumors<-c("L","R") timepoint<-c(7,10,13,16,19,22,25) - - template<-expand.grid(LETTERS[1:ncages], 1:5, id_tumors, timepoint) - colnames(template)<-c("Cage", "ID animal", "ID tumor", "Timepoint") - template<-template[order(template$Timepoint, template$Cage, template$`ID animal`),] - template["Group"]<-"" - template<-rbind(template, template, template) - template<-template[order(template$Timepoint, template$Cage, template$`ID animal`, template$`ID tumor`),] - if (input$measure_sys == "L-W-D"){ - template["TS"]<-rep(c("TS-Length", "TS-Width", "TS-Deep"), nrow(template)/3) - dtemplate<-dcast(template, Cage+`ID animal`+`ID tumor`+Group+TS~Timepoint) - } - if (input$measure_sys == "Min-Max"){ - template["DPV"]<-rep(c("Major", "Minor"), nrow(template)/2) - dtemplate<-dcast(template, Cage+`ID animal`+`ID tumor`+Group+DPV~Timepoint) + if (!is.null(input$file_sizes)){ + template<-expand.grid(dades$db$MouseID, timepoint) + colnames(template)<-c("MouseID", "Timepoint") + template<-template[order(template$Timepoint, template$MouseID),] + template<-merge(template, dades$db[c("MouseID", "group")]) + if (input$measure_sys == "L-W-D"){ + template<-rbind(template, template, template) + template<-template[order(template$Timepoint, template$MouseID),] + template["TS"]<-rep(c("TS-Length", "TS-Width", "TS-Deep"), nrow(template)/3) + dtemplate<-dcast(template, MouseID+group+TS~Timepoint) + dtemplate<-dtemplate[mixedorder(as.character(dtemplate$MouseID)),] + } + if (input$measure_sys == "Min-Max"){ + template<-rbind(template, template) + template<-template[order(template$Timepoint, template$MouseID),] + template["DPV"]<-rep(c("Major", "Minor"), nrow(template)/2) + dtemplate<-dcast(template, MouseID+group+DPV~Timepoint) + dtemplate<-dtemplate[mixedorder(as.character(dtemplate$MouseID)),] + } + dtemplate[,4:ncol(dtemplate)]<-"" + }else{ + template<-expand.grid(LETTERS[1:ncages], 1:5, id_tumors, timepoint) + colnames(template)<-c("Cage", "ID animal", "ID tumor", "Timepoint") + template<-template[order(template$Timepoint, template$Cage, template$`ID animal`),] + template["Group"]<-"" + if (input$measure_sys == "L-W-D"){ + template<-rbind(template, template, template) + template<-template[order(template$Timepoint, template$Cage, template$`ID animal`, template$`ID tumor`),] + template["TS"]<-rep(c("TS-Length", "TS-Width", "TS-Deep"), nrow(template)/3) + dtemplate<-dcast(template, Cage+`ID animal`+`ID tumor`+Group+TS~Timepoint) + } + if (input$measure_sys == "Min-Max"){ + template<-rbind(template, template) + template<-template[order(template$Timepoint, template$Cage, template$`ID animal`, template$`ID tumor`),] + template["DPV"]<-rep(c("Major", "Minor"), nrow(template)/2) + dtemplate<-dcast(template, Cage+`ID animal`+`ID tumor`+Group+DPV~Timepoint) + } + dtemplate[,6:ncol(dtemplate)]<-"" } - - dtemplate[,6:ncol(dtemplate)]<-"" write.xlsx(dtemplate,file) } )