[Bioc-devel] GRanges to VRanges coercion
Hi guys,
On 02/20/2015 04:17 PM, Michael Lawrence wrote:
On Thu, Feb 19, 2015 at 12:46 PM, Thomas Sandmann <sandmann.thomas at gene.com> wrote:
Hi Valerie, hi Michael,
I find myself frequently moving back and forth between data.frames,
GRanges and VRanges objects.
The makeGRangesFromDataFrame function from the GenomicRanges makes the
coercion between the former straightforward, but I couldn't find anything
similar for the second step, coercsion from GRanges to VRanges.
There is a coercion method defined in the GenomicRanges package:
getMethod(coerce, c("GRanges", "VRanges"))
Method Definition:
function (from, to = "VRanges", strict = TRUE)
{
obj <- new("VRanges")
as(obj, "GRanges") <- from
obj
}
<environment: namespace:GenomicRanges>
Signatures:
from to
target "GRanges" "VRanges"
defined "GRanges" "VRanges"
but I haven't been able to get it to work (or find where it is
documented). The source code shown above doesn't indicate how the coercion
method would check for the presence of required / optional VRanges columns,
e.g. 'ref', 'alt', 'altDepth', etc.
This is just the default coercion method added by the methods package for a conversion of a class to its parent class. It obviously will not do the right thing, in general.
Just to clarify, the automatic coercion methods for converting a class to its parent (e.g. from VRanges to GRanges) just remove the extra stuff and that almost always does the right thing. So it makes a lot of sense to have them. Going in the opposite direction (i.e. from parent to child) is the hard part and, not too surprisingly, the automatic coercion methods are almost never able to do the right thing. How could they possibly guess what stuff needs to be added to the original object to make it a valid instance of the child class? It has always been a mystery to me why the methods package defines automatic coercion methods to go in that direction... Cheers, H.
Would it be useful to add an explicit makeVRangesFromGRanges function to
the VariantAnnotation package ( and / or the corresponding coercion method)
?
Then it would be easy to go from a data.frame to a VRanges object, e.g.
as in this pseudocode:
makeVRangesFromGRanges(
makeGRangesFromDataFrame( data.frame )
)
You can find a first attempt at implementing the makeVRangesFromGRanges function
here <https://gist.github.com/tomsing1/bf917b1b48afb952e1c5>, which you
are welcome to use / modify if you find it useful.
If this functionality should already be available, I'd be happy to learn
about that, too !
Val, do you think you could review and incorporate Thomas's code? It seems like a good addition to me. Thanks, Michael
Thank you,
Thomas
SessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats4 parallel stats graphics grDevices utils datasets
methods base
other attached packages:
[1] VariantAnnotation_1.12.9 Rsamtools_1.18.2 Biostrings_2.34.1
XVector_0.6.0 GenomicRanges_1.18.4
[6] GenomeInfoDb_1.2.4 IRanges_2.0.1 S4Vectors_0.4.0
BiocGenerics_0.12.1 BiocInstaller_1.16.1
[11] roxygen2_4.1.0 devtools_1.7.0
loaded via a namespace (and not attached):
[1] AnnotationDbi_1.28.1 base64enc_0.1-2 BatchJobs_1.5
BBmisc_1.9 Biobase_2.26.0
[6] BiocParallel_1.0.3 biomaRt_2.22.0 bitops_1.0-6
brew_1.0-6 BSgenome_1.34.1
[11] checkmate_1.5.1 codetools_0.2-10 DBI_0.3.1
digest_0.6.8 fail_1.2
[16] foreach_1.4.2 GenomicAlignments_1.2.1
GenomicFeatures_1.18.3 iterators_1.0.7 Rcpp_0.11.4
[21] RCurl_1.95-4.5 RSQLite_1.0.0 rtracklayer_1.26.2
sendmailR_1.2-1 stringr_0.6.2
[26] tools_3.1.2 XML_3.98-1.1 zlibbioc_1.12.0
[[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list 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: hpages at fredhutch.org Phone: (206) 667-5791 Fax: (206) 667-1319