########################################################################/**
# @RdocFunction isCelFile
#
# @title "Checks if a file is a CEL file or not"
#
# \description{
# @get "title".
# }
#
# @synopsis
#
# \arguments{
# \item{filename}{A filename.}
# \item{...}{Not used.}
# }
#
# \value{
# Returns @TRUE if a CEL file, otherwise @FALSE.
# ASCII (v3), binary (v4;XDA), and binary (CCG v1;Calvin) CEL files
# are recognized.
# If file does not exist, an exception is thrown.
# }
#
# \seealso{
# @see "readCel", @see "readCelHeader", @see "readCelUnits".
# }
#
# @author "HB"
#
# @keyword programming
# @keyword file
# @keyword IO
# @keyword internal
#**/#######################################################################
isCelFile <- function(filename, ...) {
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Validate arguments
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Argument 'filename':
if (!file.exists(filename)) {
stop("Cannot check file format. File not found: ", filename);
}
# Close an open connections on exit
con <- NULL;
on.exit({
if (inherits(con, "connection") && isOpen(con))
on.exit(close(con));
})
# Note, we cannot use readCelHeader(), because that will crash R if
# it is not a CEL file.
header <- NULL;
for (ver in c("4", "3", "1")) {
tryCatch({
if (inherits(con, "connection") && isOpen(con)) {
close(con);
con <- NULL;
}
con <- file(filename, open="rb");
if (ver == "4") {
header <- .readCelHeaderV4(con);
} else if (ver == "3") {
header <- .readCelHeaderV3(con);
} else {
header <- readCcgHeader(con);
dataTypeId <- header$dataHeader$dataTypeId;
if (!identical(dataTypeId, "affymetrix-calvin-intensity"))
header <- NULL;
}
}, error = function(ex) {
# print(ex);
})
}
isCelFile <- (!is.null(header));
isCelFile;
}
############################################################################
# HISTORY:
# 2007-08-16
# o Updated isCelFile() so it returns TRUE for CCG CEL v1 files.
# 2006-07-27
# o BUG FIX: The error message when the file was not found was broken.
# 2006-07-10
# o Created.
############################################################################
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.