Question: How to render summary list for GRangesList by using SummarizedExperiment package?
0
2.5 years ago by
Chicago, IL, USA
Jurat Shahidin70 wrote:

Hi:

Given processed ChIP-Seq peaks in GRangesList, I want to use the functions from SummarizedExperiment package to render succinct summary output. However, I looked into package vignette and tried to learn how to use this on GRangesList. My goal is, based on GRangesList, I want to let R print me out the short summary list (# of regions, metadata column, rows/columns, and others). I learned the features of SummarizedExperiment from package vignette how to do it, but I got an error. Here is my attempt:

lapply(seq_along(grs), function(x) {
SummarizedExperiment(assays = NROW(x),
rowRanges = x,
colData=mcols(x))
})

the error message is:

Error in if (assays_nrow != rowData_nrow) { : argument is of length zero

why getting this error? How to fix that? How to apply summarizedExperiment method on GRangesList to render summary list? Can anyone direct me how to make this happen? Thanks in advance

written 2.5 years ago by Jurat Shahidin70
1

Briefly, there is no simple approach to this.  However, to get a working example:

library(GenomicRanges)

library(SummarizedExperiment)

example(GRangesList) # creates 'grl' in .GlobalEnv

colrep = function(x,n) matrix(x, nr=length(x), nc=n) # utility to create usable 'assay'

msel = lapply(grl, function(x) SummarizedExperiment(colrep(start(x),nrow(mcols(x))), rowRanges=x,

colData=mcols(x)))

> msel

$gr1 class: RangedSummarizedExperiment dim: 1 1 metadata(0): assays(1): '' rownames: NULL rowData names(2): score GC colnames: NULL colData names(2): score GC$gr2

class: RangedSummarizedExperiment

dim: 2 2

assays(1): ''

rownames: NULL

rowData names(2): score GC

colnames: NULL

colData names(2): score GC

\$gr3

class: RangedSummarizedExperiment

dim: 2 2

assays(1): ''

rownames: NULL

rowData names(2): score GC

colnames: NULL

colData names(2): score GC

Your attempt failed because you did not supply a matrix for "assay".

@Vincent: Dear Vincent, thanks for your help. BTW, I am expecting rather simple, intuitive solution to achieve my goal. What if I first flatten out GRangesList as one common GRanges, then use SummarizedExperiment package to render simple statistics? Is that workable?

1
I don't know that SummarizedExperiment is a good target for what you are trying to do. Is there a matrix of values to serve as "assay", with rows corresponding to features and columns corresponding to samples? Organizing such a matrix in coordination with feature-level and sample-level and experiment-level metadata is the primary purpose of SummarizedExperiment. The terminology likely derives from the common use case of summarizing short reads from multiple samples into a matrix, with the primary "summary" step being the quantification of 'features' through operations on sample-specific collections of reads. I am not sure this is what you are trying to do given the brevity of your description of intent. On Sun, Mar 12, 2017 at 9:49 AM, Jurat Shahidin [bioc] < noreply@bioconductor.org> wrote: > Activity on a post you are following on support.bioconductor.org > > User Jurat Shahidin <https: support.bioconductor.org="" u="" 9488=""/> wrote Comment: > How to render summary list for GRangesList by using > SummarizedExperiment package? > <https: support.bioconductor.org="" p="" 93740="" #93743="">: > > @Vincent: Dear Vincent, thanks for your help. I am wondering any easier > workaround to do this. I am expecting rather simple, intuitive solution to > achieve my goal. What if I first flatten out GRangesList as one common > GRanges, then use SummarizedExperiment package to render simple > statistics? Is that workable? > > ------------------------------ > > Post tags: r, summarizedexperiment, grangeslist > > You may reply via email or visit https://support.bioconductor. > org/p/93740/#93743 >
@Vincent: Dear vincent, the problem I faced is printing out GRangesList is not favorable for me, while rendering summary of each GRanges would be good option aims to give clear output for the user, that's why I am trying to find the easy workaround for this problem. Hope you will direct me some useful solution. Thanks in advance :)