View source: R/updateCelUnits.R
updateCelUnits | R Documentation |
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.
updateCelUnits(filename, cdf=NULL, data, ..., verbose=0)
filename |
The filename of the CEL file. |
cdf |
A (optional) CDF |
data |
A |
... |
Optional arguments passed to |
verbose |
An |
Returns what updateCel
() returns.
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.
Henrik Bengtsson
Internally, updateCel
() is used.
##############################################################
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 #
##############################################################
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.