Skip to contents

Call required libraries.

Getting a sample data for the GRanges object

We will be loading the peaks data from ChipSeq dataset with the GEO accession GSM1295076

GSM1295076_CBX6_BF_ChipSeq_mergedReps_peaks.bed.gz file will be used to create a sample GRanges object.

url <- "https://rb.gy/7y3fx"
temp_file <- file.path(tempdir(), "data.gz")
download.file(url, destfile = temp_file, method = "auto", mode = "wb")
df <- read.delim(
  temp_file,
  header = FALSE,
  comment.char = "#",
  sep = ""
)
gr <- GRanges(
  seqnames = df$V1,
  ranges = IRanges(df$V2, df$V3)
)
gr
#> GRanges object with 1331 ranges and 0 metadata columns:
#>          seqnames              ranges strand
#>             <Rle>           <IRanges>  <Rle>
#>      [1]     chr1       815092-817883      *
#>      [2]     chr1     1243287-1244338      *
#>      [3]     chr1     2979976-2981228      *
#>      [4]     chr1     3566181-3567876      *
#>      [5]     chr1     3816545-3818111      *
#>      ...      ...                 ...    ...
#>   [1327]     chrX 135244782-135245821      *
#>   [1328]     chrX 139171963-139173506      *
#>   [1329]     chrX 139583953-139586126      *
#>   [1330]     chrX 139592001-139593238      *
#>   [1331]     chrY   13845133-13845777      *
#>   -------
#>   seqinfo: 24 sequences from an unspecified genome; no seqlengths

Using the GRanges object for a plot using shiny.gosling

Method 1 - Using the track_data_gr function

You can use the track_data_gr to pass the GRanges object inside a track.

Note: Make sure to run the Shiny app using the shiny::runApp() rather than interactively running the shiny::shinyApp() object.


ui <- fluidPage(
  use_gosling(clear_files = FALSE),
  goslingOutput("gosling_plot")
)

track_1 <- add_single_track(
  width = 800,
  height = 180,
  data = track_data_gr(
    gr, chromosomeField = "seqnames",
    genomicFields = c("start", "end")
  ),
  mark = "bar",
  x = visual_channel_x(
    field = "start", type = "genomic", axis = "bottom"
  ),
  xe = visual_channel_x(field = "end", type = "genomic"),
  y = visual_channel_y(
    field = "width", type = "quantitative", axis = "right"
  ),
  size = list(value = 5)
)

composed_view <- compose_view(
  layout = "linear",
  tracks = track_1
)

arranged_view <- arrange_views(
  title = "Basic Marks: bar",
  subtitle = "Tutorial Examples",
  views = composed_view
)

server <- function(input, output, session) {
  output$gosling_plot <- renderGosling({
    gosling(
      component_id = "component_1",
      arranged_view
    )
  })
}

shiny::shinyApp(ui, server)

Method 2 - Using the track_data_csv function

You can save the GRanges object as a csv file inside the www directory which can be used in the shiny.gosling plot.

if (!dir.exists("data")) {
  dir.create("data")
}
utils::write.csv(gr, "data/ChipSeqPeaks.csv", row.names = FALSE)

track_1 <- add_single_track(
  width = 800,
  height = 180,
  data = track_data_csv(
    "data/ChipSeqPeaks.csv", chromosomeField = "seqnames",
    genomicFields = c("start", "end")
  ),
  mark = "bar",
  x = visual_channel_x(
    field = "start", type = "genomic", axis = "bottom"
  ),
  xe = visual_channel_x(field = "end", type = "genomic"),
  y = visual_channel_y(
    field = "width", type = "quantitative", axis = "right"
  ),
  size = list(value = 5)
)

composed_view <- compose_view(
  layout = "linear",
  tracks = track_1
)

arranged_view <- arrange_views(
  title = "Basic Marks: bar",
  subtitle = "Tutorial Examples",
  views = composed_view
)

shiny::shinyApp(ui = fluidPage(
  use_gosling(clear_files = FALSE),
  goslingOutput("gosling_plot")
), server = function(input, output, session) {
  output$gosling_plot <- renderGosling({
    gosling(
      component_id = "component_1",
      arranged_view
    )
  })
}, options = list(height = 1000))

Session Info


sessionInfo()
#> R version 4.3.1 (2023-06-16)
#> Platform: x86_64-pc-linux-gnu (64-bit)
#> Running under: Ubuntu 22.04.3 LTS
#> 
#> Matrix products: default
#> BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
#> LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so;  LAPACK version 3.10.0
#> 
#> locale:
#>  [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
#>  [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
#>  [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
#> [10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   
#> 
#> time zone: UTC
#> tzcode source: system (glibc)
#> 
#> attached base packages:
#> [1] stats4    stats     graphics  grDevices utils     datasets  methods  
#> [8] base     
#> 
#> other attached packages:
#> [1] GenomicRanges_1.52.0 GenomeInfoDb_1.36.3  IRanges_2.34.1      
#> [4] S4Vectors_0.38.2     BiocGenerics_0.46.0  shiny_1.7.5         
#> [7] shiny.gosling_0.99.5
#> 
#> loaded via a namespace (and not attached):
#>  [1] jsonlite_1.8.7          compiler_4.3.1          promises_1.2.1         
#>  [4] Rcpp_1.0.11             stringr_1.5.0           bitops_1.0-7           
#>  [7] later_1.3.1             jquerylib_0.1.4         systemfonts_1.0.4      
#> [10] textshaping_0.3.6       yaml_2.3.7              fastmap_1.1.1          
#> [13] mime_0.12               XVector_0.40.0          R6_2.5.1               
#> [16] knitr_1.44              desc_1.4.2              rprojroot_2.0.3        
#> [19] GenomeInfoDbData_1.2.10 bslib_0.5.1             rlang_1.1.1            
#> [22] cachem_1.0.8            stringi_1.7.12          httpuv_1.6.11          
#> [25] xfun_0.40               fs_1.6.3                sass_0.4.7             
#> [28] shiny.react_0.3.0       memoise_2.0.1           cli_3.6.1              
#> [31] pkgdown_2.0.7           magrittr_2.0.3          zlibbioc_1.46.0        
#> [34] digest_0.6.33           xtable_1.8-4            lifecycle_1.0.3        
#> [37] vctrs_0.6.3             evaluate_0.21           glue_1.6.2             
#> [40] ragg_1.2.5              RCurl_1.98-1.12         rmarkdown_2.25         
#> [43] purrr_1.0.2             tools_4.3.1             ellipsis_0.3.2         
#> [46] htmltools_0.5.6