R/mergeReplicates.R

setGeneric("mergeReplicates", signature = "reads", function(reads, types, ...)
                                         {standardGeneric("mergeReplicates")})

setMethod("mergeReplicates", "GRangesList", function(reads, types, verbose = TRUE)
{
    if(is.null(types))
    	stop("Mandatory argument 'types' not provided.\n")
    if(length(types) != length(reads))
    	stop("'types' and 'reads' lengths differ.\n")

    if(verbose) message("Unlisting GRangesList.")
    readsGR <- unlist(reads, use.names = FALSE)
    rdTypes <- Rle(types, elementNROWS(reads))
    if(verbose) message("Splitting by types.")
    reads <- split(readsGR, rdTypes)
    metadata(reads) <- list(names(reads))
    gc()
    if(verbose) message("Pooled GRangesList created.")
    reads
})
markrobinsonuzh/Repitools documentation built on March 20, 2024, 6:04 a.m.