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
track_data_gr
functionYou 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)
track_data_csv
functionYou 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))
sessionInfo()
#> R version 4.4.0 (2024-04-24)
#> Platform: x86_64-pc-linux-gnu
#> Running under: Ubuntu 22.04.4 LTS
#>
#> Matrix products: default
#> BLAS: /home/biocbuild/bbs-3.19-bioc/R/lib/libRblas.so
#> LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0
#>
#> locale:
#> [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
#> [3] LC_TIME=en_GB LC_COLLATE=C
#> [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
#> [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
#> [9] LC_ADDRESS=C LC_TELEPHONE=C
#> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
#>
#> time zone: America/New_York
#> tzcode source: system (glibc)
#>
#> attached base packages:
#> [1] stats4 stats graphics grDevices utils datasets methods
#> [8] base
#>
#> other attached packages:
#> [1] GenomicRanges_1.56.0 GenomeInfoDb_1.40.0 IRanges_2.38.0
#> [4] S4Vectors_0.42.0 BiocGenerics_0.50.0 shiny_1.8.1.1
#> [7] shiny.gosling_1.0.1
#>
#> loaded via a namespace (and not attached):
#> [1] httr_1.4.7 cli_3.6.2 knitr_1.46
#> [4] rlang_1.1.3 xfun_0.44 UCSC.utils_1.0.0
#> [7] promises_1.3.0 jsonlite_1.8.8 xtable_1.8-4
#> [10] glue_1.7.0 shiny.react_0.3.0 htmltools_0.5.8.1
#> [13] httpuv_1.6.15 sass_0.4.9 rmarkdown_2.26
#> [16] evaluate_0.23 jquerylib_0.1.4 fastmap_1.2.0
#> [19] yaml_2.3.8 lifecycle_1.0.4 compiler_4.4.0
#> [22] fs_1.6.4 Rcpp_1.0.12 XVector_0.44.0
#> [25] later_1.3.2 digest_0.6.35 R6_2.5.1
#> [28] GenomeInfoDbData_1.2.12 magrittr_2.0.3 bslib_0.7.0
#> [31] tools_4.4.0 mime_0.12 zlibbioc_1.50.0
#> [34] cachem_1.1.0