Question: Explore objects in R (ChiPseeker)
0
gravatar for lucatucciarone
9 months ago by
lucatucciarone50 wrote:

Hello there!

I've an object that describes the genomic distribution of my ChIPPeaks: Annotated peaks generated by ChIPseeker 16887/16887 peaks were annotated Genomic Annotation Summary:

             Feature  Frequency
9           Promoter 80.2392373
4             5' UTR  0.8704921
3             3' UTR  0.7875881
1           1st Exon  0.9237875
7         Other Exon  1.4093682
2         1st Intron  5.6019423
8       Other Intron  2.5996329
6 Downstream (<=300)  0.4026766
5  Distal Intergenic  7.1652751

This is a list of the PeakAnno object, the structure of each of them is:

    str(peakAnnoList)[[1]]

By looking at the str of the object:

    .. ..@ detailGenomicAnnotation:'data.frame':  16887 obs. of  9 variables:
  .. .. ..$ genic            : logi [1:16887] FALSE TRUE TRUE FALSE TRUE TRUE ...
  .. .. ..$ Intergenic       : logi [1:16887] TRUE FALSE FALSE TRUE FALSE FALSE ...
  .. .. ..$ Promoter         : logi [1:16887] FALSE TRUE TRUE TRUE TRUE TRUE ...
  .. .. ..$ fiveUTR          : logi [1:16887] FALSE TRUE TRUE FALSE TRUE TRUE ...
  .. .. ..$ threeUTR         : logi [1:16887] FALSE FALSE FALSE FALSE FALSE FALSE ...
  .. .. ..$ Exon             : logi [1:16887] FALSE TRUE TRUE FALSE TRUE TRUE ...
  .. .. ..$ Intron           : logi [1:16887] FALSE TRUE TRUE FALSE TRUE TRUE ...
  .. .. ..$ downstream       : logi [1:16887] FALSE FALSE FALSE FALSE FALSE FALSE ...
  .. .. ..$ distal_intergenic: logi [1:16887] TRUE FALSE FALSE FALSE FALSE FALSE ...

This is a list of true and false and the number of the TRUE shall be the number of peaks I am searching for. How can I count all of of those TRUE in every @ detailGenomicAnnotation of peakAnnolist? Thank u!

chipseeker bioconductor R • 341 views
ADD COMMENTlink modified 9 months ago • written 9 months ago by lucatucciarone50

Please format code/output with the code button (1010101) in the editor, it makes it a lot easier to read and understand. In addition, it is difficult to answer this question without additional information as to what type of object it is, code used to generate it, etc.

as.data.frame() can be used to coerce many objects to a dataframe, so you could try that, but it really depends on the type of object.

ADD REPLYlink written 9 months ago by jared.andrews072.9k

Oh sure, I am sorry. I't is a chip seeker object (PeakAnno) Used to perform a genome distribution graph.

ChIPseeker 16887/16887 peaks were annotated Genomic Annotation Summary: Feature Frequency 9 Promoter 80.2392373 4 5' UTR 0.8704921 3 3' UTR 0.7875881 1 1st Exon 0.9237875 7 Other Exon 1.4093682 2 1st Intron 5.6019423 8 Other Intron 2.5996329 6 Downstream (<=300) 0.4026766 5 Distal Intergenic 7.1652751

I just wanted to understand what is in an particular "r" object. when I look at it in R studio I can see it is very similar to the R object of deseq2 (dds) for instance.

ADD REPLYlink written 9 months ago by lucatucciarone50

I think what I search for is in the str command:

str(peakAnnoList[[1]])
Formal class 'csAnno' [package "ChIPseeker"] with 7 slots
  ..@ anno                   :Formal class 'GRanges' [package "GenomicRanges"] with 7 slots
  .. .. ..@ seqnames       :Formal class 'Rle' [package "S4Vectors"] with 4 slots
  .. .. .. .. ..@ values         : Factor w/ 20 levels "chr1","chr10",..: 1 2 3 4 5 6 7 8 9 10 ...
  .. .. .. .. ..@ lengths        : int [1:20] 1448 1355 2267 910 906 851 1163 751 1293 709 ...
  .. .. .. .. ..@ elementMetadata: NULL
  .. .. .. .. ..@ metadata       : list()
  .. .. ..@ ranges         :Formal class 'IRanges' [package "IRanges"] with 6 slots
  .. .. .. .. ..@ start          : int [1:25534] 4491695 4496226 4496653 4543925 4571460 4785191 4807453 4857347 5018514 5082862 ...
  .. .. .. .. ..@ width          : int [1:25534] 1884 295 1007 224 387 801 859 1360 2247 853 ...
  .. .. .. .. ..@ NAMES          : NULL
  .. .. .. .. ..@ elementType    : chr "ANY"
  .. .. .. .. ..@ elementMetadata: NULL
  .. .. .. .. ..@ metadata       : list()
  .. .. ..@ strand         :Formal class 'Rle' [package "S4Vectors"] with 4 slots
  .. .. .. .. ..@ values         : Factor w/ 3 levels "+","-","*": 3
  .. .. .. .. ..@ lengths        : int 25534
  .. .. .. .. ..@ elementMetadata: NULL
  .. .. .. .. ..@ metadata       : list()
  .. .. ..@ seqinfo        :Formal class 'Seqinfo' [package "GenomeInfoDb"] with 4 slots
  .. .. .. .. ..@ seqnames   : chr [1:20] "chr1" "chr10" "chr11" "chr12" ...
  .. .. .. .. ..@ seqlengths : int [1:20] 195471971 130694993 122082543 120129022 120421639 124902244 104043685 98207768 94987271 90702639 ...
  .. .. .. .. ..@ is_circular: logi [1:20] NA NA NA NA NA NA ...
  .. .. .. .. ..@ genome     : chr [1:20] "mm10" "mm10" "mm10" "mm10" ...
  .. .. ..@ elementMetadata:Formal class 'DataFrame' [package "S4Vectors"] with 6 slots
  .. .. .. .. ..@ rownames       : NULL
  .. .. .. .. ..@ nrows          : int 25534
  .. .. .. .. ..@ listData       :List of 16

And goes on

ADD REPLYlink written 9 months ago by lucatucciarone50

so that means you could, for example, use the command above for that list object:

x <- as.data.frame(peakAnnoList[[1]])
ADD REPLYlink written 9 months ago by Friederike4.9k
0
gravatar for jared.andrews07
9 months ago by
jared.andrews072.9k
St. Louis, MO
jared.andrews072.9k wrote:

Pretty sure x <- as.data.frame(PeakAnno) will work for that object, if I remember correctly. Been a while since I used ChIPseeker. That should let you peruse what it's doing more closely, but in general, each row is a peak with the gene annotation info slapped on, which is what the graph is being generated from.

ADD COMMENTlink written 9 months ago by jared.andrews072.9k

Thanks Jared for answering! I've tried what u suggest, if I do it:

 x <- as.data.frame(peakAnnoList)

Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, : arguments imply differing number of rows: 25534, 19869, 16887, 21478, 26122

I think it doesn't work because this object has 5 samples in it!

ADD REPLYlink written 9 months ago by lucatucciarone50

This probably means that it is a list of these objects, so lapply(peakAnnoList, as.data.frame, head) might be worth a try. If you want more concrete help, you should update your question to include the result of str(peakAnnoList) and what exactly it is you're trying to do/to see.

ADD REPLYlink written 9 months ago by Friederike4.9k

Yes, this is exactly right. I did not realize it was a list of them.

ADD REPLYlink written 9 months ago by jared.andrews072.9k
0
gravatar for lucatucciarone
9 months ago by
lucatucciarone50 wrote:

I tried this option and there u go:

lapply(peakAnnoList, as.data.frame, head)

Error in as.data.frame.csAnno(X[[i]], ...) : 'row.names' must be NULL or a character vector

I am so sorry, I didn't want to bother so much 😅, was thinking was easy.

I updated the question.

ADD COMMENTlink written 9 months ago by lucatucciarone50
0
gravatar for lucatucciarone
9 months ago by
lucatucciarone50 wrote:

Updated main post with new info

ADD COMMENTlink modified 9 months ago • written 9 months ago by lucatucciarone50

Please post such comments as comments or update the question with them (which it seems you've done here). You can answer your own question, of course, which is still useful for the community, but this isn't an answer and will likely be moved to our thread above whenever a mod stumbles upon it. This also makes the question a lot easier to follow and will yield better answers.

From the limited info here, I expect one of these answers from StackOverflow will answer your question. Or as you said, you can just use the frequencies and total number of rows to calculate how many are in each group.

ADD REPLYlink modified 9 months ago • written 9 months ago by jared.andrews072.9k

I'll move it in the main post. I'm very sorry. I'm still getting used to the forum rules : (

ADD REPLYlink written 9 months ago by lucatucciarone50
0
gravatar for lucatucciarone
9 months ago by
lucatucciarone50 wrote:

Updated the main post with new info

ADD COMMENTlink modified 9 months ago • written 9 months ago by lucatucciarone50
0
gravatar for Friederike
9 months ago by
Friederike4.9k
United States
Friederike4.9k wrote:

Does table(peakAnnoList[[1]]@detailGenomicAnnotation$genic) get you what you want? I think part of the issue here is that we don't really have the object you're dealing with, so it's a little tricky to give you the precise code. You'll have to do some fiddling apparently or go back to the documentation of the package and see if they give any pointers in their vignette.

ADD COMMENTlink written 9 months ago by Friederike4.9k
table(peakAnnoList[[1]]@detailGenomicAnnotation$genic)
FALSE  TRUE 
4762 20772

This is exactly what I was searching for! I can apply it for every detailGenomicAnnotation and every object in peakAnnoList and the job is done!

: ) THANK YOU GUYS!

ADD REPLYlink written 8 months ago by lucatucciarone50
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 505 users visited in the last hour