[Bioc-sig-seq] Pruning rows from a RangedData object

Patrick Aboyoun paboyoun at fhcrc.org
Fri Jul 17 20:09:17 CEST 2009


Simon,
You found a bug. I have fixed it in BioC 2.5 (devel) and it will be 
available from bioconductor.org in 24 hours, but you can get it from svn 
now.

I think the rdapply function was intended for performing filtering on 
RangedData objects, but I haven't used it too much.


 > suppressMessages(library(IRanges))
 > load("exons0.rda")
 > dupeRows <- unlist(sapply(exons0, function(a)
+   duplicated(ranges(a)[[1]])))
 > exons1 <- exons0[ dupeRows, ]
 > exons1["chr01"]
RangedData: 34312 ranges by 5 columns on 1 sequence
colnames(5): type source phase strand group
names(1): chr01
 > sessionInfo()
R version 2.10.0 Under development (unstable) (2009-06-28 r48863)
i386-apple-darwin9.7.0

locale:
[1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base    

other attached packages:
[1] IRanges_1.3.38




Simon Anders wrote:
> Hi Patrick et al.
>
> do you have any suggestions on the following?
>
> I've got an RangesList object 'exons0' that I created from a GFF file 
> for the human genome. This GFF file contains all transcripts, and 
> lists all those exons that appear in multiple transcripts multiple 
> times. I would like to filter them out.
>
> I was pleased to see that you redefined 'duplicated' for RangedData, 
> which allowed me to find the rows in the IRanges object that are 
> duplicates. But how do I prune them?
>
> My first try was this here:
>
>   dupeRows <- unlist( sapply( exons0, function(a)
>      duplicated(ranges(a)[[1]]) ) )
>   exons1 <- exons0[ dupeRows, ]
>
> This seem to do the job:
>
>   > exons0
>   RangedData: 507249 ranges by 5 columns on 25 sequences
>   colnames(5): type source phase strand group
>   names(25): chr01 chr02 chr03 chr04 chr05 chr06 ... chr21 chr22 chrMT
>   chrX chrY
>
>   > dupeRows <- unlist( sapply( exons0, function(a)
>   +    duplicated(ranges(a)[[1]]) ) )
>   > exons1 <- exons0[ dupeRows, ]
>
>   > exons1
>   RangedData: 253143 ranges by 5 columns on 25 sequences
>   colnames(5): type source phase strand group
>   names(25): chr01 chr02 chr03 chr04 chr05 chr06 ... chr21 chr22 chrMT
>   chrX chrY
>
> However, the resulting object behaves oddly. Compare:
>
>   > exons0["chr01"]
>   RangedData: 61840 ranges by 5 columns on 1 sequence
>   colnames(5): type source phase strand group
>   names(1): chr01
>
>   > exons1["chr01"]
>   Error in values[i] : mismatching names (and NULL elements not allowed)
>
> What's going on here?
>
>
> I've now used this command here instead, which does the job, but looks 
> quite unwieldy and is very slow:
>
>   exons <-
>   do.call( c, unname( lapply( exons0, function(a)
>      a[ !duplicated( ranges(a)[[1]] ), ] ) ) )
>
>
> In case you want to try this yourself, you can find the 'exon0' object 
> here: http://www.ebi.ac.uk/~anders/tmp/exons0.rda
>
>
> Cheers
>   Simon
>
> _______________________________________________
> Bioc-sig-sequencing mailing list
> Bioc-sig-sequencing at r-project.org
> https://stat.ethz.ch/mailman/listinfo/bioc-sig-sequencing



More information about the Bioc-sig-sequencing mailing list