HenrikBengtsson / aroma.affymetrix

🔬 R package: Analysis of Large Affymetrix Microarray Data Sets
https://cran.r-project.org/package=aroma.affymetrix
10 stars 3 forks source link

REPRODUCIBILITY: Created CEL files carry creation timestamp in header => non-unique CEL files #8

Open HenrikBengtsson opened 8 years ago

HenrikBengtsson commented 8 years ago

It looks like convertToUnique() for AffymetrixCelSet writes CEL files that have a creation timestamp in the header. Instead of creating a timestamp for when the file was created, it's / it may be better to have it inherit the timestamp from the source CEL file.

HenrikBengtsson commented 8 years ago

This originates from affxparser::cdfHeaderToCelHeader();

> affxparser::cdfHeaderToCelHeader
> affxparser::cdfHeaderToCelHeader
function (cdfHeader, sampleName = "noname", date = Sys.time(),
    ..., version = "4")
{
    version <- match.arg(version)
    celHeader <- list()
    celHeader$version <- version
    celHeader$cols <- cdfHeader$cols
    celHeader$rows <- cdfHeader$rows
    celHeader$total <- celHeader$rows * celHeader$cols
    celHeader$chiptype <- cdfHeader$chiptype
    celHeader$algorithm <- "NoAlgorithm"
    pd <- packageDescription("affxparser")
    creator <- sprintf("Creator:%s;Version:%s;", pd$Package,
        pd$Version)
    celHeader$parameters <- paste(creator, sep = "")
    cols <- celHeader$cols
    rows <- celHeader$rows
    datHeader <- list(pixelRange = "[0..65535]", sampleName = sampleName,
        CLS = cols, RWS = rows, XIN = 0, YIN = 0, VE = 0, scanTemp = "",
        laserPower = "", scanDate = format(date, "%m/%d/%y %H:%M:%S"),
        scanner = list(id = "", type = ""), chipType = celHeader$chiptype)
    datHeader <- .wrapDatHeader(datHeader)
    header <- sprintf("Cols=%d\nRows=%d\nTotalX=%d\nTotalY=%d\nOffsetX=0\n
OffsetY=0\nGridCornerUL=0 0\nGridCornerUR=%d 0\nGridCornerLR=%d %d\n
GridCornerLL=0 %d\nAxis-invertX=0\nAxisInvertY=0\nswapXY=0\nDatHeader=%s\n
Algorithm=%s\nAlgorithmParameters=%s\n",
        cols, rows, cols, rows, cols, cols, rows, rows, datHeader,
        celHeader$algorithm, celHeader$parameters)
    celHeader$header <- header
    celHeader$cellmargin <- 2
    celHeader$noutliers <- 1
    celHeader$nmasked <- 1
    celHeader
}
<environment: namespace:affxparser>
HenrikBengtsson commented 8 years ago

UPDATE: There are several other methods in aroma.affymetrix that uses cdfHeaderToCelHeader(); should they also be "fixed".