On Fri, Feb 21, 2014 at 2:03 PM, Gabriel Becker <gmbec...@ucdavis.edu>wrote:
> Michael, > > Why not just load the help page for the function if it's not a generic > instead of throwing an error? > > Also, it's possible that it skipping missing arguments and going straight > to any is a bug in help, rather than the designed behavior. Perhaps we > should check? > > Agree on both points. Just a quick proof of concept. > ~G > > > On Fri, Feb 21, 2014 at 2:01 PM, Michael Lawrence < > lawrence.mich...@gene.com> wrote: > >> 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 >>> >> >> > > > -- > Gabriel Becker > Graduate Student > Statistics Department > University of California, Davis > [[alternative HTML version deleted]]
_______________________________________________ Bioc-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel