## ----, eval=FALSE-------------------------------------------------------- ## library(shiny) ## shinyUI(pageWithSidebar( ## # Application title ## headerPanel("Simple Genome Browser"), ## # Sidebar with a slider inputs and selection boxes ## sidebarPanel( ## sliderInput("windowsize", ## "Windowsize:", ## min = 10, ## max = 200, ## value = 50, ## step = 5), ## uiOutput("chromSelect"), ## uiOutput("genomicPositionSelect") ## ), ## # Show a plot of the region ## mainPanel( ## plotOutput("mismatchPlot", height=800) ## ) ## )) ## ----, eval=FALSE-------------------------------------------------------- ## library(shiny) ## library(h5vc) ## library(rhdf5) ## tallyFile <- "yeast.hfs5" ## study <- "/yeast" ## h5ls( tallyFile ) ## chromosomes <- h5ls( tallyFile ) ## chromlengths <- as.numeric(subset( chromosomes, otype == "H5I_DATASET" & name == "Reference" )$dim) ## chromosomes <- subset( chromosomes, otype == "H5I_GROUP" & name != "yeast" )$name ## names(chromlengths) = chromosomes ## ## # Define server logic required to generate and plot a random distribution ## shinyServer(function(input, output) { ## ## output$chromSelect <- renderUI({ ## selectInput( "chrom", "Chromosome", choices = c("I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII","XIII","XIV","XV","XVI", "Mito")) ## }) ## ## output$genomicPositionSelect <- renderUI({ ## sliderInput( "gpos", "Genomic Position:", min = 10, max = chromlengths[input$chrom] - 10, value = 200 ) ## }) ## ## group <- reactive({ paste( study, input$chrom, sep="/" ) }) ## ## sampleData <- reactive({ sd = getSampleData( tallyFile, group() ); sd$Sample = c("YB210","s288c"); sd }) ## ## pos <- reactive({ ## min( max( input$windowsize + 1, input$gpos ), chromlengths[input$chrom] - input$windowsize - 1 ) ## }) ## ## data <- reactive({ ## h5dapply( ## tallyFile, ## group(), ## blocksize = input$windowsize*3, ## names = c("Coverages","Counts","Deletions"), ## range = c( max( pos() - input$windowsize, 0 ), min( pos() + input$windowsize, chromlengths[input$chrom] ) ) ## )[[1]] ## ## }) ## ## output$mismatchPlot <- renderPlot({ ## p = mismatchPlot( ## data(), ## sampleData(), ## samples = c("s288c","YB210"), ## input$windowsize, ## pos() ## ) ## print(p) ## }) ## }) ## ----, eval=FALSE-------------------------------------------------------- ## library(rhdf5) ## library(h5vc) ## setwd("~/ShinyApps/Yeast") ## tallyFile <- "yeast.hfs5" ## study <- "/yeast" ## h5ls( tallyFile ) ## chromosomes <- h5ls( tallyFile ) ## chromosomes <- subset( chromosomes, otype == "H5I_GROUP" & name != "yeast" )$name ## variantCalls <- list() ## for( chrom in chromosomes ){ ## group <- paste( study, chrom, sep = "/" ) ## sdat <- getSampleData( tallyFile, group ) ## sdat$Group <- "yeast" ## variantCalls[[chrom]] <- h5dapply( ## filename = tallyFile, ## group = group, ## blocksize = 100000, ## FUN = callVariantsPairedFancy, ## sampledata = sdat, ## cl = vcConfParams( returnDataPoints = TRUE, minStrandAltSupport = 4 ), ## names = c( "Counts", "Coverages", "Reference" ), ## verbose = TRUE ## ) ## } ## for( chrom in chromosomes ){ ## variantCalls[[chrom]] <- do.call( rbind, variantCalls[[chrom]] ) ## } ## variantCalls <- do.call( rbind, variantCalls ) ## rownames(variantCalls) = NULL ## variantCalls$Support = variantCalls$caseCountFwd + variantCalls$caseCountRev ## variantCalls$Coverage = variantCalls$caseCoverageFwd + variantCalls$caseCoverageRev ## variantCalls$AF = variantCalls$Support / variantCalls$Coverage ## save( variantCalls, file = "yeast.variants.RDa" ) ## ----, eval=FALSE-------------------------------------------------------- ## library(shiny) ## shinyUI(pageWithSidebar( ## ## # Application title ## headerPanel("Simple Variant Browser - Yeast Strains Example"), ## ## # Sidebar with a slider inputs and selection boxes ## sidebarPanel( ## sliderInput("windowsize", ## "Windowsize:", ## min = 10, ## max = 200, ## value = 50, ## step = 5), ## uiOutput("chromSelect"), ## sliderInput("af", ## "Allele Frequency:", ## min = 0, ## max = 1, ## value = c(0.1,1.0), ## step = 0.01), ## sliderInput( "minSupport", ## "Minimum Support", ## min = 2, ## max = 200, ## value = 2), ## sliderInput( "minCoverage", ## "Minimum Coverage", ## min = 10, ## max = 500, ## value = 50, ## step = 5), ## uiOutput("variantSelect"), ## textOutput("diag") ## ), ## ## # Show a plot of the region ## mainPanel( ## tabsetPanel( ## tabPanel( title = "Region Mismatch Plot", plotOutput("mismatchPlot", height=800) ), ## tabPanel( title = "Variant Table", tableOutput("variantTable") ), ## tabPanel( title = "Variant Summary Plots", plotOutput("afHist") ) ## ) ## ) ## )) ## ----, eval=FALSE-------------------------------------------------------- ## library(shiny) ## library(h5vc) ## library(rhdf5) ## library(ggplot2) ## library(grid) ## ## tallyFile <- "yeast.hfs5" ## study <- "/yeast" ## h5ls( tallyFile ) ## chromosomes = h5ls( tallyFile ) ## chromlengths = as.numeric(subset( chromosomes, otype == "H5I_DATASET" & name == "Reference" )$dim) ## chromosomes = subset( chromosomes, otype == "H5I_GROUP" & name != "yeast" )$name ## names(chromlengths) = chromosomes ## ## load(file="yeast.variants.RDa") ## variantCalls$start <- variantCalls$start + 1 #fixing difference in counting 0-based vs. 1-based ## variantCalls$end <- variantCalls$end + 1 ## # Define server logic required to generate and plot a random distribution ## shinyServer(function(input, output) { ## ## output$chromSelect <- renderUI({ ## selectInput( "chrom", "Chromosome", choices = c("I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII","XIII","XIV","XV","XVI", "Mito")) ## }) ## ## group <- reactive({ paste( study, input$chrom, sep="/" ) }) ## ## sampleData <- reactive({ sd = getSampleData( tallyFile, group() ); sd$Sample = c("YB210","s288c"); sd }) ## ## variants <- reactive({ ## subset( variantCalls, seqnames == input$chrom & AF >= input$af[1] & AF <= input$af[2] & Support >= input$minSupport & Coverage >= input$minCoverage ) ## }) ## ## output$variantSelect <- renderUI({ ## tmp = seq(nrow(variants())) ## names(tmp) = paste( variants()$start, " - ", variants()$refAllele, "/", variants()$altAllele, sep="" ) ## selectInput( "var", "Variant:", choices = tmp ) ## }) ## ## pos <- reactive({ ## variants()$start[as.numeric(input$var)] ## }) ## ## data <- reactive({ ## if( nrow(variants()) > 0 ){ ## h5dapply( ## filename = tallyFile, ## group = group(), ## blocksize = input$windowsize*3, ## names = c("Coverages","Counts","Deletions"), ## range = c( max( pos() - input$windowsize, 0 ), min( pos() + input$windowsize, chromlengths[input$chrom] ) ) ## )[[1]] ## }else{ ## NULL ## } ## }) ## ## output$mismatchPlot <- renderPlot({ ## if( nrow(variants()) > 0 ){ ## p = mismatchPlot( ## data(), ## sampleData(), ## samples = c("s288c","YB210"), ## input$windowsize, ## pos() ## ) ## print(p) ## } ## }) ## ## output$variantTable <- renderTable({ ## variants()[,c("seqnames", "start", "refAllele", "altAllele", "AF", "Support", "Coverage")] ## }) ## ## output$afHist = renderPlot({ ## hist( variants()$AF, breaks = seq(0,1,0.01) ) ## }) ## ## })