Hi, aroma.affymetrix v1.1.0 is available. Please update by:
source("http://www.braju.com/R/hbLite.R") hbInstall("aroma.affymetrix") Since the previous release back in January we have been working hard to improve the software further. All the details are at the end of this message. Worth mentioning are a few new models and methods. For instance, the background correction methods available in the limma package are now available via the NormExpBackgroundCorrection class. The GcRmaBackgroundCorrection class was updated to work also with newer arrays such as Gene 1.0 ST - there was also an important bug fix for this class (see below). Additional support for tiling arrays has been added via classes MatNormalization and MatSmoothing. In addition to this, we are adding a broader foundation for future methods and models, which will be announced later. There were actually not too many bugs this time around and most of them where related to changes in external packages. However, to avoid being bitten by bugs - in our or others' code - we keep improving the exception handling. As always, the idea is to detect and report on abnormalities - in arguments, data, as well as intermediate and final results - as soon as possible. I would also like to share with you that the aroma.affymetrix package is up for more serious tasks. In The Cancer Genome Atlas (TCGA) project it has already been used extensively for exon array analysis, and it is now being used together with the aroma.cn package for multi-platform copy-number analysis. Work is also in progress for using it's core features for analyzing non-Affymetrix methylation data. Having said that, I'd like to reveal that we are taking the first serious (though stumbling) steps toward support other platforms than just Affymetrix. It won't happen soon, but you should know we are on it. Also, thanks to everyone helping out answering questions on the mailing list - keep up the good work. I encourage everyone to pitch in if you think you can contribute. We are lacking behind on documentation and vignettes - if you have something useful to share, please do so. Have a good one, Henrik with co-developers PS. Google seems to have removed the faulty "spam ban" on our Google Group - everything is back to normal including the mailing list. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UPDATES to aroma.affymetrix: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Version: 1.1.0 [2009-05-29] o New public release. No updates. o Package passes R CMD check on R v2.9.0 and all redundancy tests. Version: 1.0.8 [2009-05-27] o SPEED UP: Now process() of MatSmoothing is several times faster due to code optimization and utilizing of the new 'gsmoothr' package. o ROBUSTNESS: Updated process() of MatSmoothing to write first to a temporary file which is then renamed. This lower the risk for corrupt output files due to processing interrupts. o ROBUSTNESS: Now the constructor of MatSmoothing does more tests of the validity of the 'design' matrix argument. o Now the chip type validation of fromFiles() for AffymetrixCelSet is aware of tags in the chip type of the CEL files. This may happen if custom CDFs are used are their full chip types are stored in the CEL files, e.g. Hs_PromPR_v02,Harvard,ROIs,unique. Version: 1.0.7 [2009-05-20] o Now readDataUnitChromosomePosition() for AffymetrixNetAffxCsvFile also recognize 'M' for chromosome 25. o GENERALIZATION: Updated fitCnProbes() of UnitModel to identify single-cell CN units, and ignore multi-cell CN units, which will be process like the other units. By not assuming single-cell CN units, this methods should also apply to other CDFs, e.g. the new Cytogenetics_Array. o CLEAN UP: Moved the Explorer class and its support files under inst/ from aroma.affymetrixd to aroma.core. o CLEAN UP: Moved the AromaCellPositionFile class from aroma.affymetrix to aroma.core. o CLEAN UP: Removed obsolete patch of affxparser cdfMergeStrands(). o EXCEPTION HANDLING: Methods that creates/modifies files will give a clear error message if the file permissions does not allow it. o ROBUSTNESS: Now all arguments that are expected to be exactly one character string (not an empty vector or a vector of length two) are asserted to be that too. This closes some potential bugs. o BUG FIX: getCdf() for AffymetrixProbeTabFile would fail if the CDF had no tags. o BUG FIX: fit() for CrlmmModel was calling oligo::getM(), but that method was later moved to oligoClasses. Now we just do getM(). o Package passes R CMD check on R v2.9.0. Version: 1.0.6 [2009-05-16] o BUG FIX: In the most recent version of oligo, its justSNPRMA() requires that oligo is loaded, i.e. oligo::justSNPRMA() will not work. Updated justSNPRMA() for character to require oligo. o CLEAN UP: Generalized CopyNumberSegmentationModel such that subclasses no longer have to implement fitOne(), but instead only getFitFunction(), which should return a segmentByNnn() function for the RawCopyNumbers class. o CLEAN UP: Moved all drawCnLevels(), extractCopyNumberRegions() and extractRawCopyNumbers() [for DNAcopy, HaarSeg and profileCGH] to aroma.core v1.0.6 (will eventually end up in aroma.cn). o CLEAN UP: Removed obsolete fitGlad() for CnChipEffect{File|Set}. Version: 1.0.5 [2009-05-10] o BETA: Updated several methods of the package to handle the new way getOutputDataSet() of AromaTransform scans and loads data sets. This new way is the first step towards supporting output directories that contains more data files than the input data set, which for instance can occur if the same data set is split up and processed in subsets. The new approach will also try to order the output files accordingly with the input files. o Added readSequenceDataFrame() for AffymetrixProbeTabFile. o Updated getFitUnitGroupFunction() of RmaPlm to work with the new oligo v1.7.19 as well. o CLEAN UP: computeAffinities() of AffymetrixCdfFile loaded the 'matchprobes' package, but never used it. o CLEAN UP: Now computeAffinities() of AffymetrixCdfFile uses the AffymetrixProbeTabFile class to read probe sequences. o CLEAN UP: Now findByChipType() of AffymetrixProbeTabFile only search according to "modern" rules. The by now really old alternative search rules have been made deprecated, i.e. it still uses those but, if a file is found, it gives an error saying that the the method is outdated. This should not affect anyone these days, but just in case, it is included. o Package passes R CMD check on R v2.9.0. o Package passes redundancy tests. Version: 1.0.4 [2009-04-16] o BETA: Added NormExpBackgroundCorrection which does background correction according to the normal exponential model. It utilizes the limma package for this. The default settings give identical results as RmaBackgroundCorrection, which uses affy. o Made several modifications to computeAffinities() for AffymetrixCdfFile which allows us to compute affinities also for PM-only chip types, e.g. Gene 1.0 ST arrays: (i) added a different stream for PM-only (with NCs), (ii) left the PM+MM array code mostly untouched, and (iii) fixed some assumptions about the columns of the probe_tab file. o BUG FIX: The GcRmaBackgroundCorrection method would mix up PMs and MMs in the model estimation. This bug was introduced in aroma.affymetrix v0.3.4 (January 20, 2007). It was located to the internal bgAdjustGcrma() method. Version: 1.0.3 [2009-03-22] o BETA: Added GcContentNormalization2 which extends the generic AdditiveCovariateNormalization class. o BETA: Added abstract AdditiveCovariateNormalization. o BETA: Added AromaUnitGcContentFile and AromaUgcFile to hold GC contents. Version: 1.0.2 [2009-02-22] o Added getCdfBin() and getChipType() to DChipDcpSet. o Added findByChipType() and byChipType() to DChipCdfBinFile. Added argument fullname=TRUE to getChipType() of DChipCdfBinFile. o Added exportTotalCnRatioSet() to AffymetrixCnChpSet. o Wherever argument 'ram' exists, it defaults to the value of a global settings. To change the default, do for instance setRam(aroma.affymetrix, 10). o CLEAN UP: Removed the implementation of byChipType() for the AromaUnitTabularBinaryFile class that would scan annotationData/ for matching CDFs before deciding which file to use. That class should not depend on a specific platform. Now the implementation is solely in the aroma.core package. o CLEAN UP: Removed deprecated argument 'moreUnits' of fit() of ProbeLevelModel. Use argument 'ram' instead. Version: 1.0.1 [2009-02-13] o Added getAromaUnit{Total|FracB}CnFileSet() to SnpChipEffectSet, which uses protected exportTotalAndFracB() to SnpChipEffect{File|Set}. o ROBUSTNESS: Added support for optional validation/selection by the number of units/cells to all static byChipType() methods. This is done by specifying argument nbrOfUnits/nbrOfCells. o CLEAN UP: Suppressing warnings about "truncating string with embedded nul" in rawToChar() when using affxparser::readCcgHeader(). o CLEAN UP: Cleaned up the MatSmoothing class. o CLEAN UP: Cleaned up the AffymetrixCelSetTuple class. o BUG FIX: setMergeStrands() of SnpPlm and setCombineAlleles() of CnPlm did not update the setting of the PLM itself, only the settings of the underlying parameter files. SnpPlm itself, only only the underlying parameter files. Added getMergeStrands() to SnpPlm and getCombineAlleles() to CnPlm. o Package pass R CMD check and all redundancy tests. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UPDATES to aroma.core: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Version: 1.1.0 [2009-05-29] o New public release. No updates. o Package passes R CMD check on R v2.9.0 and all redundancy tests. Version: 1.0.8 [2009-05-25] o GENERALIZATION: The AromaTransforms class was generalized further to handle cases where the number of output files does not map one to one to the input files. Version: 1.0.7 [2009-05-18] o Added extractRawAlleleBFractions() for AromaUnitFracBCnBinaryFile. o Added exportFracBDiffSet() for AromaUnitFracBCnBinarySet. o Moved the Explorer class and its support files under inst/ from aroma.affymetrix to aroma.core. o Moved the AromaCellPositionFile class from aroma.affymetrix to aroma.core. o ADDED: Now all segmentByNnn() for RawGenomicSignals also returns so called 'aromaEstimates', which are additional parameter estimates, e.g. robust estimates of the standard deviation of all full-resolution CNs as well as per identified region. o CLEAN UP: Moved all file set specific classes and methods to the new R.filesets package. o MEMORY OPTIMIZATION: Where ever possible/applicable, we now use Arguments$getNumerics(), which, in R utils v1.1.5 and new, corces to doubles only if the input is not already doubles. This will lower the memory usage in some cases since an integers use 4 bytes and doubles 8 bytes. This also save disk space if object is saved to disk, e.g. a DNAcopy fit object with integer genomic positions instead of double ones, save approx 5-7% disk space. o ROBUSTNESS: Now allocate() for AromaTabularBinaryFile first allocates a temporary file which is then renamed. This makes the file allocation more atomic, and therefore less error prone to interrupts etc. o ROBUSTNESS: Now indexOf() for UnitNamesFile assert that exactly one of the 'pattern' and 'names' arguments is given. It also gives an informative error message if 'pattern' is a vector. o ROBUSTNESS: Now all arguments that are expected to be exactly one character string (not an empty vector or a vector of length two) are asserted to be that too. This closes some potential bugs. o EXCEPTION HANDLING: All methods that modifies an existing file, are now asserting that the file permissions allow modifying it, and if not gives a clear error message that this is the case. o BUG FIX: allocateFromUnitNamesFile() for AromaUnitSignalBinaryFile would not call generic allocate() but the one for this class. o BUG FIX: extractMergedRawCopyNumbers(..., unshift=TRUE) would estimate the relative shifts between platforms using smoothed CNs over the genomic region defined by the first data set. Now it is done over the region defined by the union of all data sets. The impact of this bug should be neglectable or zero. Version: 1.0.6 [2009-05-14] o Now binnedSmoothing() of RawGenomicSignals uses weighted estimates (by default) if weights exists. o Added RawAlleleBFractions() extending RawGenomicSignals. o Added extractCopyNumberRegions() for profileCGH, DNAcopy, and HaarSeg segmentation object. Before they were in aroma.affymetrix. o Added segmentByCBS(), segmentByGLAD(), and segmentByHarSeeg() to RawGenomicSignals, which all support weights if the underlying segmentation method does. To date, it is only CBS and HaarSeg that supports weights. These methods also support memoization. o Added extractRegion() to RawGenomicSignals. o Added getWeights() and hasWeights() to RawGenomicSignals. o Added {add,subtract,multiply,divide}By() for RawGenomicSignals all utilizing support method applyBinaryOperator(). o ALPHA: Added classes GenericDataFile{Set}List. o ALPHA: Added class AromaUnitTotalCnBinaryFileList with methods extractRawCopyNumbers() and extractMergedRawCopyNumbers(). o SPEED UP: Now TextUnitNamesFile caches all unit names in memory. o BUG FIX: Now aroma.core works with the IRanges and grid packages, regardless on the order they were loaded. o BUG FIX: getPlatform() of TextUnitNamesFile would sometimes return a list of length one, instead of an single character string. o BUG FIX: extractSubset() of RawGenomicSignals did not recognize all locus fields. Version: 1.0.5 [2009-05-10] o Now getOutputDataSet() of AromaTransform returns a data set with files ordered such that the fullnames are ordered the same way as the input data set. Suggested by Xin (Victoria) Wang at UC Berkeley. o Now getOutputDataSet() of AromaTransform scans for the output data files with fullnames matching those of the input data set. This is one step closer to being able to batch process subsets of data sets when the method is, say, a single-array method. o Now static fromFiles() of GenericDataFileSet supports empty data sets. o Now readDataFrame() of AromaUgpFile and AromaUnitTabularBinaryFile accepts rows=integer(0). o Added abstract class AromaUnitChromosomeTabularBinaryFile to make it easier to setup up new annotation file formats based on chromosomes. AromaUgpFile is now inheriting from this class. getUnitsOnChromosomes() now returns a list stratified by chromosome. o Added extractByChromosomes() for AromaUgpFile. o Added argument 'translate' to getColumnNames() of TabularTextFile. o UPDATE: Replace argument 'robust' of colBinnedSmoothing() with a more generic 'FUN' argument. The default arguments give identical results. o BUG FIX: Our internal interleave() for Image (defined by EBImage) gave 'Error in z[idxOdd,, ] : incorrect number of dimensions'. This was because internal image structure of the Image class changed (back) to being a 2-dim array. Now interleave() handles both 2d and 3d arrays. o BUG FIX: lines() of RawGenomicSignals did not recognize x/yScale. o BUG FIX: as.character() of GenericDataFile would throw 'Error in sprintf("%d", getFileSize(db, "numeric")) : use format %f, %e, %g or %a for numeric objects' whenever the file size is returned as a double, which happens for very large files (> 2^31-1 bytes). o BUG FIX: as.character() of GenericDataFileSet would throw an error if the data set was empty, because then there was no path. o Package passes R CMD check on R v2.9.0. Version: 1.0.4 [2009-04-07] o BUG FIX: getUnitNames(..., units=NULL) of TextUnitNamesFile would make the object believe there are zero units in the file. Thanks Shermane Teo at the National University of Singapore for reporting this. o BUG FIX: binnedSmoothing(..., byCount=TRUE) of RawGenomicSignals would give error "[...] object "ys" not found". o BUG FIX: When passing a single data points to colBinnedSmoothing(), it would throw the exception: "Range of argument 'by' is out of range [0,0]: [<by>,<by>]". Version: 1.0.3 [2009-03-23] o Added the TextUnitNamesFile class. Version: 1.0.2 [2009-02-26] o Added argument 'units' to extractRawCopyNumbers() of AromaUnitSignalBinaryFile. o Added RawGenomicSignals which RawCopyNumbers now inherits from. o Added readDataFrame(..., units=NULL) to AromaUnitSignalBinaryFile. o Added optional argument/field 'name' to RawCopyNumbers, which is also used by SegmentedCopyNumbers when querying the "truth" function(s) for the copy-number state. This makes it possible to use one (conditional) truth functions for all samples. o Added hasBeenModified() to GenericDataFile. o Now hasTags(..., tags) of GenericData{File|Set} splits the 'tags' argument. o Now RawCopyNumbers() takes RawCopyNumbers objects as input. o Now getChecksum() of GenericDataFile caches results unless the file has been modified since last time. o Now as.character() of GenericDataFile also reports the exact file size in case the file size is reported in kB, MB, etc. It also tries to report the relative pathname rather than the absolute. Version: 1.0.1 [2009-02-12] o Now byName() of AromaUnit(FracB|Total)CnBinarySet searches rawCnData/ then cnData/. o Added SegmentedCopyNumbers class. o Added various smoothing methods to RawCopyNumbers. o Added colBinnedSmoothing() and colKernelSmoothing(). o Added getAromaUgpFile() to UnitNamesFile. o Added shakyText(). o Added static byChipType() to UnitNamesFile. o Added argument 'fullname' to getChipType() of AromaUnitSignalBinaryFile. o Now argument 'files' in extract() of GenericDataFileSet can also be a vector of string. o ROBUSTNESS: Added support for optional validation/selection by the number of units/cells to all static byChipType() methods. This is done by specifying argument nbrOfUnits/nbrOfCells. This is intend for internal use only. o ROBUSTNESS: Added a sanity check to getAromaUgpFile() of UnitNamesFile and AromaUnitSignalBinaryFile, which asserts that the number of units in the located UGP file match that the number of units in the data file. o ROBUSTNESS: Now findAnnotationData() always returns pathnames ordered by the length of their fullnames. Before this was only done if 'firstOnly=TRUE'. o ALPHA: Added support for "smart" (e.g. "*") subdirectories in static findByName() of GenericDataFileSet. --~--~---------~--~----~------------~-------~--~----~ When reporting problems on aroma.affymetrix, make sure 1) to run the latest version of the package, 2) to report the output of sessionInfo() and traceback(), and 3) to post a complete code example. You received this message because you are subscribed to the Google Groups "aroma.affymetrix" group. To post to this group, send email to aroma-affymetrix@googlegroups.com To unsubscribe from this group, send email to aroma-affymetrix-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/aroma-affymetrix?hl=en -~----------~----~----~----~------~----~------~--~---