Turns a data frame of features into an in-browser track (a FromConfigAdapter), no files or web server required. This is the natural way to view results you computed in R — peaks, windows, hits — directly on the genome.

track_data_frame(data, name, assembly_name = NULL, ...)

Arguments

data

A data frame with columns chrom (or chr, or refName), start and end (0-based, half-open). An optional score column makes it a quantitative track; every other column rides along as a feature attribute, shown in the feature details and readable by a display's encoding.

name

Track display name.

assembly_name

Assembly the track belongs to. Usually left NULL — JBrowseR() backfills it from the loaded assembly.

...

Extra config merged into the track. A displays list plots the columns the way a grammar of graphics does: a LinearMarkDisplay maps a column to y and another to a colour scale.

Value

a track config list

Examples

df <- data.frame(
  chrom = c("1", "2"),
  start = c(123, 456),
  end = c(789, 101112),
  name = c("feature1", "feature2")
)
track_data_frame(df, "my_features")
#> $type
#> [1] "FeatureTrack"
#> 
#> $trackId
#> [1] "my_features"
#> 
#> $name
#> [1] "my_features"
#> 
#> $adapter
#> $adapter$type
#> [1] "FromConfigAdapter"
#> 
#> $adapter$features
#> $adapter$features[[1]]
#> $adapter$features[[1]]$refName
#> [1] "1"
#> 
#> $adapter$features[[1]]$start
#> [1] 123
#> 
#> $adapter$features[[1]]$end
#> [1] 789
#> 
#> $adapter$features[[1]]$name
#> [1] "feature1"
#> 
#> $adapter$features[[1]]$uniqueId
#> [1] "my_features-1"
#> 
#> 
#> $adapter$features[[2]]
#> $adapter$features[[2]]$refName
#> [1] "2"
#> 
#> $adapter$features[[2]]$start
#> [1] 456
#> 
#> $adapter$features[[2]]$end
#> [1] 101112
#> 
#> $adapter$features[[2]]$name
#> [1] "feature2"
#> 
#> $adapter$features[[2]]$uniqueId
#> [1] "my_features-2"
#> 
#> 
#> 
#> 

# a point per row at its log2 fold-change, coloured by call
de <- data.frame(
  chrom = "7", start = c(1e6, 2e6), end = c(1e6, 2e6) + 6000,
  log2fc = c(2.1, -1.7), sig = c("up", "down")
)
track_data_frame(de, "de", displays = list(list(
  type = "LinearMarkDisplay",
  marks = list(list(
    shape = "point",
    encoding = list(y = "log2fc", color = list(field = "sig", scale = "categorical"))
  ))
)))
#> $type
#> [1] "FeatureTrack"
#> 
#> $trackId
#> [1] "de"
#> 
#> $name
#> [1] "de"
#> 
#> $adapter
#> $adapter$type
#> [1] "FromConfigAdapter"
#> 
#> $adapter$features
#> $adapter$features[[1]]
#> $adapter$features[[1]]$refName
#> [1] "7"
#> 
#> $adapter$features[[1]]$start
#> [1] 1e+06
#> 
#> $adapter$features[[1]]$end
#> [1] 1006000
#> 
#> $adapter$features[[1]]$log2fc
#> [1] 2.1
#> 
#> $adapter$features[[1]]$sig
#> [1] "up"
#> 
#> $adapter$features[[1]]$uniqueId
#> [1] "de-1"
#> 
#> 
#> $adapter$features[[2]]
#> $adapter$features[[2]]$refName
#> [1] "7"
#> 
#> $adapter$features[[2]]$start
#> [1] 2e+06
#> 
#> $adapter$features[[2]]$end
#> [1] 2006000
#> 
#> $adapter$features[[2]]$log2fc
#> [1] -1.7
#> 
#> $adapter$features[[2]]$sig
#> [1] "down"
#> 
#> $adapter$features[[2]]$uniqueId
#> [1] "de-2"
#> 
#> 
#> 
#> 
#> $displays
#> $displays[[1]]
#> $displays[[1]]$type
#> [1] "LinearMarkDisplay"
#> 
#> $displays[[1]]$marks
#> $displays[[1]]$marks[[1]]
#> $displays[[1]]$marks[[1]]$shape
#> [1] "point"
#> 
#> $displays[[1]]$marks[[1]]$encoding
#> $displays[[1]]$marks[[1]]$encoding$y
#> [1] "log2fc"
#> 
#> $displays[[1]]$marks[[1]]$encoding$color
#> $displays[[1]]$marks[[1]]$encoding$color$field
#> [1] "sig"
#> 
#> $displays[[1]]$marks[[1]]$encoding$color$scale
#> [1] "categorical"
#> 
#> 
#> 
#> 
#> 
#> 
#>