Nothing
##' Class "csAnno"
##' This class represents the output of ChIPseeker Annotation
##'
##'
##' @name csAnno-class
##' @aliases csAnno-class
##' show,csAnno-method vennpie,csAnno-method
##' plotDistToTSS,csAnno-method plotAnnoBar,csAnno-method
##' plotAnnoPie,csAnno-method upsetplot,csAnno-method
##' subset,csAnno-method
##'
##' @docType class
##' @slot anno annotation
##' @slot tssRegion TSS region
##' @slot level transcript or gene
##' @slot hasGenomicAnnotation logical
##' @slot detailGenomicAnnotation Genomic Annotation in detail
##' @slot annoStat annotation statistics
##' @slot peakNum number of peaks
##' @exportClass csAnno
##' @author Guangchuang Yu \url{https://guangchuangyu.github.io}
##' @seealso \code{\link{annotatePeak}}
##' @keywords classes
setClass("csAnno",
representation=representation(
anno = "GRanges",
tssRegion = "numeric",
level = "character",
hasGenomicAnnotation = "logical",
detailGenomicAnnotation="data.frame",
annoStat="data.frame",
peakNum="numeric"
))
##' convert csAnno object to GRanges
##'
##'
##' @title as.GRanges
##' @param x csAnno object
##' @return GRanges object
##' @author Guangchuang Yu \url{https://guangchuangyu.github.io}
##' @export
as.GRanges <- function(x) {
if (!is(x, "csAnno"))
stop("not supported...")
return(x@anno)
}
getAnnoStat <- function(x) {
if (!is(x, "csAnno"))
stop("not supported...")
return(x@annoStat)
}
##' vennpie method generics
##'
##' @name vennpie
##' @docType methods
##' @rdname vennpie-methods
##'
##' @title vennpie method
##' @param x A \code{csAnno} instance
##' @param r initial radius
##' @param ... additional parameter
##' @return plot
##' @usage vennpie(x, r=0.2, ...)
##' @exportMethod vennpie
##' @author Guangchuang Yu \url{https://guangchuangyu.github.io}
setMethod("vennpie", signature(x="csAnno"),
function(x, r=0.2, ...) {
vennpie.csAnno(x, r, ...)
}
)
##' upsetplot method generics
##'
##' @name upsetplot
##' @docType methods
##' @rdname upsetplot-methods
##'
##' @title upsetplot method
##' @param x A \code{csAnno} instance
##' @param ... additional parameter
##' @return plot
##' @usage upsetplot(x, ...)
##' @importFrom enrichplot upsetplot
##' @exportMethod upsetplot
##' @author Guangchuang Yu \url{https://guangchuangyu.github.io}
setMethod("upsetplot", signature(x="csAnno"),
function(x, ...) {
upsetplot.csAnno(x, ...)
}
)
##' convert csAnno object to data.frame
##'
##'
##' @title as.data.frame.csAnno
##' @param x csAnno object
##' @param row.names row names
##' @param optional should be omitted.
##' @param ... additional parameters
##' @return data.frame
##' @author Guangchuang Yu \url{https://guangchuangyu.github.io}
##' @method as.data.frame csAnno
##' @export
as.data.frame.csAnno <- function(x, row.names=NULL, optional=FALSE, ...) {
y <- as.GRanges(x)
if (!(is.null(row.names) || is.character(row.names)))
stop("'row.names' must be NULL or a character vector")
df <- as.data.frame(y)
rownames(df) <- row.names
return(df)
}
##' show method for \code{csAnno} instance
##'
##' @name show
##' @docType methods
##' @rdname show-methods
##' @aliases show,csAnno,ANY-method
##' @title show method
##' @param object A \code{csAnno} instance
##' @return message
##' @importFrom methods show
##' @exportMethod show
##' @usage show(object)
##' @author Guangchuang Yu \url{https://guangchuangyu.github.io}
setMethod("show", signature(object="csAnno"),
function(object) {
cat("Annotated peaks generated by ChIPseeker\n")
cat(paste(length(object@anno), object@peakNum, sep="/"),
" peaks were annotated\n")
if (object@hasGenomicAnnotation) {
cat("Genomic Annotation Summary:\n")
print(object@annoStat)
}
}
)
##' plotAnnoBar method for list of \code{csAnno} instances
##'
##' @name plotAnnoBar
##' @docType methods
##' @rdname plotAnnoBar-methods
##' @aliases plotAnnoBar,list-method
##' @exportMethod plotAnnoBar
setMethod("plotAnnoBar", signature(x="list"),
function(x,
xlab="",
ylab='Percentage(%)',
title="Feature Distribution",
...) {
if (is.null(names(x))) {
nn <- paste0("Peak", seq_along(x))
warning("input is not a named list, set the name automatically to ", paste(nn, collapse = " "))
names(x) <- nn
## stop("input object should be a named list...")
}
anno <- lapply(x, getAnnoStat)
## anno.df <- ldply(anno)
anno.df <- list_to_dataframe(anno)
categoryColumn <- ".id"
plotAnnoBar.data.frame(anno.df, xlab, ylab, title, categoryColumn)
})
##' plotAnnoBar method for \code{csAnno} instance
##'
##' @name plotAnnoBar
##' @docType methods
##' @rdname plotAnnoBar-methods
##' @aliases plotAnnoBar,csAnno,ANY-method
##' @title plotAnnoBar method
##' @param x \code{csAnno} instance
##' @param xlab xlab
##' @param ylab ylab
##' @param title title
##' @param ... additional paramter
##' @return plot
##' @exportMethod plotAnnoBar
##' @usage plotAnnoBar(x, xlab="", ylab='Percentage(\%)',title="Feature Distribution", ...)
##' @author Guangchuang Yu \url{https://guangchuangyu.github.io}
setMethod("plotAnnoBar", signature(x="csAnno"),
function(x,
xlab="",
ylab="Percentage(%)",
title="Feature Distribution",
...) {
anno.df <- getAnnoStat(x)
categoryColumn <- 1
plotAnnoBar.data.frame(anno.df, xlab, ylab, title, categoryColumn)
})
##' plotAnnoPie method for \code{csAnno} instance
##'
##' @name plotAnnoPie
##' @docType methods
##' @rdname plotAnnoPie-methods
##' @aliases plotAnnoPie,csAnno,ANY-method
##' @title plotAnnoPie method
##' @param x \code{csAnno} instance
##' @param ndigit number of digit to round
##' @param cex label cex
##' @param col color
##' @param legend.position topright or other.
##' @param pie3D plot in 3D or not
##' @param ... extra parameter
##' @return plot
##' @exportMethod plotAnnoPie
##' @usage plotAnnoPie(x,ndigit=2, cex=0.9,col=NA,legend.position="rightside", pie3D=FALSE, ...)
##' @author Guangchuang Yu \url{https://guangchuangyu.github.io}
setMethod("plotAnnoPie", signature(x="csAnno"),
function(x,
ndigit=2,
cex=0.9,
col=NA,
legend.position="rightside",
pie3D=FALSE,
...){
plotAnnoPie.csAnno(x, ndigit, cex, col, legend.position, pie3D, ...)
})
##' plotDistToTSS method for list of \code{csAnno} instances
##'
##' @name plotDistToTSS
##' @docType methods
##' @rdname plotDistToTSS-methods
##' @aliases plotDistToTSS,list-method
##' @exportMethod plotDistToTSS
setMethod("plotDistToTSS", signature(x="list"),
function(x, distanceColumn="distanceToTSS",
xlab="", ylab="Binding sites (%) (5'->3')",
title="Distribution of transcription factor-binding loci relative to TSS", ...) {
if (is.null(names(x))) {
nn <- paste0("Peak", seq_along(x))
warning("input is not a named list, set the name automatically to ", paste(nn, collapse = " "))
names(x) <- nn
## stop("input object should be a named list...")
}
peakAnno <- lapply(x, as.data.frame)
## peakDist <- ldply(peakAnno)
peakDist <- list_to_dataframe(peakAnno)
categoryColumn <- ".id"
plotDistToTSS.data.frame(peakDist, distanceColumn,
xlab, ylab, title, categoryColumn)
})
##' plotDistToTSS method for \code{csAnno} instance
##'
##' @name plotDistToTSS
##' @docType methods
##' @rdname plotDistToTSS-methods
##' @aliases plotDistToTSS,csAnno,ANY-method
##' @title plotDistToTSS method
##' @param distanceColumn distance column name
##' @param x \code{csAnno} instance
##' @param xlab xlab
##' @param ylab ylab
##' @param title title
##' @param ... additional parameter
##' @return plot
##' @exportMethod plotDistToTSS
##' @usage plotDistToTSS(x,distanceColumn="distanceToTSS", xlab="",
##' ylab="Binding sites (\%) (5'->3')",
##' title="Distribution of transcription factor-binding loci relative to TSS",...)
##' @author Guangchuang Yu \url{https://guangchuangyu.github.io}
setMethod("plotDistToTSS", signature(x="csAnno"),
function(x, distanceColumn="distanceToTSS",
xlab="", ylab="Binding sites (%) (5'->3')",
title="Distribution of transcription factor-binding loci relative to TSS", ...) {
peakDist <- as.data.frame(x)
categoryColumn <- 1
plotDistToTSS.data.frame(peakDist, distanceColumn,
xlab, ylab, title, categoryColumn)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.