From 0f0cf8bd1dd483f6de6fc876990731783315d0fd Mon Sep 17 00:00:00 2001 From: Costa <47926492N@ICO.SCS.local> Date: Wed, 2 Jun 2021 14:09:09 +0200 Subject: [PATCH] Start --- app.R | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 app.R diff --git a/app.R b/app.R new file mode 100644 index 0000000..68228ae --- /dev/null +++ b/app.R @@ -0,0 +1,107 @@ +library(shiny) +library(rhandsontable) + +DF<-as.data.frame(matrix(nrow=1, ncol=5)) +colnames(DF)<-c("name","conc.vector","bp.vector","conc.insert","bp.insert") +DF[1,]<-rep("",5) + +ui <- fluidPage( + + # Application title + titlePanel("Lligacions"), + + # Sidebar with a slider input for number of bins + sidebarLayout( + sidebarPanel( + sliderInput("ratio", + "Ratio Insert:Vector :", + min = 1, + max = 20, + value = 10), + sliderInput("minim", + "Volum mínim:", + min = 0.2, + max = 1.25, + value = 0.5, step = 0.1), + sliderInput("voltotal", + "Volum Total:", + min = 1.5, + max = 2.5, + value = 2, step = 0.5), + width = 3), + + # Show a plot of the generated distribution + mainPanel( + rHandsontableOutput("hot"), + tableOutput("results") + ) + ) +) + +# Define server logic required to draw a histogram +server <- function(input, output) { + + values <- reactiveValues() + + ## Handsontable + observe({ + if (!is.null(input$hot)) { + DF = hot_to_r(input$hot) + } else { + if (is.null(values[["DF"]])){ + DF <- DF + } + else{ + DF <- values[["DF"]] + } + } + values[["DF"]] <- DF + }) + + output$hot <- renderRHandsontable({ + print(DF) + if (!is.null(DF)){ + rhandsontable(DF, stretchH = "all", readOnly = F, useTypes = T) + } + }) + + output$results <- renderTable({ + observe({values}) + t<-values[["DF"]] + print(t) + if (nrow(t) > 1){ + t[2:5]<-as.data.frame(apply(t[2:5],2,as.numeric)) + }else{ + t[2:5]<-as.data.frame(t(apply(t[2:5],2,as.numeric))) + } + + Vv<-( (input$voltotal*t$conc.insert*t$bp.vector)/(t$conc.vector*t$bp.insert*input$ratio) ) / (1+(t$conc.insert*t$bp.vector)/(t$conc.vector*t$bp.insert*input$ratio)) + Vi<-input$voltotal-Vv + + t[,"vol.v"]<-Vv + t[,"vol.i"]<-Vi + t[,"dil.v"]<-1 + t[,"dil.i"]<-1 + + Vv.log<-Vv < input$minim + if (TRUE %in% Vv.log){ + alt.conc.vector<-( (input$voltotal-input$minim)*t$conc.insert*t$bp.vector)/ (input$minim*t$bp.insert*input$ratio) + t$dil.v[Vv.log]<-(t$conc.vector/alt.conc.vector)[Vv.log] + t$vol.v[Vv.log]<-input$minim + t$vol.i[Vv.log]<-(input$voltotal-input$minim) + } + + Vi.log<-Vi < input$minim + if (TRUE %in% Vi.log){ + alt.conc.insert<-( (input$voltotal-input$minim)*t$conc.vector*t$bp.insert*input$ratio)/ (input$minim*t$bp.vector) + t$dil.i[Vi.log]<-(t$conc.insert/alt.conc.insert)[Vi.log] + t$vol.i[Vi.log]<-input$minim + t$vol.v[Vi.log]<-(input$voltotal-input$minim) + } + t + }) + +} + +# Run the application +shinyApp(ui = ui, server = server)