Learn R Programming

CORE (version 1.2)

makepairs:

Usage

makepairs(events)

Arguments

events

Value

    Examples

    Run this code
    ##---- Should be DIRECTLY executable !! ----
    ##-- ==>  Define data, use random,
    ##--	or do  help(data=index)  for the standard data sets.
    
    ## The function is currently defined as
    function (events) 
    {
        if ("chrom" %in% dimnames(events)[[2]]) {
            events <- events[order(events[, "chrom"]), , drop = F]
            chromstarts <- tapply(X = events[, "start"], INDEX = events[, 
                "chrom"], FUN = min)
            chromends <- tapply(X = events[, "end"], INDEX = events[, 
                "chrom"], FUN = max)
        }
        else {
            chromstarts <- min(events[, "start"])
            chromends <- max(events[, "end"])
        }
        ustarts <- sort(unique(events[, "start"]))
        uends <- sort(unique(events[, "end"]))
        z <- cbind(c(chromstarts, ustarts), c(rep(1, length(chromstarts)), 
            rep(0, length(ustarts))), c(rep(0, length(chromstarts)), 
            1:length(ustarts)))
        z <- z[order(z[, 1]), ]
        sch <- cumsum(z[, 2])[z[, 3] != 0][order(z[z[, 3] != 0, 3])]
        z <- cbind(c(chromstarts, uends), c(rep(1, length(chromstarts)), 
            rep(0, length(uends))), c(rep(0, length(chromstarts)), 
            1:length(uends)))
        z <- z[order(z[, 1]), ]
        ech <- cumsum(z[, 2])[z[, 3] != 0][order(z[z[, 3] != 0, 3])]
        sfirst <- match(1:length(chromstarts), sch)[ech]
        z <- cbind(c(ustarts, uends), c(rep(1, length(ustarts)), 
            rep(0, length(uends))))
        z <- z[order(z[, 1]), ]
        slast <- cumsum(z[, 2])[z[, 2] == 0]
        z <- cbind(rep(1:length(uends), times = (slast - sfirst + 
            1)), rep(0, sum(slast - sfirst + 1)))
        z[match(1:length(uends), z[, 1]), 2] <- match(1:length(uends), 
            z[, 1])
        mypairs <- matrix(ncol = 3, dimnames = list(NULL, c("start", 
            "end", "id")), data = c(ustarts[(1:nrow(z)) - cummax(z[, 
            2]) + sfirst[z[, 1]]], uends[z[, 1]], 1:length(uends[z[, 
            1]])))
        return(mypairs)
      }

    Run the code above in your browser using DataLab