This function seems to solve the problem:

helpwith <- function(expr) {
  env <- IRanges:::top_prenv(expr)
  expr <- substitute(expr)
  fun <- eval(expr[[1L]], env)
  fun.name <- deparse(expr[[1L]])
  if (!isGeneric(fun.name, env)) {
    stop("'expr' must be a call to a generic")
  }
  args <- formals(fun)
  mc <- match.call(fun, expr, expand.dots=FALSE)
  args[names(mc[-1L])] <- mc[-1L]
  args <- args[fun@signature]
  args$... <- args$...[[1L]]
  target.sig <- vapply(args, function(arg) {
    .arg <- arg # nice trick
    if (missing(.arg)) {
      "missing"
    } else {
      class(eval(arg, env))[1L]
    }
  }, character(1))
  defined.sig <- selectMethod(fun, target.sig)@defined
  help(paste0(fun.name, ",", paste(defined.sig, collapse=","), "-method"))
}

path_to_gff <- "my.gff"
helpwith(import(path_to_gff))

helpwith(rbind(DataFrame(mtcars), DataFrame(mtcars)))

But where should it go?



On Fri, Feb 21, 2014 at 11:17 AM, Hervé Pagès <hpa...@fhcrc.org> wrote:

> Hi Gabriel,
>
>
> On 02/20/2014 05:03 PM, Gabriel Becker wrote:
>
>> Herve,
>>
>> The help is correct (though possibly a bit pedantic),  there is no
>> method for that signature.
>>
>
> But the dispatch mechanism is able to find one because
> 'import(path_to_gff)' *does* work. So the help maybe is correct
> but that doesn't really help the naive user.
>
> H.
>
>
>> ?import("", "")
>>
>> works for me though
>>
>> ~G
>>
>>
>> On Thu, Feb 20, 2014 at 4:51 PM, Hervé Pagès <hpa...@fhcrc.org
>> <mailto:hpa...@fhcrc.org>> wrote:
>>
>>     On 02/20/2014 04:16 PM, Michael Lawrence wrote:
>>
>>         There's also "?coverage(ga)", so the user can see what happens
>>         specifically for their object, without worrying about typing out
>>         the class.
>>
>>
>>     I was never lucky with this:
>>
>>        > library(rtracklayer)
>>        > path_to_gff <- system.file("tests", "v1.gff", package =
>>     "rtracklayer")
>>        > ?import(path_to_gff)
>>        Error in .helpForCall(topicExpr, parent.frame()) :
>>          no documentation for function 'import' and signature 'con =
>>     "character", format = "ANY", text = "ANY"'
>>        In addition: Warning message:
>>        In .helpForCall(topicExpr, parent.frame()) :
>>          no method defined for function 'import' and signature 'con =
>>     "character", format = "ANY", text = "ANY"'
>>
>>     H.
>>
>>
>>         At some point it would be neat to generate S4 documentation at
>>         run-time.
>>         Just popup a browser and see every method that might be
>>         dispatched with
>>         a given object. In theory, the R help server would support this.
>>
>>
>>         On Thu, Feb 20, 2014 at 3:13 PM, Hervé Pagès <hpa...@fhcrc.org
>>         <mailto:hpa...@fhcrc.org>
>>         <mailto:hpa...@fhcrc.org <mailto:hpa...@fhcrc.org>>> wrote:
>>
>>
>>
>>              On 02/20/2014 02:55 PM, Martin Morgan wrote:
>>
>>                  On 02/20/2014 02:32 PM, Hervé Pagès wrote:
>>
>>                      Hi Jesper,
>>
>>                      On 02/20/2014 02:13 PM, Jesper Gådin wrote:
>>
>>                          Very true that it is quite difficult to find the
>>                          documentation when one
>>                          is not aware of its existence :P
>>
>>
>>                      Yeah, this has been a source of frustration for
>>         many people. And
>>                      always a source of embarrassment (for us) when
>>         teaching our
>>                      software
>>                      to beginners.
>>
>>                      I've started to change this. In the upcoming
>>         version of BioC
>>                      (2.14,
>>                      scheduled for mid-April), when you'll do ?coverage,
>>         you'll
>>                      get to
>>                      choose between the 3 man pages that document coverage
>>                      methods (there
>>                      is one in IRanges, one in GenomicRanges, and one in
>>                      GenomicAlignments).
>>
>>                      I want to generalize this to other generics that have
>>                      methods spread
>>                      across several packages (e.g. findOverlaps, the
>>         intra- and
>>                      inter-range
>>                      methods, etc...).
>>
>>                      Having to choose between several man pages every
>>         time you do
>>                      e.g.
>>                      ?findOverlaps is a minor annoyance compared to not
>>         being able to
>>                      find the man page at all. (Note that if you already
>>         know
>>                      where is
>>                      your favorite man page, you'll be able to direct
>>         access it with
>>                      e.g. ?GenomicRanges::findOverlaps). Nobody will
>>         ever need to use
>>                      the insane
>>
>>         ?`findOverlaps,GenomicRanges,____GenomicRanges-method` to
>>
>>
>>
>>
>>                  tab completion helps, so that you don't need to be
>> totally
>>                  insane, just
>>                  insane enough to know to start with
>>
>>                  ?"cover<tab>
>>
>>
>>              and also insane enough to know which method you need to
>>         pick up amongst
>>              the 30+ methods listed by ?"findOverlaps<tab>
>>              Overwhelming!
>>
>>              H.
>>
>>
>>
>>                  Martin
>>
>>                      open that man page again. Ever! (it will still work
>>         though...)
>>
>>                      Cheers,
>>                      H.
>>
>>
>>                          coverage() is fast and beautiful. Thanks!
>>
>>                          /Jesper
>>
>>
>>                          On Wed, Feb 19, 2014 at 9:21 PM, Hervé Pagès
>>                          <hpa...@fhcrc.org <mailto:hpa...@fhcrc.org>
>>         <mailto:hpa...@fhcrc.org <mailto:hpa...@fhcrc.org>>
>>                          <mailto:hpa...@fhcrc.org
>>         <mailto:hpa...@fhcrc.org> <mailto:hpa...@fhcrc.org
>>         <mailto:hpa...@fhcrc.org>>>> wrote:
>>
>>                               Hi Jesper,
>>
>>
>>                               On 02/19/2014 08:44 AM, Michael Lawrence
>>         wrote:
>>
>>                                   On Wed, Feb 19, 2014 at 8:39 AM,
>>         Jesper Gådin
>>                                   <jesper.ga...@gmail.com
>>         <mailto:jesper.ga...@gmail.com>
>>                          <mailto:jesper.ga...@gmail.com
>>         <mailto:jesper.ga...@gmail.com>__>
>>                          <mailto:jesper.ga...@gmail.com
>>         <mailto:jesper.ga...@gmail.com>
>>                          <mailto:jesper.ga...@gmail.com
>>         <mailto:jesper.ga...@gmail.com>__>__>>wrote:
>>
>>
>>
>>                                       Hi Michael,
>>
>>                                       Herves suggestion will probably
>>         work for my
>>                          use case, but if
>>                                       there are any
>>                                       smoother ways it would be
>> preferable.
>>
>>                                       The use case is as follows:
>>
>>                                       1) calculate strand specific
>>         coverage over
>>                          a region from
>>                                       GAlignments object (or file)
>>
>>                                       At the moment I read a file using
>>                          readGAlignmentsFromBam()
>>                                       with tag="XS",
>>                                       then filter it on "flag" and
>>         "mapq". Then I
>>                          subset the
>>                                       resulting GAlignments in a minus
>>         and a plus
>>                          -strand object.
>>                                       Then I calculate coverage by my own
>>                          coverage function which
>>                                       uses the cigar
>>                                       information in the GAlignments
>>         object. This
>>                          function is the
>>                                       one using
>>                                       cigarToRleList() at the moment. As I
>>                          understand the
>>                                       coverage() function
>>                                       from the GenomicAlignments/IRanges
>>         package
>>                          does not take
>>                                       into account
>>                                       cigars, or does it?
>>
>>
>>                                   It does take the coverage into account;
>>                          specifically to exclude
>>                                   the introns
>>                                   from coverage. I think there's also an
>>         option
>>                          to exclude
>>                          deletions.
>>
>>
>>                               Unfortunately the man page is not easy to
>>         access
>>                          (you need to do
>>                               ?`coverage,GAlignments-method`______), but
>>
>>         it says:
>>
>>                                   The methods for GAlignments and
>>         GAlignmentPairs
>>                          objects do:
>>
>>                                     coverage(grglist(x), ...)
>>
>>                               And if you do grglist() on a GAlignments or
>>                          GAlignmentPairs
>>                          objects, the
>>                               ranges you get in the returned GRangesList
>>         object
>>                          are calculated
>>                          based
>>                               on the CIGAR.
>>
>>                               Trust but verify. Here is how you can
>> actually
>>                          verify that
>>                          coverage()
>>                               does take the CIGAR into account:
>>
>>                                  library(RNAseqData.HNRNPC.bam.
>> ______chr14)
>>                                  gal <-
>>
>>         readGAlignments(RNAseqData.______HNRNPC.bam.chr14_BAMFILES[1])
>>
>>
>>                                  cig_op_table <- cigarOpTable(cigar(gal))
>>
>>                               First we pick up an alignment with an N in
>> its
>>                          CIGAR and do
>>                          coverage()
>>                               on it:
>>
>>                                  > gal_with_N <- gal[which(cig_op_table[
>>         , "N"]
>>                          != 0)[1]]
>>
>>                                  > gal_with_N
>>                                  GAlignments with 1 alignment and 0
>>         metadata columns:
>>                                        seqnames strand       cigar
>>  qwidth
>>                          start       end
>>                                  width
>>                                           <Rle>  <Rle> <character>
>> <integer>
>>                          <integer> <integer>
>>                               <integer>
>>                                    [1]    chr14      + 55M2117N17M
>>  72
>>                            19650072  19652260
>>                                   2189
>>                                             ngap
>>                                        <integer>
>>                                    [1]         1
>>                                    ---
>>                                    seqlengths:
>>                                                    chr1
>>         chr10 ...
>>                                 chrY
>>                                               249250621
>>         135534747 ...
>>                                 59373566
>>
>>                                  > coverage(gal_with_N)$chr14
>>                                  integer-Rle of length 107349540 with 5
>> runs
>>                                    Lengths: 19650071       55     2117
>>              17
>>                          87697280
>>                                    Values :        0        1        0
>>               1
>>                                0
>>
>>                               Same thing with an alignment with an I in
>>         its CIGAR:
>>
>>                                  > gal_with_I <- gal[which(cig_op_table[
>>         , "I"]
>>                          != 0)[1]]
>>
>>                                  > gal_with_I
>>                                  GAlignments with 1 alignment and 0
>>         metadata columns:
>>                                        seqnames strand       cigar
>>  qwidth
>>                          start       end
>>                                  width
>>                                           <Rle>  <Rle> <character>
>> <integer>
>>                          <integer> <integer>
>>                               <integer>
>>                                    [1]    chr14      -     64M1I7M
>>  72
>>                            19411677  19411747
>>                                     71
>>                                             ngap
>>                                        <integer>
>>                                    [1]         0
>>                                    ---
>>                                    seqlengths:
>>                                                    chr1
>>         chr10 ...
>>                                 chrY
>>                                               249250621
>>         135534747 ...
>>                                 59373566
>>
>>                                  > coverage(gal_with_I)$chr14
>>                                  integer-Rle of length 107349540 with 3
>> runs
>>                                    Lengths: 19411676 71 87937793
>>         <tel:71%2087937793>
>>                                    Values :        0        1        0
>>
>>                               Same thing with an alignment with a D in
>>         its CIGAR:
>>
>>                                  > gal_with_D <- gal[which(cig_op_table[
>>         , "D"]
>>                          != 0)[1]]
>>
>>                                  > gal_with_D
>>                                  GAlignments with 1 alignment and 0
>>         metadata columns:
>>                                        seqnames strand       cigar
>>  qwidth
>>                          start       end
>>                                  width
>>                                           <Rle>  <Rle> <character>
>> <integer>
>>                          <integer> <integer>
>>                               <integer>
>>                                    [1]    chr14      +    38M1D34M
>>  72
>>                            19659063  19659135
>>                                     73
>>                                             ngap
>>                                        <integer>
>>                                    [1]         0
>>                                    ---
>>                                    seqlengths:
>>                                                    chr1
>>         chr10 ...
>>                                 chrY
>>                                               249250621
>>         135534747 ...
>>                                 59373566
>>
>>                                  > coverage(gal_with_D)$chr14
>>                                  integer-Rle of length 107349540 with 3
>> runs
>>                                    Lengths: 19659062       73 87690405
>>                                    Values :        0        1        0
>>
>>                               Seeing is believing,
>>
>>                               Cheers,
>>                               H.
>>
>>
>>
>>                                       I started to look at the
>>         applyPileups() in
>>                          Rsamtools which I
>>                                       can get to
>>                                       calculate coverage using cigars,
>>         but not
>>                          using the strand or
>>                                       flag
>>                                       information for filtering. That
>>         solution
>>                          would start from a
>>                                       bam-file
>>                                       instead of a GAlignments object,
>>         and sure I
>>                          can do the
>>                                       filtering outside R.
>>                                       But it would be very convenient to
>>         do it
>>                          all from within R.
>>
>>                                       If there are nice solutions
>>         starting from
>>                          both a GAlignments
>>                                       and a
>>                                       bam-file it would be great! =)
>>
>>                                       /Jesper
>>
>>
>>
>>                                       On Tue, Feb 18, 2014 at 10:52 PM,
>>         Michael
>>                          Lawrence <
>>         lawrence.mich...@gene.com <mailto:lawrence.mich...@gene.com>
>>         <mailto:lawrence.michael@gene.__com
>>         <mailto:lawrence.mich...@gene.com>>
>>                                       <mailto:lawrence.michael@gene.
>>         <mailto:lawrence.michael@gene.>____com
>>
>>
>>                          <mailto:lawrence.michael@gene.__com
>>         <mailto:lawrence.mich...@gene.com>>>> wrote:
>>
>>                                           Hi Jesper,
>>
>>                                           Would you be willing to
>>         volunteer your
>>                          use case? As
>>                                           Herve hinted,
>>                                           cigarToRleList and friends are
>>                          low-level helpers. There
>>                                           may be an easier
>>                                           way to achieve what you want,
>>         or an
>>                          opportunity to
>>                                           improve things.
>>
>>                                           Michael
>>
>>
>>                                           On Mon, Feb 17, 2014 at 1:10
>>         AM, Jesper
>>                          Gådin
>>                                           <jesper.ga...@gmail.com
>>         <mailto:jesper.ga...@gmail.com>
>>                          <mailto:jesper.ga...@gmail.com
>>         <mailto:jesper.ga...@gmail.com>__>
>>                                           <mailto:jesper.ga...@gmail.com
>>         <mailto:jesper.ga...@gmail.com>
>>                          <mailto:jesper.ga...@gmail.com
>>         <mailto:jesper.ga...@gmail.com>__>__>>wrote:
>>
>>
>>
>>                                               Hi,
>>
>>                                               Have come across a
>>         cigar-vector
>>                          that is problematic
>>                                               to process.
>>
>>                                               #load package
>>
>>
>> library(GenomicAlignments)
>>
>>
>>                                               #load data (see attached
>> file)
>>
>>
>>                          load("2014-02-17-cigarExample.______rdata")
>>
>>
>>
>>
>>                                               #run function cigarToRleList
>>
>>                                                   cigarRle <-
>>                          cigarToRleList(cigarExample)
>>
>>                                               Error in
>>         .Call2("Rle_constructor",
>>                          values, lengths,
>>                                               check, 0L, PACKAGE =
>>                                               "IRanges") :
>>                                                   integer overflow while
>>         summing
>>                          elements in
>>                          'lengths'
>>
>>                                                   sessionInfo()
>>
>>                                               R Under development
>> (unstable)
>>                          (2013-11-13 r64209)
>>                                               Platform:
>>         x86_64-unknown-linux-gnu
>>                          (64-bit)
>>
>>                                               locale:
>>                                                  [1] LC_CTYPE=en_US.UTF-8
>>                          LC_NUMERIC=C
>>                                                  [3] LC_TIME=en_US.UTF-8
>>                          LC_COLLATE=en_US.UTF-8
>>                                                  [5]
>> LC_MONETARY=en_US.UTF-8
>>                                                 LC_MESSAGES=en_US.UTF-8
>>                                                  [7] LC_PAPER=en_US.UTF-8
>>                          LC_NAME=C
>>                                                  [9] LC_ADDRESS=C
>>                          LC_TELEPHONE=C
>>                                               [11]
>>         LC_MEASUREMENT=en_US.UTF-8
>>                          LC_IDENTIFICATION=C
>>
>>                                               attached base packages:
>>                                               [1] parallel  stats
>>         graphics
>>                            grDevices utils
>>                                                  datasets  methods
>>                                               [8] base
>>
>>                                               other attached packages:
>>                                               [1]
>> GenomicAlignments_0.99.18
>>                          Rsamtools_1.15.26
>>                                               [3] Biostrings_2.31.12
>>                            XVector_0.3.6
>>                                               [5] GenomicRanges_1.15.26
>>                          IRanges_1.21.23
>>                                               [7] BiocGenerics_0.9.3
>>
>>                                               loaded via a namespace
>>         (and not
>>                          attached):
>>                                                  [1] BatchJobs_1.1-1135
>>         BBmisc_1.5
>>                                               BiocParallel_0.5.8
>>                                               bitops_1.0-6
>>
>>                                                  [5] brew_1.0-6
>>                          codetools_0.2-8
>>                          DBI_0.2-7
>>                                                  digest_0.6.4
>>
>>                                                  [9] fail_1.2
>>         foreach_1.4.1
>>                                                 iterators_1.0.6
>>  plyr_1.8
>>
>>                                               [13] RSQLite_0.11.4
>>         sendmailR_1.1-2
>>                                                 stats4_3.1.0
>>         tools_3.1.0
>>
>>                                               [17] zlibbioc_1.9.0
>>
>>
>>
>>         _____________________________________________________
>>
>>         Bioc-devel@r-project.org <mailto:Bioc-devel@r-project.org>
>>         <mailto:Bioc-devel@r-project.__org
>>         <mailto:Bioc-devel@r-project.org>>
>>
>>           <mailto:Bioc-devel@r-project.
>>         <mailto:Bioc-devel@r-project.>____org
>>
>>                          <mailto:Bioc-devel@r-project.__org
>>         <mailto:Bioc-devel@r-project.org>>> mailing list
>>         https://stat.ethz.ch/mailman/______listinfo/bioc-devel
>>         <https://stat.ethz.ch/mailman/____listinfo/bioc-devel>
>>
>>
>>         <https://stat.ethz.ch/mailman/____listinfo/bioc-devel
>>         <https://stat.ethz.ch/mailman/__listinfo/bioc-devel>>
>>
>>
>>
>>         <https://stat.ethz.ch/mailman/____listinfo/bioc-devel
>>         <https://stat.ethz.ch/mailman/__listinfo/bioc-devel>
>>
>>         <https://stat.ethz.ch/mailman/__listinfo/bioc-devel
>>         <https://stat.ethz.ch/mailman/listinfo/bioc-devel>>>
>>
>>
>>
>>
>>
>>                                            [[alternative HTML version
>>         deleted]]
>>
>>
>>
>>
>>
>>           _____________________________________________________
>>
>>         Bioc-devel@r-project.org <mailto:Bioc-devel@r-project.org>
>>                          <mailto:Bioc-devel@r-project.__org
>>         <mailto:Bioc-devel@r-project.org>>
>>                          <mailto:Bioc-devel@r-project.
>>         <mailto:Bioc-devel@r-project.>____org
>>
>>                          <mailto:Bioc-devel@r-project.__org
>>         <mailto:Bioc-devel@r-project.org>>>
>>                                   mailing list
>>         https://stat.ethz.ch/mailman/______listinfo/bioc-devel
>>         <https://stat.ethz.ch/mailman/____listinfo/bioc-devel>
>>
>>         <https://stat.ethz.ch/mailman/____listinfo/bioc-devel
>>         <https://stat.ethz.ch/mailman/__listinfo/bioc-devel>>
>>
>>
>>
>>         <https://stat.ethz.ch/mailman/____listinfo/bioc-devel
>>         <https://stat.ethz.ch/mailman/__listinfo/bioc-devel>
>>
>>         <https://stat.ethz.ch/mailman/__listinfo/bioc-devel
>>         <https://stat.ethz.ch/mailman/listinfo/bioc-devel>>>
>>
>>
>>                               --
>>                               Hervé Pagès
>>
>>                               Program in Computational Biology
>>                               Division of Public Health Sciences
>>                               Fred Hutchinson Cancer Research Center
>>                               1100 Fairview Ave. N, M1-B514
>>                               P.O. Box 19024
>>                               Seattle, WA 98109-1024
>>
>>                               E-mail: hpa...@fhcrc.org
>>         <mailto:hpa...@fhcrc.org> <mailto:hpa...@fhcrc.org
>>         <mailto:hpa...@fhcrc.org>>
>>                          <mailto:hpa...@fhcrc.org
>>         <mailto:hpa...@fhcrc.org> <mailto:hpa...@fhcrc.org
>>         <mailto:hpa...@fhcrc.org>>>
>>
>>                               Phone: (206) 667-5791
>>         <tel:%28206%29%20667-5791> <tel:%28206%29%20667-5791>
>>                          <tel:%28206%29%20667-5791>
>>                               Fax: (206) 667-1319
>>         <tel:%28206%29%20667-1319> <tel:%28206%29%20667-1319>
>>                          <tel:%28206%29%20667-1319>
>>
>>
>>
>>
>>
>>
>>              --
>>              Hervé Pagès
>>
>>              Program in Computational Biology
>>              Division of Public Health Sciences
>>              Fred Hutchinson Cancer Research Center
>>              1100 Fairview Ave. N, M1-B514
>>              P.O. Box 19024
>>              Seattle, WA 98109-1024
>>
>>              E-mail: hpa...@fhcrc.org <mailto:hpa...@fhcrc.org>
>>         <mailto:hpa...@fhcrc.org <mailto:hpa...@fhcrc.org>>
>>              Phone: (206) 667-5791 <tel:%28206%29%20667-5791>
>>         <tel:%28206%29%20667-5791>
>>              Fax: (206) 667-1319 <tel:%28206%29%20667-1319>
>>         <tel:%28206%29%20667-1319>
>>
>>
>>
>>     --
>>     Hervé Pagès
>>
>>     Program in Computational Biology
>>     Division of Public Health Sciences
>>     Fred Hutchinson Cancer Research Center
>>     1100 Fairview Ave. N, M1-B514
>>     P.O. Box 19024
>>     Seattle, WA 98109-1024
>>
>>     E-mail: hpa...@fhcrc.org <mailto:hpa...@fhcrc.org>
>>     Phone: (206) 667-5791 <tel:%28206%29%20667-5791>
>>     Fax: (206) 667-1319 <tel:%28206%29%20667-1319>
>>
>>     _________________________________________________
>>     Bioc-devel@r-project.org <mailto:Bioc-devel@r-project.org> mailing
>> list
>>     https://stat.ethz.ch/mailman/__listinfo/bioc-devel
>>
>>     <https://stat.ethz.ch/mailman/listinfo/bioc-devel>
>>
>>
>>
>>
>> --
>> Gabriel Becker
>> Graduate Student
>> Statistics Department
>> University of California, Davis
>>
>
> --
> Hervé Pagès
>
> Program in Computational Biology
> Division of Public Health Sciences
> Fred Hutchinson Cancer Research Center
> 1100 Fairview Ave. N, M1-B514
> P.O. Box 19024
> Seattle, WA 98109-1024
>
> E-mail: hpa...@fhcrc.org
> Phone:  (206) 667-5791
> Fax:    (206) 667-1319
>

        [[alternative HTML version deleted]]

_______________________________________________
Bioc-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/bioc-devel

Reply via email to