From dd266151a865464f5e8f23e3a57b6e30a2ec18c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Todor=20Kondi=C4=87?= <todor.kondic@uni.lu> Date: Tue, 16 Aug 2022 16:44:54 +0200 Subject: [PATCH] app: Added report functionality. --- R/plotting.R | 9 ++--- R/shiny-ui-base.R | 89 +++++++++++++++++++++++++++++++++++++++++++++++ inst/rmd/app.Rmd | 18 ++++++++++ 3 files changed, 112 insertions(+), 4 deletions(-) diff --git a/R/plotting.R b/R/plotting.R index eff4b0a..e1b17df 100644 --- a/R/plotting.R +++ b/R/plotting.R @@ -491,6 +491,7 @@ guide_fun <- function() { narrow_summ <- function(summ,kvals,labs,...) { keys <- names(kvals) + ## keys <- keys[!is.na(keys)] needed <- setdiff(labs,keys) x <- as.list(c(needed,...)) x <- c(list(summ,kvals),x) @@ -498,8 +499,6 @@ narrow_summ <- function(summ,kvals,labs,...) { } make_eic_ms1_plot <- function(extr_ms1,summ,kvals,labs,axis="linear",rt_range=NULL, asp=1) { - - message("RTs: ", paste0(rt_range,coll=',')) ## Get metadata. summ_rows <- narrow_summ(summ,kvals,labs,"mz","ms1_rt","ms1_int","Name","SMILES","Formula") ## Get the table with ms1 data. @@ -613,9 +612,11 @@ make_spec_ms2_plot <- function(extr_ms2,summ,kvals,labs,axis="linear",asp=1) { } -combine_plots <- function(p_eic_ms1,p_eic_ms2,p_spec_ms2) { - cowplot::plot_grid(p_eic_ms1,p_eic_ms2,p_spec_ms2,ncol=1,align='vh',axis='b') +combine_plots <- function(p_eic_ms1,p_eic_ms2,p_spec_ms2,p_struct) { + cowplot::plot_grid(p_eic_ms1,p_struct,p_eic_ms2,p_spec_ms2,ncol=2,align='v',axis='l') } + + diff --git a/R/shiny-ui-base.R b/R/shiny-ui-base.R index 6270044..9aa1aba 100644 --- a/R/shiny-ui-base.R +++ b/R/shiny-ui-base.R @@ -1140,6 +1140,71 @@ mk_shinyscreen_server <- function(projects,init) { rvs$gui$datatab$adduct <- z$adduct }, label = "datatab-edit") + observeEvent(input$make_report_b,{ + isolate({ + ms1 <- rvs$m$extr$ms1 + ms2 <- rvs$m$extr$ms2 + summ <- rvs$m$out$tab$summ + + }) + req(NROW(summ)>0L) + req(NROW(ms1)>0L) + req(NROW(ms2)>0L) + + cind <- rf_get_cindex() + key <- rf_get_cindex_key() + rt_range <- rf_get_rtrange() + labs <- req(rf_get_cindex_labs()) + projdir <- rvs$gui$paths$project + fn <- paste0(file.path(projdir,input$report_name),'.pdf') + print(fn) + pdf(file=fn,paper="a4") + for (ri in 1:NROW(cind)) { + rowtab <- cind[ri][,..key] + kvals <- lapply(rowtab,function (x) x[[1]]) + names(kvals) <- key + message('Compound index row: ',ri) + p1 <- make_eic_ms1_plot(ms1,summ,kvals=kvals, + labs=labs, + asp=PLOT_EIC_ASPECT, + rt_range=rt_range) + p2 <- make_eic_ms2_plot(summ, + kvals=kvals, + labs=labs, + rt_range = rt_range, + asp=PLOT_EIC_ASPECT) + + id <- rowtab <- cind[ri][,..key][["ID"]][[1]] + smi <- rvs$m$out$tab$comp[ID==(id),SMILES][[1]] + grb <- smiles2img(smi) + p_struc <- qplot(1:5, 2*(1:5), geom="blank") + + annotation_custom(grb, xmin=-Inf, xmax=Inf, ymin=-Inf, ymax=Inf) + + theme_empty + + p_spec <- make_spec_ms2_plot(ms2, + summ, + kvals=kvals, + labs=labs) + + cmb <- combine_plots(p1,p2,p_spec,p_struc) + print(cmb) + } + dev.off() + }) + + ## observeEvent(input$plot_save_single,{ + + ## p1 <- rf_plot_eic_ms1() + ## p2 <- rf_plot_eic_ms2() + ## p3 <- rf_plot_spec_ms2() + ## str <- rf_plot_struct() + + ## message("Plots saved to ",file.path(rvs$gui$paths$project, + ## FIG_TOPDIR)) + + + ## }) + ## RENDER output$curr_proj <- renderText({ @@ -1287,6 +1352,30 @@ mk_shinyscreen_server <- function(projects,init) { ## },height=1000) + observeEvent(input$plot_brush,{ + xmin <- input$plot_brush[["xmin"]] + xmax <- input$plot_brush[["xmax"]] + if (!is.null(xmin)) updateNumericInput(session=session, + inputId="plot_rt_min", + value=xmin) + if (!is.null(xmax)) updateNumericInput(session=session, + inputId="plot_rt_max", + value=xmax) + session$resetBrush("plot_brush") + + },label = "get_rt_from_selection") + + observeEvent(input$plot_rt_click, + { + ## TODO: update to sensible range. + updateNumericInput(session=session, + inputId="plot_rt_min", + value=NA_real_) + updateNumericInput(session=session, + inputId="plot_rt_max", + value=NA_real_) + }, label = "reset_rt_range") + output$plot_eic_ms1 <- renderPlot({ rf_plot_eic_ms1() diff --git a/inst/rmd/app.Rmd b/inst/rmd/app.Rmd index 448b37e..7445af5 100644 --- a/inst/rmd/app.Rmd +++ b/inst/rmd/app.Rmd @@ -705,6 +705,24 @@ plotOutput("plot_spec_ms2", </div> <div></div> </div> +<div style="display: flex-flow: row nowrap"> <!-- Control Bar --> +```{r, echo=F} +## actionButton("plot_save_single", +## label="Save this plot") +## actionButton("plot_save_all", +## label="Save all plots") +actionButton("make_report_b", + label="Create report") +textInput("report_name", + label="Report Name", + value="report") +## textInput("plot_ext", +## label = "Plot extension", +## value = "pdf") +``` + +</div> <\!-- Control Bar -\-> --> + <!-- <div style="display: flex-flow: column nowrap"> <\!-- Main -\-> --> <!-- <div style="display: flex; flex-direction: row; flex-wrap: nowrap;"> <\!-- EICs and Structure -\-> --> -- GitLab