Nothing
#' @title Convert peaks to GRanges object
#' @author Ioannis Vardaxis, \email{ioannis.vardaxis@@ntnu.no}
#' @references
#' Vardaxis I, Drabløs F, Rye M and Lindqvist BH (2018). \emph{MACPET: Model-based Analysis for ChIA-PET}.
#' To be published.
#'
#' @description \code{PeaksToGRanges} converts peaks of an object of \code{\linkS4class{PSFit}}
#' class to \code{\linkS4class{GRanges}} object.
#' @details \code{PeaksToGRanges} converts peak information into a
#' \code{\linkS4class{GRanges}} object. Each row in the
#' \code{\linkS4class{GRanges}} object represents a peak with 'CIQ.Up.start' and 'CIQ.Down.end' as start
#' and end coordinates, respectively (see \code{\linkS4class{PSFit}})
#' Metadata will also include information for the total PETs,
#' the p-value and the FDR of each peak.
#'
#' @param object An object of class \code{\linkS4class{PSFit}}.
#' @param threshold A numeric with the FDR cut-off threshold used to take a
#' subset of significant peaks. If \code{threshold=NULL}
#' then all the peaks are returned.
#' @param ... Further arguments to be passed to \code{PeaksToGRanges} (not used).
#'
#' @seealso \code{\linkS4class{PSFit}}, \code{\link{PeaksToNarrowPeak}}
#---#'define default:
#' @name PeaksToGRanges
#' @export
#' @include AllClasses.R
#' @importFrom S4Vectors metadata
#' @importFrom GenomicRanges GRanges seqinfo
#' @importFrom IRanges IRanges
#' @importFrom GenomeInfoDb seqlevelsInUse seqlevels
#'
#'
#' @examples
#' #load Self-ligated data: (class=PSFit)
#' load(system.file('extdata', 'MACPET_psfitData.rda', package = 'MACPET'))
#' class(MACPET_psfitData)
#' PeaksToGRanges(object=MACPET_psfitData,threshold=1e-5)
#'
#'
# default:
PeaksToGRanges = function(object, ...) {
UseMethod("PeaksToGRanges", object = object)
}
#' @rdname PeaksToGRanges
#' @method PeaksToGRanges default
#' @export
PeaksToGRanges.default = function(object, ...) {
stop("No PeaksToGRanges method for class ", class(object), ".", call. = FALSE)
}
#' @rdname PeaksToGRanges
#' @method PeaksToGRanges PSFit
#' @return For \code{\linkS4class{PSFit}} class, a
#' \code{\linkS4class{GRanges}}
#' object created by the estimated
#' peak information including metadata columns for the total PETs,
#' the p-value and the FDR of each peak.
#' @export
PeaksToGRanges.PSFit = function(object, threshold = NULL, ...) {
# global variables for Rcheck:
FDR = NULL
#--------------------------
# keep significant peaks:
Peaks = S4Vectors::metadata(object)$Peaks.Info
if (is.numeric(threshold)) {
Peaks = subset(Peaks, FDR < threshold)
if (nrow(Peaks) == 0) {
stop("No significant peaks in the data!Try a higher threshold.", call. = FALSE)
}
} else {
warning("No threshold given, all the peaks are returned.")
}
# keep seqinfo:
Seqinformation = GenomicRanges::seqinfo(object)
# make GRanges:
RES = GenomicRanges::GRanges(seqnames = Peaks$Chrom, seqinfo = Seqinformation,
ranges = IRanges::IRanges(start = round(Peaks$CIQ.Up.start), end = round(Peaks$CIQ.Down.end)))
# reduce unused levels:
LevelsUsed = GenomeInfoDb::seqlevelsInUse(RES)
GenomeInfoDb::seqlevels(RES) = LevelsUsed
# add metadata:
RES$TotPETs = Peaks$Pets
RES$p.value = Peaks$p.value
RES$FDR = Peaks$FDR
return(RES)
}
#defining the method as S4 method:
#' @rdname PeaksToGRanges
#' @aliases PeaksToGRanges,PSFit,PeaksToGRanges-method
#' @export
setMethod("PeaksToGRanges", "PSFit", PeaksToGRanges.PSFit)
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.