[BioC] Add extra columns to GRanges Metadata

Paul Leo p.leo at uq.edu.au
Mon Feb 20 08:21:59 CET 2012


Juicy!
Thanks


-----Original Message-----
From: Tim Triche, Jr. <tim.triche at gmail.com>
Reply-to: <ttriche at usc.edu>
To: p.leo at uq.edu.au
Cc: bioconductor <bioconductor at r-project.org>
Subject: Re: [BioC] Add extra columns to GRanges Metadata
Date: Sun, 19 Feb 2012 23:06:59 -0800

Also handy, IMHO:

# intersection
setGeneric('%i%', # {{{
  function(x, y) standardGeneric('%i%')
) # }}} 
setMethod('%i%', c('ANY','ANY'), function(x, y) { # {{{
  intersect(x, y)
}) # }}}


# union
setGeneric('%u%', # {{{
  function(x, y) standardGeneric('%u%')
) # }}} 
setMethod('%u%', c('ANY','ANY'), function(x, y) { # {{{
  union(x, y)
}) # }}}


# setdiff
setGeneric('%d%', # {{{
  function(x, y) standardGeneric('%d%')
) # }}} 
setMethod('%d%', c('ANY','ANY'), function(x, y) { # {{{
  setdiff(x, y)
}) # }}}


# subsetByOverlaps
setGeneric('%s%', # {{{
  function(x, y) standardGeneric('%s%')
) # }}} 
setMethod('%s%', c('GRanges','GRanges'), function(x, y) { # {{{
  subsetByOverlaps(x, y)
}) # }}}


Reason being that something like 


( hESC.H3K4ME1 %s% hESC.P300 ) %u% ( hESC.H3K4ME3 %s% hESC.H3K27ME3)


can be very handy at times, and all of these operators are rather
naturally associative IMHO.







On Sun, Feb 19, 2012 at 11:03 PM, Tim Triche, Jr. <tim.triche at gmail.com>
wrote:
        setMethod("$", "GRanges", function(x, name) { # {{{
          elementMetadata(x)[, name]
        }) # }}}
        
        
        setMethod("$<-", "GRanges", function(x, name, value) { # {{{
          elementMetadata(x)[[ name ]] <- value
          return(x)
        }) # }}}
        
        
        problem solved :-)
        
        
        Of course you might want to play with SummarizedExperiment as
        well.
        
        
        
        
        
        On Sun, Feb 19, 2012 at 10:26 PM, Paul Leo <p.leo at uq.edu.au>
        wrote:
                
                I want to add extra column(s) to the elementMetaData of
                a GRanges object
                is there a short hand way of doing that?
                
                Other than extracting the meta data as a data frame ...
                adding what I
                want... and then reassigning:
                
                THAT IS  NOT:
                extra.blank<-matrix(data=NA,nrow=length(a.grs),ncol=length(missing.meta.cols))
                 old.meta<-as.data.frame(values(a.grs))
                 new.meta<-cbind(old.meta,extra.blank)
                 values(a.grs)<-new.meta
                
                
                I'm missing something obvious ...!
                
                Thanks
                Paul
                
                
                Wish LIST:
                Other wise it would be extremely helpful to have a
                native
                
                c(..., .interesction)
                c(..., .union)
                
                where you could combine GRanges with different
                metaData , where
                intersection just kept the metadata in common and union
                just added NA
                for missing metavalues.
                
                .... for use in combining vcf files for say snp, and
                deletion adat where
                the meta data might have different attributes and it's
                not convenient to
                use a list..
                
                _______________________________________________
                Bioconductor mailing list
                Bioconductor at r-project.org
                https://stat.ethz.ch/mailman/listinfo/bioconductor
                Search the archives:
                http://news.gmane.org/gmane.science.biology.informatics.conductor
        
        
        
        
        -- 
        A model is a lie that helps you see the truth.
        
        Howard Skipper
        




-- 
A model is a lie that helps you see the truth.

Howard Skipper



More information about the Bioconductor mailing list