updateCelUnits {affxparser} | R Documentation

## Updates a CEL file unit by unit

### Description

Updates a CEL file unit by unit.

Please note that, contrary to `readCelUnits`(), this method can only update a single CEL file at the time.

### Usage

    updateCelUnits(filename, cdf=NULL, data, ..., verbose=0)

### Arguments

`filename` | The filename of the CEL file.
`cdf` | A (optional) CDF `list` structure either with field `indices` or fields `x` and `y`. If `NULL`, the unit names (and from there the cell indices) are inferred from the names of the elements in `data`.
`data` | A `list` structure in a format similar to what is returned by `readCelUnits`() for a single CEL file only.
`...` | Optional arguments passed to `readCdfCellIndices`(), which is called if `cdf` is not given.
`verbose` | An `integer` specifying how much verbose details are outputted.

### Value

Returns what `updateCel`() returns.

### Working with re-arranged CDF structures

Note that if the `cdf` structure is specified the CDF file is not queried, but all information about cell x and y locations, that is, cell indices is expected to be in this structure. This can be very useful when one work with a cdf structure that originates from the underlying CDF file, but has been restructured for instance through the `applyCdfGroups`() method, and `data` correspondingly. This update method knows how to update such structures too.

### Author(s)

Henrik Bengtsson

### See Also

Internally, `updateCel`() is used.

### Examples

    ##############################################################
    if (require("AffymetrixDataTestFiles")) {            # START #
    ##############################################################

    # Search for some available Calvin CEL files
    path <- system.file("rawData", package="AffymetrixDataTestFiles")
    files <- findFiles(pattern="[.](cel|CEL)$", path=path, recursive=TRUE, firstOnly=FALSE)
    files <- grep("FusionSDK_Test3", files, value=TRUE)
    files <- grep("Calvin", files, value=TRUE)
    file <- files[1]

    # Convert to an XDA CEL file
    pathname <- file.path(tempdir(), basename(file))
    if (file.exists(pathname))
      file.remove(pathname)
    convertCel(file, pathname)

    # Check for the CDF file
    hdr <- readCelHeader(pathname)
    cdfFile <- findCdf(hdr$chiptype)

    hdr <- readCdfHeader(cdfFile)
    nbrOfUnits <- hdr$nunits
    print(nbrOfUnits);

    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Example: Read and re-write the same data
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    units <- c(101, 51)
    data1 <- readCelUnits(pathname, units=units, readStdvs=TRUE)
    cat("Original data:\n")
    str(data1)
    updateCelUnits(pathname, data=data1)
    data2 <- readCelUnits(pathname, units=units, readStdvs=TRUE)
    cat("Updated data:\n")
    str(data2)
    stopifnot(identical(data1, data2))

    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Example: Random read and re-write "stress test"
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    for (kk in 1:10) {
      nunits <- sample(min(1000,nbrOfUnits), size=1)
      units <- sample(nbrOfUnits, size=nunits)
      cat(sprintf("%02d. Selected %d random units: reading", kk, nunits));
      t <- system.time({
        data1 <- readCelUnits(pathname, units=units, readStdvs=TRUE)
      }, gcFirst=TRUE)[3]
      cat(sprintf(" [%.2fs=%.2fs/unit], updating", t, t/nunits))
      t <- system.time({
        updateCelUnits(pathname, data=data1)
      }, gcFirst=TRUE)[3]
      cat(sprintf(" [%.2fs=%.2fs/unit], validating", t, t/nunits))
      data2 <- readCelUnits(pathname, units=units, readStdvs=TRUE)
      stopifnot(identical(data1, data2))
      cat(". done\n")
    }

    ##############################################################
    }                                                     # STOP #
    ##############################################################

[Package affxparser version 1.56.0 Index]