Thanks to visit codestin.com
Credit goes to code.bioconductor.org

R/as_tibble.R
2ba8a4f9
 #' as_tibble
 #' 
250e8f0e
 #' Coerce an `CoverageExperiment` or `AggregatedCoverage` object into a `tibble`
2ba8a4f9
 #' 
 #' @name as_tibble-methods
 #' @rdname as_tibble-methods
 #' @param x an `CoverageExperiment` object
 #' @param ... ignored
 #' @return `tibble`
 #' 
031b5afd
 #' @importFrom tidyr any_of
 #' @importFrom tidyr all_of
 #' @importFrom tidyr pivot_longer
2ba8a4f9
 #' @importFrom dplyr as_tibble
 #' @examples 
 #' data(ac)
 #' as_tibble(ac)
 NULL
 
 #' @rdname as_tibble-methods
 #' @export
 
 as_tibble.AggregatedCoverage <- function(x, ...) {
     tracks <- colData(x)$track
     features <- rowData(x)$features
     assays <- names(assays(x))
     w <- width(rowRanges(x)[[1]])[[1]]
     bin <- w / length(assay(x, "mean")[1, 1][[1]])
     lapply(tracks, function(t) {
         lapply(features, function(f) {
             lapply(assays(x)[assays], `[[`, f, t) |> 
                 stats::setNames(assays) |> 
                 dplyr::bind_cols() |> 
                 dplyr::mutate(
                     coord = seq(-w/2, w/2-1, by = bin), 
e7b03932
                     track = factor(t, levels = tracks), 
                     features = factor(f, levels = features)
2ba8a4f9
                 ) |> 
                 dplyr::relocate(coord) |> 
                 dplyr::relocate(features) |> 
                 dplyr::relocate(track)
         }) |> dplyr::bind_rows()
     }) |> 
         dplyr::bind_rows() |> 
250e8f0e
         dplyr::left_join(colData(x) |> as.data.frame(), by = 'track') |> 
         dplyr::mutate(.feature = features, .sample = track) |> 
         dplyr::relocate(.feature) |> 
         dplyr::relocate(.sample)
2ba8a4f9
 }