Dear Bioc team, my package has started to fail during the build check ( http://bioconductor.org/checkResults/devel/bioc-LATEST/ramr/). I tried to figure out why and it appears that I somehow make GRanges object non-subsettable. Could anyone from "GenomicRanges" developers look at my issue and advise me on a solution, please? To reproduce: library(ramr) data(ramr) amrs <- getAMR(ramr.data, ramr.samples, ramr.method="beta", min.cpgs=5, merge.window=1000, qval.cutoff=1e-3, cores=2) # this works: class(amrs) amrs # error: amrs[2] # suddenly works again: GRangesList(amrs)[[1]][2] Best regards, Oleksii
[Bioc-devel] non-subsettable GRanges object
4 messages · Hervé Pagès, Oleksii Nikolaienko
Hi Oleksii, It looks like we have a long-standing bug in the rbind() method for DataFrame objects that is somehow surfacing now. Here is a simple example: library(IRanges) DF1 <- DataFrame(A=I(list(11:12, 21:23))) DF2 <- DataFrame(A=IntegerList(31:34, 41:45, 51:56)) DF3 <- rbind(DF1, DF2) DF3 # DataFrame with 3 rows and 1 column # A # <list> # 1 11,12 # 2 21,22,23 # 3 31,32,33,...,41,42,43,...,51,52,53,... This result is wrong. We observe this in release and devel. If you look at the mcols of the GRanges object returned by getAMR() in your code below, you'll see that it's actually an invalid DataFrame object (its first column has 23 elements but 22 are expected). This is a consequence of the above bug. Even though the bug has existed for a long time, somehow it was not affecting your code. However this changed recently because of some minor refactoring of the rbind() method for DataFrame objects that I made a few days ago in S4Vectors. I'm working on a fix and will let you know when it's ready. Cheers, H.
On 4/5/21 1:12 PM, Oleksii Nikolaienko wrote:
Dear Bioc team, my package has started to fail during the build check ( http://bioconductor.org/checkResults/devel/bioc-LATEST/ramr/). I tried to figure out why and it appears that I somehow make GRanges object non-subsettable. Could anyone from "GenomicRanges" developers look at my issue and advise me on a solution, please? To reproduce: library(ramr) data(ramr) amrs <- getAMR(ramr.data, ramr.samples, ramr.method="beta", min.cpgs=5, merge.window=1000, qval.cutoff=1e-3, cores=2) # this works: class(amrs) amrs # error: amrs[2] # suddenly works again: GRangesList(amrs)[[1]][2] Best regards, Oleksii [[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
Herv? Pag?s Bioconductor Core Team hpages.on.github at gmail.com
This is fixed in S4Vectors 0.29.13: https://github.com/Bioconductor/S4Vectors/commit/6d79932910af9618465d5f932df5864d0a270e11 This new version of S4Vectors should propagate to the build machines and become available via BiocManager::install() in the next 48h or so. Cheers, H.
On 4/5/21 3:40 PM, Herv? Pag?s wrote:
Hi Oleksii, It looks like we have a long-standing bug in the rbind() method for DataFrame objects that is somehow surfacing now. Here is a simple example: ? library(IRanges) ? DF1 <- DataFrame(A=I(list(11:12, 21:23))) ? DF2 <- DataFrame(A=IntegerList(31:34, 41:45, 51:56)) ? DF3 <- rbind(DF1, DF2) ? DF3 ? # DataFrame with 3 rows and 1 column ? #??????????????????????????????????????? A ? #?????????????????????????????????? <list> ? # 1????????????????????????????????? 11,12 ? # 2?????????????????????????????? 21,22,23 ? # 3 31,32,33,...,41,42,43,...,51,52,53,... This result is wrong. We observe this in release and devel. If you look at the mcols of the GRanges object returned by getAMR() in your code below, you'll see that it's actually an invalid DataFrame object (its first column has 23 elements but 22 are expected). This is a consequence of the above bug. Even though the bug has existed for a long time, somehow it was not affecting your code. However this changed recently because of some minor refactoring of the rbind() method for DataFrame objects that I made a few days ago in S4Vectors. I'm working on a fix and will let you know when it's ready. Cheers, H. On 4/5/21 1:12 PM, Oleksii Nikolaienko wrote:
Dear Bioc team, my package has started to fail during the build check ( http://bioconductor.org/checkResults/devel/bioc-LATEST/ramr/). I tried to figure out why and it appears that I somehow make GRanges object non-subsettable. Could anyone from "GenomicRanges" developers look at my issue and advise me on a solution, please? To reproduce: library(ramr) data(ramr) amrs <- getAMR(ramr.data, ramr.samples, ramr.method="beta", min.cpgs=5, merge.window=1000, qval.cutoff=1e-3, cores=2) # this works: class(amrs) amrs # error: amrs[2] # suddenly works again: GRangesList(amrs)[[1]][2] Best regards, Oleksii ????[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
Herv? Pag?s Bioconductor Core Team hpages.on.github at gmail.com
Thanks very much, Herv?, I indeed never noticed the wrong number of elements in my objects. Best regards, Oleksii
On Tue, 6 Apr 2021 at 02:10, Herv? Pag?s <hpages.on.github at gmail.com> wrote:
This is fixed in S4Vectors 0.29.13: https://github.com/Bioconductor/S4Vectors/commit/6d79932910af9618465d5f932df5864d0a270e11 This new version of S4Vectors should propagate to the build machines and become available via BiocManager::install() in the next 48h or so. Cheers, H. On 4/5/21 3:40 PM, Herv? Pag?s wrote:
Hi Oleksii, It looks like we have a long-standing bug in the rbind() method for DataFrame objects that is somehow surfacing now. Here is a simple
example:
library(IRanges) DF1 <- DataFrame(A=I(list(11:12, 21:23))) DF2 <- DataFrame(A=IntegerList(31:34, 41:45, 51:56)) DF3 <- rbind(DF1, DF2) DF3 # DataFrame with 3 rows and 1 column # A # <list> # 1 11,12 # 2 21,22,23 # 3 31,32,33,...,41,42,43,...,51,52,53,... This result is wrong. We observe this in release and devel. If you look at the mcols of the GRanges object returned by getAMR() in your code below, you'll see that it's actually an invalid DataFrame object (its first column has 23 elements but 22 are expected). This is a consequence of the above bug. Even though the bug has existed for a long time, somehow it was not affecting your code. However this changed recently because of some minor refactoring of the rbind() method for DataFrame objects that I made a few days ago in S4Vectors. I'm working on a fix and will let you know when it's ready. Cheers, H. On 4/5/21 1:12 PM, Oleksii Nikolaienko wrote:
Dear Bioc team, my package has started to fail during the build check ( http://bioconductor.org/checkResults/devel/bioc-LATEST/ramr/). I tried
to
figure out why and it appears that I somehow make GRanges object
non-subsettable. Could anyone from "GenomicRanges" developers look at my
issue and advise me on a solution, please?
To reproduce:
library(ramr)
data(ramr)
amrs <- getAMR(ramr.data, ramr.samples, ramr.method="beta", min.cpgs=5,
merge.window=1000, qval.cutoff=1e-3, cores=2)
# this works:
class(amrs)
amrs
# error:
amrs[2]
# suddenly works again:
GRangesList(amrs)[[1]][2]
Best regards,
Oleksii
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
-- Herv? Pag?s Bioconductor Core Team hpages.on.github at gmail.com