Subsetting genomic ranges and plotting cirlces in ggbio used to work --- now: warnings about non-missing arguments
1
0
Entering edit mode
10.0 years ago
reviewer3 ▴ 20

I'm plotting genomic ranges in circle layout using ggbio to connect items from different categories/chromosomes via the metadata column "cross", itself an GRanges column.

cp <- ggplot() + layout_circle(gr.cats, geom = "ideo", fill = "white", radius = 30, trackWidth = 4)
cp.link<- cp + layout_circle(gr.all[seqnames(gr.all) == "1_CH"], geom = "link", linked.to="cross", col=red, radius = 28, trackWidth = 1)

Unfortunately, I get a small number of identical warnings.

In FUN(X[[25L]], ...) : no non-missing arguments to max; returning -Inf

When I execute the plot cp.link, i get a plot identical to cp alone and the following message:

Warning message:
Removed 10527 rows containing missing values (geom_path).

This has worked previously and now I've spent a day already looking for the bug. Any guesses are welcome, thanks!

UPDATE: my dummy example reproduces this error as soon as I try to process each chr separately - why? Thank you:

gr.cats<-GRanges(seqnames=c("chr1", "chr2", "chr3"), IRanges(start=rep(1,3), width=rep(100,3)), strand=rep("*", 3))
seqlengths(gr.cats)<-rep(100,3)
gr.cats

GRanges with 3 ranges and 0 metadata columns:
      seqnames    ranges strand
         <Rle> <IRanges>  <Rle>
  [1]     chr1  [1, 100]      *
  [2]     chr2  [1, 100]      *
  [3]     chr3  [1, 100]      *
  ---
  seqlengths:
   chr1 chr2 chr3
    100  100  100

gr.all<-GRanges(seqnames=c(rep("chr1",100), rep("chr2",100), rep("chr3",100)), IRanges(start=rep(seq(1,100),3), width=rep(1,300)), strand=rep("*", 300))

seqlengths(gr.all)<-rep(100,3)

gr.cross<-GRanges(seqnames=c(rep("chr2",100), rep("chr3",100), rep("chr1",100)), IRanges(start=rep(seq(1,100),3), width=rep(1,300)), strand=rep("*", 300))

seqlengths(gr.cross)<-rep(100,3)

values(gr.all)$cross<-gr.cross

gr.all

GRanges with 300 ranges and 1 metadata column:
        seqnames     ranges strand   |             cross
           <Rle>  <IRanges>  <Rle>   |         <GRanges>
    [1]     chr1     [1, 1]      *   |     chr2:*:[1, 1]
    [2]     chr1     [2, 2]      *   |     chr2:*:[2, 2]
    [3]     chr1     [3, 3]      *   |     chr2:*:[3, 3]
    [4]     chr1     [4, 4]      *   |     chr2:*:[4, 4]
    [5]     chr1     [5, 5]      *   |     chr2:*:[5, 5]
    ...      ...        ...    ... ...               ...
  [296]     chr3 [ 96,  96]      *   | chr1:*:[ 96,  96]
  [297]     chr3 [ 97,  97]      *   | chr1:*:[ 97,  97]
  [298]     chr3 [ 98,  98]      *   | chr1:*:[ 98,  98]
  [299]     chr3 [ 99,  99]      *   | chr1:*:[ 99,  99]
  [300]     chr3 [100, 100]      *   | chr1:*:[100, 100]
  ---
  seqlengths:
   chr1 chr2 chr3
    100  100  100

Now, when I run the layout_circle command on all of gr.all it works, but when I subset for a specific chr, it fails:

cp.link <- cp + layout_circle(gr.all, geom = "link",  linked.to = "cross", col=rgb(1,0,0,0.05), radius = 28, trackWidth = 1)

layout_circle() is now a lower level component to transform a
           linear object, and please check circle() for easier API

cp.link.chr1 <- cp + layout_circle(gr.all[seqnames(gr.all) == "chr1"], geom = "link",  linked.to = "cross", col=rgb(1,0,0,0.05), radius = 28, trackWidth = 1)

layout_circle() is now a lower level component to transform a
           linear object, and please check circle() for easier API
Warning messages:
1: In FUN(X[[3L]], ...) : no non-missing arguments to max; returning -Inf
2: In FUN(X[[3L]], ...) : no non-missing arguments to max; returning -Inf

cp.link.chr1

Warning message:
Removed 2900 rows containing missing values (geom_path).
genomic-ranges ggplot2 ggbio • 5.1k views
ADD COMMENT
0
Entering edit mode
9.9 years ago
mviterson • 0

updating the seqlevels of GRanges to.gr should work. Something like this:

gr.chr1 <- gr.all[seqnames(gr.all) == "chr1"]

##update seqlevels to.gr
to.gr <- mcols(gr.chr1)$to.gr
to.gr <- keepSeqlevelsto.gr, as.characteruniquerunValueseqnamesto.gr)))))
mcols(gr.chr1)$to.gr <- to.gr

cp.link.chr1 <- cp + layout_circle(gr.chr1, geom = "link", linked.to = "cross", col=rgb(1,0,0,0.05), radius = 28, trackWidth = 1)
ADD COMMENT

Login before adding your answer.

Traffic: 2009 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6