.writeCcgFileHeader <- function(con, header, ...) {
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Local functions
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
writeUByte <- function(con, value, ...) {
writeBin(as.integer(value), con=con, size=1, endian="big");
}
writeInt <- function(con, value, ...) {
writeBin(as.integer(value), con=con, size=4, endian="big");
}
writeUInt <- function(con, value, ...) {
writeBin(as.integer(value), con=con, size=4, endian="big");
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Validate arguments
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Validate 'header':
if (!is.list(header))
stop("Argument 'header' must be a list: ", mode(header));
if (is.null(header$nbrOfDataGroups))
stop("Missing element 'nbrOfDataGroups' in argument 'header'.");
if (is.null(header$dataGroupStart))
stop("Missing element 'dataGroupStart' in argument 'header'.");
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Further validation
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Default version is 1 (one) [1]
if (is.null(header$version))
header$version <- as.integer(1);
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Writing
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# The magic for Command Console generic data file format is 59 [1]
magic <- writeUByte(con, value=59);
# Write version
version <- writeUByte(con, value=header$version);
# Write number of data groups
nbrOfDataGroups <- writeInt(con, value=header$nbrOfDataGroups);
# Write file position of first data groups
dataGroupStart <- writeUInt(con, value=header$nbrOfDataGroups);
# Return the current file write position
invisible(seek(con, origin="start", rw="write"));
} # .writeCcgFileHeader()
# Generic Data Header
# This section stores the file and file type identifiers, data to
# describe the contents of the file, parameters on how it was created
# and information about its parentage. This section contains a circular
# dependency so as to traverse across the entire parentage of a file.
# This information will provide the entire history of how a file came
# to be.
#
# The first data header section immediately follows the file header
# section.
#
# Item Type Description
# 1 GUID The data type identifier. This is used to identify the type
# of data stored in the file. For example:
# * acquisition data (affymetrix-calvin-scan-acquisition)
# * intensity data (tbd)
# * expression results (tbd)
# * genotyping results (tbd)
# 2 GUID Unique file identifier. This is the identifier to use to
# link the file with parent files. This identifier will be
# updated whenever the contents of the file change.
# Example: When a user manually aligns the grid in a DAT file
# the grid coordinates are updated in the DAT file and the file
# is given a new file identifier.
# 3 DATETIME Date and time of file creation.
# 4 LOCALE The locale of the operating system that the file was created on.
# 5 INT The number of name/type/value parameters.
# 6 WVT[] Array of parameters stored as name/value/type triplets.
# WVT[]=(WSTRING/VALUE/TYPE)[]
# 7 INT Number of parent file headers.
# 8 GDH[] Array of parent file headers. GDH[]=GenericDataHeader[]
.writeCcgDataHeader <- function(con, header, ...) {
# To please R CMD check
charToInt <- NULL; rm(list="charToInt");
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Local functions
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
writeUByte <- function(con, value, ...) {
writeBin(as.integer(value), con=con, size=1, endian="big");
}
writeInt <- function(con, value, ...) {
writeBin(as.integer(value), con=con, size=4, endian="big");
}
writeUInt <- function(con, value, ...) {
writeBin(as.integer(value), con=con, size=4, endian="big");
}
writeString <- function(con, str, ...) {
# A 1 byte character string. A string object is stored as an INT
# (to store the string length) followed by the CHAR array (to store
# the string contents).
str <- as.character(str);
nchars <- as.integer(nchar(str));
writeInt(con, value=nchars);
writeChar(str, con=con, nchars=nchars);
}
writeWChar <- function(object, con, nchars=nchar(object,type="chars"), ...) {
# Tho bytes per character
str <- as.character(object);
# Convert to unicode characters
n <- nchar(str);
raw <- matrix(raw(2*n), nrow=2, ncol=n);
bfr <- charToInt(strsplit(str, split="")[[1]]);
raw[2,] <- as.raw(bfr);
raw <- as.vector(raw);
# Write raw buffer
writeBin(raw, con=con);
}
writeWString <- function(con, str, ...) {
# A UNICODE string. A string object is stored as an INT (to store the
# string length) followed by the WCHAR array (to store the string
# contents).
str <- as.character(str);
nchars <- as.integer(nchar(str));
writeInt(con, value=nchars);
writeWChar(str, con=con, nchars=nchars);
}
writeGuid <- function(con, id, ...) {
writeString(con, str=id, ...);
}
writeDateTime <- function(con, timestamp, ...) {
writeWString(con, str=timestamp, ...);
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Validate arguments
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Validate 'header':
if (!is.list(header))
stop("Argument 'header' must be a list: ", mode(header));
if (is.null(header$nbrOfDataGroups))
stop("Missing element 'nbrOfDataGroups' in argument 'header'.");
if (is.null(header$dataGroupStart))
stop("Missing element 'dataGroupStart' in argument 'header'.");
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Further validation
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Default version is 1 (one) [1]
if (is.null(header$version))
header$version <- as.integer(1);
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Writing
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Data type identifier
writeGuid(con, id=header$dataTypeId);
# Unique file identifier
writeGuid(con, id=header$fileId);
# Unique file identifier
writeDateTime(con, id=header$timestamp);
# Write version
version <- writeUByte(con, value=header$version);
# Write number of data groups
nbrOfDataGroups <- writeInt(con, value=header$nbrOfDataGroups);
# Write file position of first data groups
dataGroupStart <- writeUInt(con, value=header$nbrOfDataGroups);
# Return the current file write position
invisible(seek(con, origin="start", rw="write"));
} # .writeCcgDataHeader()
############################################################################
# HISTORY:
# 2012-05-18
# o Now using stop() instead of throw().
# 2007-08-16
# o This file only contains a stub, so there is currently no
# writeCcgHeader() or writeCcg().
# 2006-11-06
# o Created.
############################################################################
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.