diff --git a/scMonitor/app.R b/scMonitor/app.R index c0a776e..63ad609 100644 --- a/scMonitor/app.R +++ b/scMonitor/app.R @@ -26,18 +26,20 @@ ui <- fluidPage( mainPanel( plotOutput("umapPlot"), - uiOutput("featPlotUI"), - uiOutput("mod_featPlotUI"), + uiOutput("featPlotUI") ) ) ) -# Define server logic required to draw a histogram +# Define server logic server <- function(input, output) { + + ## Defining reactive values dades<-reactiveValues() dades$seu<-NULL dades$mods<-NULL + ## Conecting with file location and entering Seurat object volumes <- c(Home = fs::path_home(), "R Installation" = R.home(), getVolumes()()) shinyFileChoose(input, 'file', roots=volumes) @@ -47,6 +49,7 @@ server <- function(input, output) { } }) + ## Rendering UI depending on seu meta.data output$groupby<-renderUI({ if (!is.null(dades$seu)){ selectInput("groupby", "GroupBy", c("Default", colnames(dades$seu@meta.data))) @@ -59,6 +62,7 @@ server <- function(input, output) { } }) + ## Render DimPlot output$umapPlot <- renderPlot({ observeEvent(dades$seu, {}) if (!is.null(dades$seu)){ @@ -70,11 +74,31 @@ server <- function(input, output) { plot } }) - + + ## Signature - Module Definition + observeEvent(input$modButton, { + if (input$modButton > 0){ + mod_list<-strsplit(input$mod_feat, " ")[[1]] + mod_list<-mod_list[mod_list %in% rownames(dades$seu)] + dades$seu<-AddModuleScore(dades$seu,list(mod_list), + name=input$mod_name) + } + }) + + ## FeaturePlot construction query<-eventReactive(input$goButton,{ dades$fet_query<-strsplit(input$features, " ")[[1]] }) + output$featPlotUI<- renderUI({ + observeEvent(dades$fet_query, {}) + if (!is.null(dades$seu)){ + plotOutput("featPlot", + height = paste0(input$height/10,"px")) + } + }) + + ## ModulePlot/SigPlot construction query_mod<-eventReactive(input$goButton,{ if (length(strsplit(input$mods, " ")[[1]]) > 0){ dades$mods<-paste(strsplit(input$mods, " ")[[1]], "1", sep="") @@ -83,14 +107,15 @@ server <- function(input, output) { } }) - output$featPlotUI<- renderUI({ - observeEvent(dades$fet_query, {}) - if (!is.null(dades$seu)){ - plotOutput("featPlot", + output$modPlotUI<- renderUI({ + observeEvent(dades$mod_name, {}) + if (!is.null(dades$mod_name)){ + plotOutput("modPlot", height = paste0(input$height/10,"px")) } }) + ## Feature/Mod plot rendering output$featPlot<-renderPlot({ observeEvent(input$goButton, {}) if (!is.null(dades$seu)){ @@ -112,41 +137,7 @@ server <- function(input, output) { do.call(ggarrange, c(plot, ncol=1)) } }) - - observeEvent(input$modButton, { - if (input$modButton > 0){ - mod_list<-strsplit(input$mod_feat, " ")[[1]] - mod_list<-mod_list[mod_list %in% rownames(dades$seu)] - dades$seu<-AddModuleScore(dades$seu,list(mod_list), - name=input$mod_name) - } - }) - - # query_mod<-eventReactive(input$modButton,{ - # dades$seu<-AddModuleScore(dades$seu,strsplit(input$mod_feat, " ")[[1]], - # name=input$mod_name) - # dades$mods<-if(is.null(dades$mods)){input$mod_name}else{c(dades$mods, input$mod_name)} - # print(input$mod_name) - # }) - - output$modPlotUI<- renderUI({ - observeEvent(dades$mod_name, {}) - if (!is.null(dades$mod_name)){ - plotOutput("modPlot", - height = paste0(input$height/10,"px")) - } - }) - output$modPlot<-renderPlot({ - # observeEvent(dades$seu, {}) - input$goButton - if (input$mods){ - print(dades$mods) - FeaturePlot(dades$seu, - split.by=if(input$facetby != "None"){input$facetby}else{NULL}, - features = dades$mods)&theme(aspect.ratio = 1) - } - }) }