diff --git a/R/plotting.R b/R/plotting.R index 56f6284ae4f6582bc63f0beb63ef431b1e656406..c6e6d45fad886368c905e0ab264b1b8a584a69ff 100644 --- a/R/plotting.R +++ b/R/plotting.R @@ -525,7 +525,7 @@ narrow_summ <- function(summ,kvals,labs,...) { ### PLOTTING: TOP-LEVEL PLOT CREATION -make_eic_ms1_plot <- function(extr_ms1,summ,kvals,labs,axis="linear",rt_range=NULL, asp=1) { +make_eic_ms1_plot <- function(extr_ms1,summ,kvals,labs,axis="linear",rt_range=NULL,i_range=NULL, asp=1) { ## Get metadata. summ_rows <- narrow_summ(summ,kvals,labs,"mz","ms1_rt","ms1_int","Name","SMILES","Formula") ## Get the table with ms1 data. @@ -533,7 +533,12 @@ make_eic_ms1_plot <- function(extr_ms1,summ,kvals,labs,axis="linear",rt_range=NU key <- names(kvals) ## Deal with retention time range. - rt_lim <- if (is.null(rt_range)) NULL else ggplot2::coord_cartesian(xlim=rt_range)#ggplot2::xlim(rt_range[[1]],rt_range[[2]]) + coord <- if (is.null(rt_range) && is.null(i_range)) { + NULL + } else { + ggplot2::coord_cartesian(xlim=rt_range, + ylim=i_range) + } xrng <- range(pdata$rt) #if (!is.null(rt_range)) rt_range else range(pdata$rt) dx <- abs(xrng[[2]]-xrng[[1]]) yrng <- range(pdata$intensity) @@ -552,7 +557,7 @@ make_eic_ms1_plot <- function(extr_ms1,summ,kvals,labs,axis="linear",rt_range=NU ggplot2::xlab("retention time")+ cust_geom_line()+ scale_y(axis=axis,labels=sci10)+ - rt_lim + coord ## annt_dx <- 5*dx/100. ## annt <- summ_rows[,.(x=..annt_dx+ms1_rt,y=ms1_int,txt=signif(ms1_rt,5))] ## ## Annotate. diff --git a/R/shiny-ui-base.R b/R/shiny-ui-base.R index d7a2b4a85726a7cf043bdf46f55a7c1050242b1e..a10305ff12ad8952ca2865cab1b10df4e7554850 100644 --- a/R/shiny-ui-base.R +++ b/R/shiny-ui-base.R @@ -795,6 +795,16 @@ mk_shinyscreen_server <- function(projects,init) { if (is.na(x2)) x2 <- NA_real_ c(x1,x2) }) + + rf_get_irange <- reactive({ + y1 <- input$plot_i_min + y2 <- input$plot_i_max + + if (is.na(y1)) y1 <- NA_real_ + if (is.na(y2)) y2 <- NA_real_ + c(y1,y2) + + }) rf_plot_eic_ms1 <- reactive({ isolate({ ms1 <- rvs$m$extr$ms1 @@ -806,7 +816,18 @@ mk_shinyscreen_server <- function(projects,init) { make_eic_ms1_plot(ms1,summ,kvals=req(rf_get_cindex_kval()), labs=req(rf_get_cindex_labs()), asp=PLOT_EIC_ASPECT, - rt_range=rf_get_rtrange()) + rt_range=rf_get_rtrange(), + i_range=rf_get_irange()) + }) + + rf_get_ms2_eic_rtrange <- reactive({ + pms1 <- rf_plot_eic_ms1() + drng <- range(pms1$data$rt) + urng <- rf_get_rtrange() + if (is.na(urng[[1]])) urng[[1]] <- drng[[1]] + if (is.na(urng[[2]])) urng[[2]] <- drng[[2]] + print(urng) + urng }) rf_plot_eic_ms2 <- reactive({ @@ -821,7 +842,7 @@ mk_shinyscreen_server <- function(projects,init) { make_eic_ms2_plot(summ, kvals=rf_get_cindex_kval(), labs=rf_get_cindex_labs(), - rt_range = rf_get_rtrange(), + rt_range = rf_get_ms2_eic_rtrange(), asp=PLOT_EIC_ASPECT) @@ -1365,12 +1386,22 @@ mk_shinyscreen_server <- function(projects,init) { observeEvent(input$plot_brush,{ xmin <- input$plot_brush[["xmin"]] xmax <- input$plot_brush[["xmax"]] + ymin <- input$plot_brush[["ymin"]] + ymax <- input$plot_brush[["ymax"]] + 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) + + if (!is.null(ymin)) updateNumericInput(session=session, + inputId="plot_i_min", + value=ymin) + if (!is.null(ymax)) updateNumericInput(session=session, + inputId="plot_i_max", + value=ymax) session$resetBrush("plot_brush") },label = "get_rt_from_selection") @@ -1384,6 +1415,12 @@ mk_shinyscreen_server <- function(projects,init) { updateNumericInput(session=session, inputId="plot_rt_max", value=NA_real_) + updateNumericInput(session=session, + inputId="plot_i_min", + value=NA_real_) + updateNumericInput(session=session, + inputId="plot_i_max", + value=NA_real_) }, label = "reset_rt_range") diff --git a/inst/rmd/app.Rmd b/inst/rmd/app.Rmd index eb1508505d9e4459fefad9bcde24d471d9888d9b..a69f48945f4cb550e99ae772122231cb52da5914 100644 --- a/inst/rmd/app.Rmd +++ b/inst/rmd/app.Rmd @@ -692,6 +692,26 @@ numericInput(inputId = "plot_rt_max", ``` </div> <!-- RT div --> + +#### Intensity Range (MS1) + +<div style="display:flex; flex-direction: row;"> <!-- Intensity div --> +```{r, echo=F} +numericInput(inputId = "plot_i_min", + label="Start", + value=NA_real_, + width="15%") +``` +```{r, echo=F} +numericInput(inputId = "plot_i_max", + label="End", + value=NA_real_, + width="15%") + + +``` +</div> <!-- Intensity div --> + </div> <div> ```{r, echo=F}