Learn R Programming

CORE (version 1.2)

randomEventMoves:

Usage

randomEventMoves(eventLengths, boundaries)

Arguments

eventLengths
boundaries

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 (eventLengths, boundaries) 
    {
        chrlengths <- boundaries[, "end"] - boundaries[, "start"] + 
            1
        ochl <- order(chrlengths, decreasing = T)
        schl <- chrlengths[ochl]
        cschl <- cumsum(schl)
        sb <- boundaries[ochl, ]
        oe <- order(eventLengths, decreasing = T)
        z <- cbind(c(chrlengths, eventLengths), c(rep(1, length(chrlengths)), 
            rep(0, length(eventLengths))))
        z <- z[order(z[, 1], decreasing = T), ]
        chrmax <- cumsum(z[, 2])[z[, 2] == 0]
        eventLengths <- z[z[, 2] == 0, 1]
        abslen <- floor(cschl[chrmax] * runif(length(chrmax)))
        z <- cbind(c(cschl, abslen), c(rep(1, length(cschl)), rep(0, 
            length(abslen))), c(rep(0, length(cschl)), eventLengths))
        oz <- order(z[, 1])
        oze <- order(z[z[, 3] != 0, 1])
        z <- z[oz, ]
        z[, 2] <- cumsum(z[, 2]) + 1
        z <- z[z[, 3] != 0, , drop = F]
        start <- sb[z[, 2], "start"] + floor((schl[z[, 2]] - z[, 
            3] + 1) * runif(nrow(z)))
        end <- start + z[, 3] - 1
        chrom <- ochl[z[, 2]]
        sec <- matrix(ncol = 3, nrow = length(start), dimnames = list(NULL, 
            c("start", "end", "chrom")))
        sec[oze, ] <- cbind(start, end, chrom)
        sec[oe, ] <- sec
        return(sec)
      }

    Run the code above in your browser using DataLab