knitr::opts_chunk$set(echo = F) library(shiny) library(DT) library(mzrtsim) data("hmdbcms") data("monams1") data("monahrms1")
inputPanel( sliderInput( "n", "Numbers of the compounds", min = 10, max = 500, step = 1, value = 100 ), sliderInput( "inscutoff", "intensity cutoff for MS1 spectra", min = 0, max = 0.5, step = 0.01, value = 0.05 ), sliderInput( "ppm", "mass to charge ratio shift in ppm", min = 0, max = 50, value = 5 ), sliderInput( "mzrange", "mass to charge ratio range", min = 50, max = 1500, value = c(100,1000) ), sliderInput( "rtrange", "retention time range", min = 0, max = 1000, value = c(0,600) ), sliderInput( "scanrate", "scan rate per secound", min = 0, max = 1, value = 0.2 ), sliderInput( "pwidth", "peak width lambda for poisson distrution", min = 0, max = 30, value = 10 ), sliderInput( "baseline", "noise baseline", min = 50, max = 1000, value = 100 ), sliderInput( "baselinesd", "standard deviation for noise", min = 0, max = 100, value = 30 ), sliderInput( "sn", "signal to noise ratio of all compound", min = 3, max = 1000, value = 100 ), sliderInput( "tailingfactor", "tailing factor for peaks", min = 0.5, max = 2, value = 1.2 ), textInput("name", "Enter File Name:", value = "test"), numericInput("seed", "Enter Seed:", value = 1), radioButtons(inputId = 'db', label='database', choices = c('HMDB','MoNA','MoNAhr'), selected = 'MoNAhr'), checkboxInput('unique','Unique compound name',value = TRUE) ) sim <- reactive({ if(input$db == 'HMDB'){ data("hmdbcms") simmzml( name=input$name, db=hmdbcms, n = input$n, inscutoff = input$inscutoff, mzrange = input$mzrange, rtrange = input$rtrange, scanrate = input$scanrate, pwidth = input$pwidth, baseline = input$baseline, baselinesd = input$baselinesd, sn = input$sn, tailingfactor = input$tailingfactor, seed=input$seed, unique=input$unique ) file1 <- paste0(input$name,'.mzML') file2 <- paste0(input$name,'.csv') return(list(file1 = file1, file2 = file2)) } else if(input$db == 'MoNA'){ data("monams1") simmzml( name=input$name, db=monams1, n = input$n, inscutoff = input$inscutoff, mzrange = input$mzrange, rtrange = input$rtrange, ppm = input$ppm, scanrate = input$scanrate, pwidth = input$pwidth, baseline = input$baseline, baselinesd = input$baselinesd, sn = input$sn, tailingfactor = input$tailingfactor, seed=input$seed, unique=input$unique ) file1 <- paste0(input$name,'.mzML') file2 <- paste0(input$name,'.csv') return(list(file1 = file1, file2 = file2)) }else{ data("monahrms1") simmzml( name=input$name, db=monahrms1, n = input$n, inscutoff = input$inscutoff, mzrange = input$mzrange, rtrange = input$rtrange, scanrate = input$scanrate, pwidth = input$pwidth, baseline = input$baseline, baselinesd = input$baselinesd, sn = input$sn, tailingfactor = input$tailingfactor, seed=input$seed, unique=input$unique ) file1 <- paste0(input$name,'.mzML') file2 <- paste0(input$name,'.csv') return(list(file1 = file1, file2 = file2)) } })
shiny::renderPlot({ sim <- sim() x <- mzmlviz(sim$file1) })
DT::renderDataTable({ sim <- sim() read.csv(sim$file2) })
downloadHandler( filename = paste0(input$name,'.mzML'), content = function(file) { files <- sim() file.copy(files$file1, file) } )
downloadHandler( filename = paste0(input$name,'.csv'), content = function(file) { files <- sim() file.copy(files$file2, file) } )
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.