preprocessCoverage {derfinder} | R Documentation

## Transform and split the data

### Description

This function takes the coverage data from loadCoverage, scales the data, does the log2 transformation, and splits it into appropriate chunks for using calculateStats.

### Usage

    preprocessCoverage(
      coverageInfo,
      groupInfo = NULL,
      cutoff = 5,
      colsubset = NULL,
      lowMemDir = NULL,
      ...
    )

### Arguments

`coverageInfo` | A list containing a DataFrame –`$coverage`– with the coverage data and a logical Rle –`$position`– with the positions that passed the cutoff. This object is generated using loadCoverage. You should have specified a cutoff value for loadCoverage unless that you are using `colsubset` which will force a filtering step with filterData when running preprocessCoverage.
`groupInfo` | A factor specifying the group membership of each sample. If `NULL` no group mean coverages are calculated. If the factor has more than one level, the first one will be used to calculate the log2 fold change in calculatePvalues.
`cutoff` | The base-pair level cutoff to use. It's behavior is controlled by `filter`.
`colsubset` | Optional vector of column indices of `coverageInfo$coverage` that denote samples you wish to include in analysis.
`lowMemDir` | If specified, each chunk is saved into a separate Rdata file under `lowMemDir` and later loaded in fstats.apply when running calculateStats and calculatePvalues. Using this option helps reduce the memory load as each fork in bplapply loads only the data needed for the chunk processing. The downside is a bit longer computation time due to input/output.
`...` | Arguments passed to other methods and/or advanced arguments. Advanced arguments: verbose If `TRUE` basic status updates will be printed along the way. Default: `FALSE`. toMatrix Determines whether the data in the chunk should already be saved as a Matrix object, which can be useful to reduce the computation time of the F-statistics. Only used when `lowMemDir` is not `NULL` and by in that case set to `TRUE` by default. mc.cores Number of cores you will use for calculating the statistics. scalefac A log 2 transformation is used on the count tables, so zero counts present a problem. What number should we add to the entire matrix? Default: 32. chunksize How many rows of `coverageInfo$coverage` should be processed at a time? Default: 5 million. Reduce this number if you have hundreds of samples to reduce the memory burden while sacrificing some speed.

### Details

If `chunksize` is `NULL`, then `mc.cores` is used to determine the `chunksize`. This is useful if you want to split the data so each core gets the same amount of data (up to rounding).

Computing the indexes and using those for `mclapply` reduces memory copying as described by Ryan Thompson and illustrated in approach #4 at http://lcolladotor.github.io/2013/11/14/Reducing-memory-overhead-when-using-mclapply

If `lowMemDir` is specified then `$coverageProcessed` is NULL and `$mclapplyIndex` is a vector with the chunk identifiers.

### Value

A list with five components.

coverageProcessed

  contains the processed coverage information in a DataFrame object. Each column represents a sample and the coverage information is scaled and log2 transformed. Note that if `colsubset` is not `NULL` the number of columns will be less than those in `coverageInfo$coverage`. The total number of rows depends on the number of base pairs that passed the `cutoff` and the information stored is the coverage at that given base. Further note that filterData is re-applied if `colsubset` is not `NULL` and could thus lead to fewer rows compared to `coverageInfo$coverage`.

mclapplyIndex

  is a list of logical Rle objects. They contain the partioning information according to `chunksize`.

position

  is a logical Rle with the positions of the chromosome that passed the cutoff.

meanCoverage

  is a numeric Rle with the mean coverage at each filtered base.

groupMeans

  is a list of Rle objects containing the mean coverage at each filtered base calculated by group. This list has length 0 if `groupInfo=NULL`.

Passed to filterData when `colsubset` is specified.

### Author(s)

Leonardo Collado-Torres

### See Also

filterData, loadCoverage, calculateStats

### Examples

    ## Split the data and transform appropriately before using calculateStats()
    dataReady <- preprocessCoverage(genomeData,
        cutoff = 0, scalefac = 32,
        chunksize = 1e3, colsubset = NULL, verbose = TRUE
    )
    names(dataReady)
    dataReady

[Package derfinder version 1.24.2 Index]