| Title: | igvShiny: a wrapper of Integrative Genomics Viewer (IGV - an interactive tool for visualization and exploration integrated genomic data) |
|---|---|
| Description: | This package is a wrapper of Integrative Genomics Viewer (IGV). It comprises an htmlwidget version of IGV. It can be used as a module in Shiny apps. |
| Authors: | Paul Shannon [aut], Arkadiusz Gladki [aut, cre] (ORCID: <https://orcid.org/0000-0002-7059-6378>), Karolina Scigocka [aut], Carolina Heimann [ctb], Steffen Klasberg [ctb], Vincent Carey [ctb], Parv Sachdeva [ctb], Mateusz Gladki [ctb], R Consortium [fnd] |
| Maintainer: | Arkadiusz Gladki <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 1.9.51 |
| Built: | 2026-09-30 06:58:28 UTC |
| Source: | https://github.com/bioc/igvShiny |
Pack junction attributes into a bed name column
.packJunctionAttributes(tbl).packJunctionAttributes(tbl)
tbl |
A data.frame of junctions. |
A character vector, one packed name field per row.
Sanitize and merge track configuration options
.sanitizeAndMergeOptions(baseOptions, userOptions).sanitizeAndMergeOptions(baseOptions, userOptions)
baseOptions |
A list of default options set by the R function. |
userOptions |
A list of options provided by the user via trackConfig. |
A merged and sanitized list of options ready to be sent to JavaScript.
Check a chromosome color map before it reaches igv.js
.sanitizeChromosomeColorMap(map).sanitizeChromosomeColorMap(map)
map |
a named list or character vector of colors, possibly empty |
the map as a named list, empty if nothing was supplied
Sanitize one startup track specification
.sanitizeTrack(track, depth).sanitizeTrack(track, depth)
track |
A named list, one igv.js track configuration. |
depth |
An integer, how deep this track sits in a merged track. |
The sanitized track, or NULL if it cannot be used.
Sanitize a list of startup track specifications
.sanitizeTracks(tracks, depth = 1L).sanitizeTracks(tracks, depth = 1L)
tracks |
A list of named lists, each an igv.js track configuration. |
depth |
An integer, how deep this list sits in a merged track; 1 for the startup list itself. |
A sanitized list of track configurations; invalid entries or keys are dropped with a warning.
Compares contig naming conventions (e.g. UCSC chr1 vs
Ensembl 1), contig lengths (e.g. hg19 vs hg38), and coordinate
boundaries between a track (BAM, CRAM, VCF, BED, or Bioconductor object)
and the active reference genome.
checkReferenceCompatibility( target, genomeName = NULL, genomeSpec = NULL, session = NULL, id = NULL )checkReferenceCompatibility( target, genomeName = NULL, genomeSpec = NULL, session = NULL, id = NULL )
target |
A file path (.bam, .cram, .vcf, .vcf.gz, .bed) or data object (data.frame, GenomicAlignments, VCF, GRanges) |
genomeName |
Character string, e.g. "hg38", "hg19", "mm10" |
genomeSpec |
Named list of genome options, as produced by
|
session |
Optional Shiny session object |
id |
Optional widget element ID |
A list with:
checked: logical indicating whether both inputs could be inspected
compatible: logical indicating if no critical mismatches were
found, or NA when the inputs could not be checked
mismatches: character vector of descriptive warning messages
details: list of specific detected anomalies (naming, length, out-of-bounds)
targetAssembly: detected assembly of track, if recognized
referenceAssembly: reference genome name
bamFile <- system.file(package = "igvShiny", "extdata", "tumor.bam") # tumor.bam is GRCh38: compatible with hg38, incompatible with hg19 res1 <- checkReferenceCompatibility(bamFile, genomeName = "hg38") res1$compatible # TRUE res2 <- checkReferenceCompatibility(bamFile, genomeName = "hg19") res2$compatible # FALSEbamFile <- system.file(package = "igvShiny", "extdata", "tumor.bam") # tumor.bam is GRCh38: compatible with hg38, incompatible with hg19 res1 <- checkReferenceCompatibility(bamFile, genomeName = "hg38") res1$compatible # TRUE res2 <- checkReferenceCompatibility(bamFile, genomeName = "hg19") res2$compatible # FALSE
display the already constructed and configured track
## S4 method for signature 'GWASTrack' display(obj, session, id, deleteTracksOfSameName = TRUE)## S4 method for signature 'GWASTrack' display(obj, session, id, deleteTracksOfSameName = TRUE)
obj |
An object of class GWASTrack |
session |
a Shiny session object |
id |
character the identifier of the target igv object in the browser |
deleteTracksOfSameName |
logical to avoid duplications in track names |
nothing
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }
a helper function for basic genomes, obtains the genome codes (e.g. 'hg38')
get_basic_genomes()get_basic_genomes()
an list of short genome codes, e.g., "hg38", "dm6"
bs <- get_basic_genomes()bs <- get_basic_genomes()
a helper function for common always available stock genomes, obtains the genome codes (e.g. 'hg38')
get_cas_genomes()get_cas_genomes()
an list of short genome codes, e.g., "hg38", "dm6"
cas <- get_cas_genomes()cas <- get_cas_genomes()
a helper function for mostly internal use, obtains the genome codes (e.g. 'hg38') supported by igv.js
get_css_genomes(test = FALSE)get_css_genomes(test = FALSE)
test |
logical(1) defaults to FALSE |
an list of short genome codes, e.g., "hg38", "dm6", "tair10"
css <- get_css_genomes(test = TRUE)css <- get_css_genomes(test = TRUE)
get_tracks_dir Get the directory where tracks are stored. The directory can be defined with environmental variable. If not defined the default is a directory called "tracks" in the temp directory. We need a local directory to write files - for instance, a vcf file representing a genomic region of interest. We then tell shiny about that directory, so that shiny's built-in http server can serve up files we write there, ultimately consumed by igv.js
get_tracks_dir(env_var = "TRACKS_DIR")get_tracks_dir(env_var = "TRACKS_DIR")
env_var |
The name of the environmental variable to use. |
string with the path to the tracks directory.
gtd <- get_tracks_dir(env_var = "TRACKS_DIR")gtd <- get_tracks_dir(env_var = "TRACKS_DIR")
the url of the gwas table
## S4 method for signature 'GWASTrack' getUrl(obj)## S4 method for signature 'GWASTrack' getUrl(obj)
obj |
An object of class GWASTrack |
character
file <- # a local gwas file system.file(package = "igvShiny", "extdata", "gwas-5k.tsv.gz") tbl.gwas <- read.table(file, sep = "\t", header = TRUE, quote = "") track <- GWASTrack( "gwas 5k", tbl.gwas, chrom.col = 12, pos.col = 13, pval.col = 28 ) getUrl(track)file <- # a local gwas file system.file(package = "igvShiny", "extdata", "gwas-5k.tsv.gz") tbl.gwas <- read.table(file, sep = "\t", header = TRUE, quote = "") track <- GWASTrack( "gwas 5k", tbl.gwas, chrom.col = 12, pos.col = 13, pval.col = 28 ) getUrl(track)
GWASTrack creates an IGV manhattan track from GWAS data
GWASTrack( trackName, data, chrom.col, pos.col, pval.col, chromosomeColorMap = list(), trackHeight = 50, autoscale = TRUE, minY = 0, maxY = 30 )GWASTrack( trackName, data, chrom.col, pos.col, pval.col, chromosomeColorMap = list(), trackHeight = 50, autoscale = TRUE, minY = 0, maxY = 30 )
trackName |
A character string, used as track label by igv, we recommend unique names per track. |
data |
a data.frame or a url pointing to one, whose structure is described by chrom.col, pos.col, pval.col |
chrom.col |
numeric, the column number of the chromosome column |
pos.col |
numeric, the column number of the position column |
pval.col |
numeric, the column number of the GWAS pvalue column |
chromosomeColorMap |
a named list or character vector mapping
chromosome names, as they are spelled in the data, to colors,
e.g. |
trackHeight |
numeric in pixels |
autoscale |
logical |
minY |
numeric for explicit (non-auto) scaling |
maxY |
numeric for explicit (non-auto) scaling |
A GWASTrack object
file <- # a local gwas file system.file(package = "igvShiny", "extdata", "gwas-5k.tsv.gz") tbl.gwas <- read.table(file, sep = "\t", header = TRUE, quote = "") dim(tbl.gwas) track <- GWASTrack( "gwas 5k", tbl.gwas, chrom.col = 12, pos.col = 13, pval.col = 28 ) getUrl(track) # a remote gwas file: the constructor checks that the url resolves, so this # block reaches the network and stays out of R CMD check url <- "https://gladki.pl/igvShiny/gwas_sample.tsv.gz" track <- GWASTrack( "remote url gwas", url, chrom.col = 3, pos.col = 4, pval.col = 10, autoscale = FALSE, minY = 0, maxY = 300, trackHeight = 100 ) getUrl(track) # colors picked per chromosome, with "*" covering the rest track <- GWASTrack( "gwas 5k, custom colors", tbl.gwas, chrom.col = 12, pos.col = 13, pval.col = 28, chromosomeColorMap = list("1" = "red", "2" = "blue", "*" = "gray") )file <- # a local gwas file system.file(package = "igvShiny", "extdata", "gwas-5k.tsv.gz") tbl.gwas <- read.table(file, sep = "\t", header = TRUE, quote = "") dim(tbl.gwas) track <- GWASTrack( "gwas 5k", tbl.gwas, chrom.col = 12, pos.col = 13, pval.col = 28 ) getUrl(track) # a remote gwas file: the constructor checks that the url resolves, so this # block reaches the network and stays out of R CMD check url <- "https://gladki.pl/igvShiny/gwas_sample.tsv.gz" track <- GWASTrack( "remote url gwas", url, chrom.col = 3, pos.col = 4, pval.col = 10, autoscale = FALSE, minY = 0, maxY = 300, trackHeight = 100 ) getUrl(track) # colors picked per chromosome, with "*" covering the rest track <- GWASTrack( "gwas 5k, custom colors", tbl.gwas, chrom.col = 12, pos.col = 13, pval.col = 28, chromosomeColorMap = list("1" = "red", "2" = "blue", "*" = "gray") )
This function is called in the server function of your shiny app
igvShiny( genomeOptions, width = NULL, height = NULL, elementId = NULL, displayMode = "squished", tracks = list() )igvShiny( genomeOptions, width = NULL, height = NULL, elementId = NULL, displayMode = "squished", tracks = list() )
genomeOptions |
a list with these fields: genomeName, initialLocus, annotation, dataMode, fasta, fastaIndex, stockGenome, validated |
width |
a character string, standard css notations, either e.g., "1000px" or "95%" |
height |
a character string, needs to be an explicit pixel measure, e.g., "800px" |
elementId |
a character string, the html element id within which igv is created |
displayMode |
a character string, default "SQUISHED". |
tracks |
a list of track specifications to be created and displayed
at startup. Each element is itself a named list of igv.js track options
(e.g. |
the created widget
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }
This function is called in the ui function of your shiny app
igvShinyOutput(outputId, width = "100%", height = NULL)igvShinyOutput(outputId, width = "100%", height = NULL)
outputId |
a character string, specifies the html element id |
width |
a character string, standard css notations, either e.g., "1000px" or "95%", "100%" by default |
height |
a character string, needs to be an explicit pixel measure, e.g., "800px", "400px" by default |
the created widget's html
io <- igvShinyOutput("igvOut")io <- igvShinyOutput("igvOut")
load GenomicAlignments data as an igv.js alignment track
loadBamTrackFromLocalData( session, id, trackName, data, deleteTracksOfSameName = TRUE, displayMode = "EXPANDED", trackConfig = list(), validateReference = TRUE, trackHeight = NULL )loadBamTrackFromLocalData( session, id, trackName, data, deleteTracksOfSameName = TRUE, displayMode = "EXPANDED", trackConfig = list(), validateReference = TRUE, trackHeight = NULL )
session |
an environment or list, provided and managed by shiny |
id |
character string, the html element id of this widget instance |
trackName |
character string |
data |
GenomicAlignments object |
deleteTracksOfSameName |
logical, default TRUE |
displayMode |
character string, possible values are "EXPANDED"(default), "SQUISHED" or "COLLAPSED" |
trackConfig |
a named list of additional igv.js track configuration
options, |
validateReference |
logical flag, default TRUE: checks track contigs against the active reference genome and emits warnings/toasts on mismatch. |
trackHeight |
numeric, track height in pixels (default: NULL, igv.js defaults to 300) |
nothing
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }
Streams a local BAM file and its index directly from disk using HTTP 206 Partial Content requests handled by the Shiny session. This allows viewing multi-gigabyte BAM files without loading them into R memory.
loadBamTrackFromLocalFile( session, id, trackName, bamFile, indexFile = paste0(bamFile, ".bai"), deleteTracksOfSameName = TRUE, displayMode = "EXPANDED", trackConfig = list(), validateReference = TRUE, trackHeight = NULL )loadBamTrackFromLocalFile( session, id, trackName, bamFile, indexFile = paste0(bamFile, ".bai"), deleteTracksOfSameName = TRUE, displayMode = "EXPANDED", trackConfig = list(), validateReference = TRUE, trackHeight = NULL )
session |
an environment or list, provided and managed by shiny (ShinySession) |
id |
character string, the html element id of this widget instance |
trackName |
character string, display name for the track |
bamFile |
character string, path to an existing, readable .bam file |
indexFile |
character string, path to the corresponding .bai index file
(default: |
deleteTracksOfSameName |
logical, whether to delete any existing track with the same name (default: TRUE) |
displayMode |
character string, display mode for alignments ("EXPANDED", "COLLAPSED", or "SQUISHED"), default "EXPANDED" |
trackConfig |
list, additional track options passed to igv.js |
validateReference |
logical flag, default TRUE: checks track contigs against the active reference genome and emits warnings/toasts on mismatch. |
trackHeight |
numeric, track height in pixels (default: NULL, igv.js defaults to 300) |
None, sends a message to the browser
## Not run: # Inside a Shiny server function: bamFile <- system.file(package = "igvShiny", "extdata", "A_2_A24_02_01_01.nanopore.minimap.sorted.bam") baiFile <- paste0(bamFile, ".bai") loadBamTrackFromLocalFile(session, "igvShiny_0", "Nanopore Reads", bamFile, baiFile, displayMode = "SQUISHED", trackHeight = 100) ## End(Not run)## Not run: # Inside a Shiny server function: bamFile <- system.file(package = "igvShiny", "extdata", "A_2_A24_02_01_01.nanopore.minimap.sorted.bam") baiFile <- paste0(bamFile, ".bai") loadBamTrackFromLocalFile(session, "igvShiny_0", "Nanopore Reads", bamFile, baiFile, displayMode = "SQUISHED", trackHeight = 100) ## End(Not run)
load a remote bam track
loadBamTrackFromURL( session, id, trackName, bamURL, indexURL, deleteTracksOfSameName = TRUE, displayMode = "EXPANDED", showAllBases = FALSE, trackConfig = list(), trackHeight = NULL )loadBamTrackFromURL( session, id, trackName, bamURL, indexURL, deleteTracksOfSameName = TRUE, displayMode = "EXPANDED", showAllBases = FALSE, trackConfig = list(), trackHeight = NULL )
session |
an environment or list, provided and managed by shiny |
id |
character string, the html element id of this widget instance |
trackName |
character string |
bamURL |
character string http url for the bam file, typically very large |
indexURL |
character string http url for the bam file index, typically small |
deleteTracksOfSameName |
logical, default TRUE |
displayMode |
character string, possible values are "EXPANDED"(default), "SQUISHED" or "COLLAPSED" |
showAllBases |
logical, show all bases in the alignment, default FALSE |
trackConfig |
a named list of additional igv.js track configuration
options. Alignment tracks read |
trackHeight |
numeric, track height in pixels (default: NULL, igv.js defaults to 300) |
nothing
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }
load a genome annotation track provided as a data.frame
loadBedGraphTrack( session, id, trackName, tbl, color = "gray", trackHeight = 30, autoscale, autoscaleGroup = -1, min = NA_real_, max = NA_real_, deleteTracksOfSameName = TRUE, quiet = TRUE, trackConfig = list(), validateReference = TRUE )loadBedGraphTrack( session, id, trackName, tbl, color = "gray", trackHeight = 30, autoscale, autoscaleGroup = -1, min = NA_real_, max = NA_real_, deleteTracksOfSameName = TRUE, quiet = TRUE, trackConfig = list(), validateReference = TRUE )
session |
an environment or list, provided and managed by shiny |
id |
character string, the html element id of this widget instance |
trackName |
character string |
tbl |
data.frame, with at least "chrom" "start" "end" "score" columns |
color |
character string, a legal CSS color, or "random", "gray" by default |
trackHeight |
an integer, 30 (pixels) by default |
autoscale |
logical |
autoscaleGroup |
numeric(1) defaults to -1 |
min |
numeric, consulted when autoscale is FALSE |
max |
numeric, consulted when autoscale is FALSE |
deleteTracksOfSameName |
logical, default TRUE |
quiet |
logical, default TRUE, controls verbosity |
trackConfig |
a named list of additional igv.js track configuration options. |
validateReference |
logical flag, default TRUE: checks track contigs and coordinates against the active reference genome and emits warnings/toasts on mismatch. |
nothing
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }
load a bedgraph track provided as a data.frame
loadBedGraphTrackFromURL( session, id, trackName, url, color = "gray", trackHeight = 30, autoscale = TRUE, min = 0, max = 1, autoscaleGroup = -1, deleteTracksOfSameName = TRUE, quiet = TRUE, trackConfig = list() )loadBedGraphTrackFromURL( session, id, trackName, url, color = "gray", trackHeight = 30, autoscale = TRUE, min = 0, max = 1, autoscaleGroup = -1, deleteTracksOfSameName = TRUE, quiet = TRUE, trackConfig = list() )
session |
an environment or list, provided and managed by shiny |
id |
character string, the html element id of this widget instance |
trackName |
character string |
url |
character |
color |
character string, a legal CSS color, or "random", "gray" by default |
trackHeight |
an integer, 30 (pixels) by default |
autoscale |
logical |
min |
numeric, consulted when autoscale is FALSE |
max |
numeric, consulted when autoscale is FALSE |
autoscaleGroup |
numeric(1) defaults to -1 |
deleteTracksOfSameName |
logical(1) defaults to TRUE |
quiet |
logical, default TRUE, controls verbosity |
trackConfig |
a named list of additional igv.js track configuration options. |
nothing
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }
load a bed track provided as a data.frame
loadBedTrack( session, id, trackName, tbl, color = "", trackHeight = 50, deleteTracksOfSameName = TRUE, quiet = TRUE, trackConfig = list(), validateReference = TRUE )loadBedTrack( session, id, trackName, tbl, color = "", trackHeight = 50, deleteTracksOfSameName = TRUE, quiet = TRUE, trackConfig = list(), validateReference = TRUE )
session |
an environment or list, provided and managed by shiny |
id |
character string, the html element id of this widget instance |
trackName |
character string |
tbl |
data.frame, with at least "chrom" "start" "end" columns |
color |
character string, a legal CSS color, or "random", "gray" by default |
trackHeight |
an integer, 50 (pixels) by default |
deleteTracksOfSameName |
logical, default TRUE |
quiet |
logical, default TRUE, controls verbosity |
trackConfig |
a named list of additional igv.js track configuration options. |
validateReference |
logical flag, default TRUE: checks track contigs and coordinates against the active reference genome and emits warnings/toasts on mismatch. |
nothing
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }
load a local cram track. Unlike loadBamTrackFromLocalData
this loader takes file paths, not an R object: no bioconductor package parses
cram, so the file and its index are handed to igv.js untouched, through the
directory shiny serves as "tracks".
loadCramTrackFromLocalData( session, id, trackName, cramFile, indexFile = paste0(cramFile, ".crai"), deleteTracksOfSameName = TRUE, trackConfig = list(), validateReference = TRUE, trackHeight = NULL ) loadCramTrackFromLocalFile( session, id, trackName, cramFile, indexFile = paste0(cramFile, ".crai"), deleteTracksOfSameName = TRUE, trackConfig = list(), validateReference = TRUE, trackHeight = NULL )loadCramTrackFromLocalData( session, id, trackName, cramFile, indexFile = paste0(cramFile, ".crai"), deleteTracksOfSameName = TRUE, trackConfig = list(), validateReference = TRUE, trackHeight = NULL ) loadCramTrackFromLocalFile( session, id, trackName, cramFile, indexFile = paste0(cramFile, ".crai"), deleteTracksOfSameName = TRUE, trackConfig = list(), validateReference = TRUE, trackHeight = NULL )
session |
an environment or list, provided and managed by shiny |
id |
character string, the html element id of this widget instance |
trackName |
character string |
cramFile |
character string, path to a cram file |
indexFile |
character string, path to its crai index, by default the cram file with ".crai" appended |
deleteTracksOfSameName |
logical, default TRUE |
trackConfig |
a named list of additional igv.js track configuration
options, |
validateReference |
logical flag, default TRUE: checks track contigs against the active reference genome and emits warnings/toasts on mismatch. |
trackHeight |
numeric, track height in pixels (default: NULL, igv.js defaults to 300) |
nothing
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }
load a remote cram track
loadCramTrackFromURL( session, id, trackName, cramURL, indexURL, deleteTracksOfSameName = TRUE, trackConfig = list(), trackHeight = NULL )loadCramTrackFromURL( session, id, trackName, cramURL, indexURL, deleteTracksOfSameName = TRUE, trackConfig = list(), trackHeight = NULL )
session |
an environment or list, provided and managed by shiny |
id |
character string, the html element id of this widget instance |
trackName |
character string |
cramURL |
character string http url for the bam file, typically very large |
indexURL |
character string http url for the bam file index, typically small |
deleteTracksOfSameName |
logical, default TRUE |
trackConfig |
a named list of additional igv.js track configuration
options, |
trackHeight |
numeric, track height in pixels (default: NULL, igv.js defaults to 300) |
nothing
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }
load a local GFF3 track file
loadGFF3TrackFromLocalData( session, id, trackName, tbl.gff3, color = "gray", colorTable, colorByAttribute, displayMode, trackHeight = 50, visibilityWindow, deleteTracksOfSameName = TRUE, trackConfig = list() )loadGFF3TrackFromLocalData( session, id, trackName, tbl.gff3, color = "gray", colorTable, colorByAttribute, displayMode, trackHeight = 50, visibilityWindow, deleteTracksOfSameName = TRUE, trackConfig = list() )
session |
an environment or list, provided and managed by shiny |
id |
character string, the html element id of this widget instance |
trackName |
character string |
tbl.gff3 |
data.frame in standard 9-column GFF3 format |
color |
character #RGB or a recognized color name. ignored if colorTable and colorByAttribute provided |
colorTable |
list, mapping a gff3 attribute, typically biotype, to a color |
colorByAttribute |
character, name of a gff3 attribute in column 9, typically "biotype" |
displayMode |
character, "EXPANDED", "SQUISHED" or "COLLAPSED" |
trackHeight |
numeric defaults to 50 |
visibilityWindow |
numeric, Maximum window size in base pairs for which indexed annotations or variants are displayed |
deleteTracksOfSameName |
logical, default TRUE |
trackConfig |
a named list of additional igv.js track configuration options. |
nothing
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "demos", "local-data.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "demos", "local-data.R") if (interactive()) { shiny::runApp(demo_app_file) }
load a remote GFF3 track
loadGFF3TrackFromURL( session, id, trackName, gff3URL, indexURL, color = "gray", colorTable, colorByAttribute, displayMode, trackHeight = 50, visibilityWindow, deleteTracksOfSameName = TRUE, trackConfig = list() )loadGFF3TrackFromURL( session, id, trackName, gff3URL, indexURL, color = "gray", colorTable, colorByAttribute, displayMode, trackHeight = 50, visibilityWindow, deleteTracksOfSameName = TRUE, trackConfig = list() )
session |
an environment or list, provided and managed by shiny |
id |
character string, the html element id of this widget instance |
trackName |
character string |
gff3URL |
character string http url for the bam file, typically very large |
indexURL |
character string http url for the bam file index, typically small |
color |
character #RGB or a recognized color name. ignored if colorTable and colorByAttribute provided |
colorTable |
list, mapping a gff3 attribute, typically biotype, to a color |
colorByAttribute |
character, name of a gff3 attribute in column 9, typically "biotype" |
displayMode |
character, "EXPANDED", "SQUISHED" or "COLLAPSED" |
trackHeight |
numeric defaults to 50 |
visibilityWindow |
numeric, Maximum window size in base pairs for which indexed annotations or variants are displayed |
deleteTracksOfSameName |
logical, default TRUE |
trackConfig |
a named list of additional igv.js track configuration options. |
nothing
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "demos", "local-data.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "demos", "local-data.R") if (interactive()) { shiny::runApp(demo_app_file) }
load a GWAS (genome-wide association study) track provided as a data.frame
loadGwasTrack( session, id, trackName, tbl.gwas, ymin = 0, ymax = 35, deleteTracksOfSameName = TRUE, trackConfig = list() )loadGwasTrack( session, id, trackName, tbl.gwas, ymin = 0, ymax = 35, deleteTracksOfSameName = TRUE, trackConfig = list() )
session |
an environment or list, provided and managed by shiny |
id |
character string, the html element id of this widget instance |
trackName |
character string |
tbl.gwas |
data.frame, with at least "chrom" "start" "end" columns |
ymin |
numeric defaults to 0 |
ymax |
numeric defaults to 35 |
deleteTracksOfSameName |
logical, default TRUE |
trackConfig |
a named list of additional igv.js track configuration
options. A table whose headers igv.js does not recognize needs its layout
spelled out, 1-based, as
|
nothing
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }
load a SEG track provided as a data.frame. igv "displays segmented data as a blue-to-red heatmap where the data range is -1.5 to 1.5... The segmented data file format is the output of the Circular Binary Segmentation algorithm (Olshen et al., 2004)".
loadSegTrack( session, id, trackName, tbl, deleteTracksOfSameName = TRUE, trackConfig = list() )loadSegTrack( session, id, trackName, tbl, deleteTracksOfSameName = TRUE, trackConfig = list() )
session |
an environment or list, provided and managed by shiny |
id |
character string, the html element id of this widget instance |
trackName |
character string |
tbl |
data.frame, with at least "chrom" "start" "end" "score" columns |
deleteTracksOfSameName |
logical, default TRUE |
trackConfig |
a named list of additional igv.js track configuration options. |
nothing
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }
load splice junctions held in R. The table is written as the six-column bed igv.js draws junctions from, and served from the same directory as the other local-data tracks.
Coordinates are taken as bed coordinates and written out unchanged, as the
other *FromLocalData loaders take theirs. STAR reports the first and
last intron base of a junction 1-based in SJ.out.tab, so a table read
straight from that file needs its start shifted by one first; a bed already
converted from it, which is what STAR wrappers and the igv.js test fixtures
ship, is passed in as is.
Columns chrom (or chr), start and end are
required. score and strand are used when present. The
per-junction attributes motif, uniquely_mapped,
multi_mapped, maximum_spliced_alignment_overhang and
annotated_junction are packed into the bed name column, which is
where the track reads its filters and labels from; supply the ones you
want to filter or label on. A name column, if you have already
packed it yourself, is written through untouched.
Without uniquely_mapped or an explicit score the arcs all
draw at the same thickness: igv.js has nothing to size them by.
loadSpliceJunctionTrackFromLocalData( session, id, trackName, tbl, trackHeight = 100, displayMode = "COLLAPSED", deleteTracksOfSameName = TRUE, trackConfig = list() )loadSpliceJunctionTrackFromLocalData( session, id, trackName, tbl, trackHeight = 100, displayMode = "COLLAPSED", deleteTracksOfSameName = TRUE, trackConfig = list() )
session |
an environment or list, provided and managed by shiny |
id |
character string, the html element id of this widget instance |
trackName |
character string |
tbl |
data.frame, with at least "chrom" "start" "end" columns, in bed coordinates: a 0-based start and an exclusive end |
trackHeight |
an integer, 100 (pixels) by default |
displayMode |
character, "COLLAPSED", "EXPANDED" or "SQUISHED" |
deleteTracksOfSameName |
logical, default TRUE |
trackConfig |
a named list of additional igv.js track configuration
options, the junction ones among them; see
|
nothing
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }
load splice junctions from a BED file reachable by URL, as
written by STAR (SJ.out.tab converted to BED). Six columns, with the
per-junction attributes packed into the name column as key=value
pairs separated by semicolons: motif, uniquely_mapped,
multi_mapped, maximum_spliced_alignment_overhang and
annotated_junction. The track reads its filters and labels from
those attributes.
igv.js draws junctions from a file of that shape only - it derives none of them from a bam file, and it has no sashimi plot. Show this track above a coverage track (bigWig, bedGraph) for the same sample to get the arcs-over-coverage view sashimi plots are wanted for.
loadSpliceJunctionTrackFromURL( session, id, trackName, url, indexURL = "", trackHeight = 100, displayMode = "COLLAPSED", deleteTracksOfSameName = TRUE, trackConfig = list() )loadSpliceJunctionTrackFromURL( session, id, trackName, url, indexURL = "", trackHeight = 100, displayMode = "COLLAPSED", deleteTracksOfSameName = TRUE, trackConfig = list() )
session |
an environment or list, provided and managed by shiny |
id |
character string, the html element id of this widget instance |
trackName |
character string |
url |
character string http url for the bed file of junctions |
indexURL |
character string http url for a tabix index, needed only for a bgzipped bed; "" by default, which loads the file whole |
trackHeight |
an integer, 100 (pixels) by default |
displayMode |
character, "COLLAPSED", "EXPANDED" or "SQUISHED" |
deleteTracksOfSameName |
logical, default TRUE |
trackConfig |
a named list of additional igv.js track configuration
options. The junction ones are read straight off it:
|
nothing
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }
load a VCF (variant) track provided as a Bioconductor VariantAnnotation object
loadVcfTrack( session, id, trackName, vcfData, deleteTracksOfSameName = TRUE, trackConfig = list(), validateReference = TRUE )loadVcfTrack( session, id, trackName, vcfData, deleteTracksOfSameName = TRUE, trackConfig = list(), validateReference = TRUE )
session |
an environment or list, provided and managed by shiny |
id |
character string, the html element id of this widget instance |
trackName |
character string |
vcfData |
VariantAnnotation object |
deleteTracksOfSameName |
logical, default TRUE |
trackConfig |
a named list of additional igv.js track configuration options. |
validateReference |
logical flag, default TRUE: checks track contigs against the active reference genome and emits warnings/toasts on mismatch. |
nothing
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "demos", "local-data.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "demos", "local-data.R") if (interactive()) { shiny::runApp(demo_app_file) }
a helper function for internal use by the igvShiny constructor, but possible also of use to those building an igvShiny app, to test their genome specification for validity
parseAndValidateGenomeSpec( genomeName, initialLocus = "all", stockGenome = TRUE, dataMode = NA, fasta = NA, fastaIndex = NA, genomeAnnotation = NA )parseAndValidateGenomeSpec( genomeName, initialLocus = "all", stockGenome = TRUE, dataMode = NA, fasta = NA, fastaIndex = NA, genomeAnnotation = NA )
genomeName |
character usually one short code of a supported ("stock") genome (e.g., "hg38") or for a user-supplied custom genome, the name you wish to use |
initialLocus |
character default "all", otherwise "chrN:start-end" or a recognized gene symbol |
stockGenome |
logical default TRUE |
dataMode |
character either "stock", "localFile" or "http" |
fasta |
character when supplying a custom (non-stock) genome, either a file path or a URL |
fastaIndex |
character when supplying a custom (non-stock) genome, either a file path or a URL, essential for all but the very small custom genomes. |
genomeAnnotation |
character when supplying a custom (non-stock) genome, a file path or URL pointing to a genome annotation file in a gff3 format |
an options list directly usable by igvApp.js, and thus igv.js
[get_css_genomes()] for stock genomes we support.
genomeSpec <- parseAndValidateGenomeSpec("hg38", "APOE") # the simplest case # a custom genome, read from the files shipped with the package: every # resource is checked for existence, and "http" would check it over the # network on each R CMD check base.dir <- system.file(package = "igvShiny", "extdata", "sarsGenome") fasta.file <- file.path(base.dir, "Sars_cov_2.ASM985889v3.dna.toplevel.fa") fastaIndex.file <- paste0(fasta.file, ".fai") annotation.file <- file.path(base.dir, "Sars_cov_2.ASM985889v3.101.gff3") custom.genome.title <- "SARS-CoV-2" genomeOptions <- parseAndValidateGenomeSpec( genomeName = custom.genome.title, initialLocus = "all", stockGenome = FALSE, dataMode = "localFiles", fasta = fasta.file, fastaIndex = fastaIndex.file, genomeAnnotation = annotation.file )genomeSpec <- parseAndValidateGenomeSpec("hg38", "APOE") # the simplest case # a custom genome, read from the files shipped with the package: every # resource is checked for existence, and "http" would check it over the # network on each R CMD check base.dir <- system.file(package = "igvShiny", "extdata", "sarsGenome") fasta.file <- file.path(base.dir, "Sars_cov_2.ASM985889v3.dna.toplevel.fa") fastaIndex.file <- paste0(fasta.file, ".fai") annotation.file <- file.path(base.dir, "Sars_cov_2.ASM985889v3.101.gff3") custom.genome.title <- "SARS-CoV-2" genomeOptions <- parseAndValidateGenomeSpec( genomeName = custom.genome.title, initialLocus = "all", stockGenome = FALSE, dataMode = "localFiles", fasta = fasta.file, fastaIndex = fastaIndex.file, genomeAnnotation = annotation.file )
delete tracks on the browser
removeTracksByName(session, id, trackNames)removeTracksByName(session, id, trackNames)
session |
an environment or list, provided and managed by shiny |
id |
character string, the html element id of this widget instance |
trackNames |
a vector of character strings |
nothing
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }
remove only those tracks explicitly added by your app. stock tracks (i.e., #' Refseq Genes) remain
removeUserAddedTracks(session, id)removeUserAddedTracks(session, id)
session |
an environment or list, provided and managed by shiny |
id |
character string, the html element id of this widget instance |
nothing
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }
This function is called in the server function of your shiny app
renderIgvShiny(expr, env = parent.frame(), quoted = FALSE)renderIgvShiny(expr, env = parent.frame(), quoted = FALSE)
expr |
an expression that generates an HTML widget |
env |
the environment in which to evaluate expr |
quoted |
logical flag indicating if expr a quoted expression |
an output or render function that enables the use of the widget within Shiny applications
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }
Registers a local file with the active Shiny session so that igv.js
can stream chunks of the file using HTTP 206 Partial Content requests.
This allows random-access binary formats (such as BAM, BAI, CRAM, CRAI,
BigWig, and Tabix-indexed files) of arbitrary size to be viewed in igvShiny
without loading them into R memory or copying them to temporary directories.
serveLocalFile(session, filePath)serveLocalFile(session, filePath)
session |
Shiny session object (must be an active Shiny session) |
filePath |
character string, path to an existing, readable local file |
The returned URL is relative to the Shiny application root and is routed through the same HTTP port as the Shiny session, ensuring compatibility with Posit Connect, shinyapps.io, reverse proxies, and local development.
A character string containing the relative URL to access the file
from the browser (e.g. "session/<token>/dataobj/<filename>?...")
## Not run: # Inside a Shiny server function: server <- function(input, output, session) { bam_url <- serveLocalFile(session, "data/sample.bam") bai_url <- serveLocalFile(session, "data/sample.bam.bai") tracks <- list( list( name = "Sample BAM", type = "alignment", format = "bam", url = bam_url, indexURL = bai_url ) ) output$igv <- renderIgvShiny({ igvShiny(genomeOptions, tracks = tracks) }) } ## End(Not run)## Not run: # Inside a Shiny server function: server <- function(input, output, session) { bam_url <- serveLocalFile(session, "data/sample.bam") bai_url <- serveLocalFile(session, "data/sample.bam.bai") tracks <- list( list( name = "Sample BAM", type = "alignment", format = "bam", url = bam_url, indexURL = bai_url ) ) output$igv <- renderIgvShiny({ igvShiny(genomeOptions, tracks = tracks) }) } ## End(Not run)
Display a short summary of a GWASTrack object
## S4 method for signature 'GWASTrack' show(object)## S4 method for signature 'GWASTrack' show(object)
object |
An object of class GWASTrack |
nothing; called for the side effect of printing a summary
file <- system.file(package = "igvShiny", "extdata", "gwas-5k.tsv.gz") tbl.gwas <- read.table(file, sep = "\t", header = TRUE, quote = "") track <- GWASTrack("gwas 5k", tbl.gwas, chrom.col = 12, pos.col = 13, pval.col = 28) trackfile <- system.file(package = "igvShiny", "extdata", "gwas-5k.tsv.gz") tbl.gwas <- read.table(file, sep = "\t", header = TRUE, quote = "") track <- GWASTrack("gwas 5k", tbl.gwas, chrom.col = 12, pos.col = 13, pval.col = 28) track
zoom in or out to show the nominated region, by chromosome locus or gene symbol
return the current region displayed by your igv instance
showGenomicRegion(session, id, region) getGenomicRegion(session, id)showGenomicRegion(session, id, region) getGenomicRegion(session, id)
session |
an environment or list, provided and managed by shiny |
id |
character string, the html element id of this widget instance |
region |
a character string, either e.g. "chr5:92,221,640-92,236,523" or "MEF2C" |
a character string of format "chrom:start-end"
library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) } library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) } library(igvShiny) demo_app_file <- system.file(package = "igvShiny", "showcase", "igvShinyDemo.R") if (interactive()) { shiny::runApp(demo_app_file) }