diff --git a/NAMESPACE b/NAMESPACE index f6171c8..9a65951 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,5 +1,6 @@ # Generated by roxygen2: do not edit by hand +S3method(.DollarNames,GInteractions) S3method(arrange,GInteractions) S3method(as_ginteractions,data.frame) S3method(as_ginteractions,default) @@ -23,6 +24,7 @@ export(strand1) export(strand2) export(width1) export(width2) +exportMethods("$") exportMethods(end1) exportMethods(end2) exportMethods(seqnames1) @@ -60,3 +62,4 @@ importFrom(rlang,quo_name) importFrom(rlang,quos) importFrom(tibble,as_tibble) importFrom(tidyselect,eval_select) +importFrom(utils,.DollarNames) diff --git a/R/ginteractions-getters.R b/R/ginteractions-getters.R index 2c7f93a..e2f18b3 100644 --- a/R/ginteractions-getters.R +++ b/R/ginteractions-getters.R @@ -2,12 +2,16 @@ #' #' @name ginteractions-getters #' @param x a GInteractions object +#' @param pattern,name The pattern or name of a column stored in +#' the GInteractions metadata (mcols). #' @return One of the core GInteractions fields (e.g. seqnames1, start1, ...) +#' or one of the metadata columns when using `$`. +#' Note that auto-completion works with `$`. #' @examples #' gi <- data.frame( #' seqnames1 = 'chr1', start1 = 1, end1 = 10, #' seqnames2 = 'chr1', start2 = 1, end2 = 10 -#' ) |> as_ginteractions() +#' ) |> as_ginteractions() |> mutate(type = 'cis') #' seqnames1(gi) #' seqnames2(gi) #' start1(gi) @@ -18,8 +22,21 @@ #' width2(gi) #' strand1(gi) #' strand2(gi) +#' gi$type NULL +#' @rdname ginteractions-getters +#' @importFrom utils .DollarNames +#' @export +.DollarNames.GInteractions <- function(x, pattern = "") + grep(pattern, names(mcols(x, use.names = FALSE)), value = TRUE) + +#' @rdname ginteractions-getters +#' @export +setMethod("$", "GInteractions", + function(x, name) mcols(x, use.names=FALSE)[[name]] +) + #' @rdname ginteractions-getters #' @export setGeneric("seqnames1", function(x) standardGeneric("seqnames1")) diff --git a/man/ginteractions-getters.Rd b/man/ginteractions-getters.Rd index 7d272b7..adbd734 100644 --- a/man/ginteractions-getters.Rd +++ b/man/ginteractions-getters.Rd @@ -2,6 +2,8 @@ % Please edit documentation in R/ginteractions-getters.R \name{ginteractions-getters} \alias{ginteractions-getters} +\alias{.DollarNames.GInteractions} +\alias{$,GInteractions-method} \alias{seqnames1} \alias{seqnames2} \alias{start1} @@ -24,6 +26,10 @@ \alias{strand2,GInteractions-method} \title{Internal GInteractions getters} \usage{ +\method{.DollarNames}{GInteractions}(x, pattern = "") + +\S4method{$}{GInteractions}(x, name) + seqnames1(x) seqnames2(x) @@ -66,9 +72,14 @@ strand2(x) } \arguments{ \item{x}{a GInteractions object} + +\item{pattern, name}{The pattern or name of a column stored in +the GInteractions metadata (mcols).} } \value{ One of the core GInteractions fields (e.g. seqnames1, start1, ...) +or one of the metadata columns when using \code{$}. +Note that auto-completion works with \code{$}. } \description{ Internal GInteractions getters @@ -77,7 +88,7 @@ Internal GInteractions getters gi <- data.frame( seqnames1 = 'chr1', start1 = 1, end1 = 10, seqnames2 = 'chr1', start2 = 1, end2 = 10 -) |> as_ginteractions() +) |> as_ginteractions() |> mutate(type = 'cis') seqnames1(gi) seqnames2(gi) start1(gi) @@ -88,4 +99,5 @@ width1(gi) width2(gi) strand1(gi) strand2(gi) +gi$type }