Changes in version 1.21:

    o   Backporting following change from 1.23: Fixed as() (coercion) from
	 RGChannelSetExtended to RGChannelSet, to support the argument
	 extended=TRUE in read.matharray(). The core issue is the
	 new("RChannelSetExtended") is an invalid object because it does not
	 have correct elements of the assay slot.  Instead of addressing
	 this, I used a check for ncol=0, nrow=0 in the coercion function
	 which asssumes the presence of correctly named assays. Original
	 issue report by Stewart Morris <swmorris@exseed.ed.ac.uk>.

    o   Backporting following change from 1.23: Improved (made prettier) the
	 printing of messages in read.metharray() and friends.

    o   Moving RGChannelSet, MethylSet and RatioSet from building on eSet
	 (from Biobase) to SummarizedExperiment (from SummarizedExperiment).
	 Most important changes are that the constructor functions now uses
	 the argument colData instead of pData; some of them have more
	 arguments.  The updateObject methods have been extended to update
	 to the new class backend.  While the pData, sampleNames,
	 featureNames methods still work, we recommend (at least for package
	 writers) to move to colData, colnames and rownames.

    o   Reverted the bugfix to preprocessQuantile mentioned under news for
	 version 1.19. Our fix was wrong; the original code did not have a
	 bug. Thanks to users who reported issues with the function
	 (Frederic Fournier and David Martino).

    o   bugfix for getSnpBeta for subsetted (and combined) RGChannelSets
	 (reported and diagnosed by Warren Cheung).

    o   Accessing the manifest or annotation now fails for an 'unknown'
	 array.

    o   We now support gzipped IDAT files.

    o   Fixed a bug in read.metharray() which resulted in an error in some
	 situations when running the function with argument force=TRUE to
	 read IDAT files of different length.  Reported by Maria Calleja
	 Cervantes <mcalleja@idibell.cat>.

Changes in version 1.19:

    o   preprocessNoob gets a dyeMethod argument which now allows for true
	 single sample processing.

    o   combineArrayTypes is added; the intention is to be able to combine
	 450k and EPIC array data at the RGChannelSet level.

    o   Support for early access IDAT files form the EPIC array.

    o   message() is now used instead of cat().

    o   Some functions moved from deprecated to defunct.

    o   Addressing a bug in preprocessQuantile which led to reduced
	 performance for Type I probes when run with default paramters
	 (stratified=TRUE).  Users are strongly encouraged to update to the
	 latest version (1.19.7 or greater) and rerun the function.

    o   Extended combineArrayTypes to deal with control probes with the same
	 address, but different characteristics (Color, Type, ExtendedType).
	 Discussions with Illumina support reveals that, for control probes,
	 same address is same probe.

    o   Extended combineArrayTypes to support [Genomic](Methyl|Ratio)Set.

    o   Fixed a bug that made detectionP fail with an error if used on only
	 1 sample.

    o   Fixed a bug in read.metharray where we assumed a certain ordering is
	 consistent in IDAT files from different samples. This is no longer
	 assumed, but as a consequence the function is a bit slower.  Bug
	 (indirectly) observed by Giovanni Calice <giovcalice@gmail.com>.

    o   Changing internals of MethylSet() to follow recent changes in
	 assayDataElement<- in Biobase 2.33.1.

    o   Changing internals of MethylSet() (again) to follow recent changes
	 in assayDataElement<- in Biobase 2.33.2.

    o   Fixing issues with combine() on various classes where pData columns
	 doesn't have the same class. This translates to fixes for
	 combineArrays and estimateCellType.

    o   estimateCellCounts gets a referencePlatform array (defaulting to
	 450k) and now silently converts the input data to the desired
	 platform using convertArray.

    o   Major refactoring of the annotation packages to reduce memory
	 consumption.

Changes in version 1.15:

    o   Adding testing for preprocessNoob, preprocessFunnorm.

    o   Fxing some verbose output of preprocessNoob.

    o   Adding non-exported function .digestVector for testing.

Changes in version 1.13:

    o   read.450k.exp has support for argument base when targets is
	 supplied.  Thanks to Brent Pedersen <bpederse@gmail.com> for
	 noticing this and providing an initial fix.

    o   changed the default behaviour of read.450k.exp.  If called using a
	 targets argument created by read.450k.sheet, you should not also
	 give it a base argument (which was always superfluous).

    o   Some NAMESPACE imports fixes.

    o   getGenomicRatioSetFromGEO added to read directly from GEO and create
	 a GenomicsRatioSet. Thanks Tim Triche for writing the original
	 function.

    o   makeGenomicRatioSetFromMatrix added. This function turns a matrix
	 into a GenomicRatioSet. The 450K feature IDs need to be supplied or
	 in the rownames of the matrix.

    o   makeGenomicRatioSetFromMatrix added to convert matrices to
	 GenomicRatioSets. This can be useful for reading in files with beta
	 values and turning into object that can be directly passed to
	 bumphunter and blockFinder.

    o   readGEORawFile added to read raw intensity files provided as
	 Supplementary Material on GEO. The files include the unmethylated
	 and methylated signals. The new function returns a GenomicMethylSet
	 which permits you to seamlessly apply minfi preprocessing
	 functions.

    o   readTCGA is wrapper for makeGenomicRatioSetFromMatrix that reads in
	 files in the TCGA format. The function is very specific to this
	 format.

    o   Minor coding fixes including some NAMESPACE issues, missing pData<-
	 methods, replace require() with requireNamespace().

    o   cpgCollapse now works for GenomicRatioSets since it no longer
	 attempts to summarize CN data when passed a GenomicRatioSet.

    o   estimateCellCounts now works on only 2 cell types.

    o   Various NAMESPACE fixes.

    o   the gaphunter function by Shan Andrews has been added. We welcome
	 Shan as a contributing author.

Changes in version 1.11:

    o   Updated CITATION.

    o   Added dropLociWithSnps for easy exclusion of certain methylation
	 loci.

    o   Add getAnnotationObject for easy printing of contents of the
	 annotation object.

    o   Changes in 1.10 imported into 1.11.

    o   Fixed an issue with bumphunter calling the bumphunter package in a
	 wrong way.

    o   Added getOOB and getSnpBeta convenience functions for accessing the
	 OOB probes and the SNP probes.

    o   read.450k.sheet now forces a column named Slide to be character.

    o   The NOOB background correction method is now available throguh
	 preprocessNoob.

    o   One can now supply the permutations to be used in permutation
	 analysis. This is useful for cases in which the total number of
	 possilbe permutations is small and one wants to use them all or in
	 cases in which one wants to assure balance, for example, between
	 cases and controls.

    o   The bumphunter method now has the option to create null
	 distributions using a bootstrap approach.

    o   Fixed a man page issue.

    o   Added GitHub URL to DESCRIPTION.

    o   Functional normalization now supports background correction by NOOB
	 (see preprocessNoob); this is recommended (and the new default).

Changes in version 1.10:

    o   Modified read.450k.sheet to ignore case when identifying the data
	 header "[DATA]".  This addresses an issue with sheets generated by
	 some Illumina instruments.  Reported and partial fix provided by
	 the github user nilsigem.

Changes in version 1.9:

    o   Importing the changes from 1.8 into 1.9.

    o   Added the withColor argument to the getProbeType function, which
	 allows the return of "IGrn", "IRed", "II", instead of only "I",
	 "II".

    o   Added asList argument to getControlAddress to return result as a
	 list.

    o   Moved reshape from Depends to Imports.

    o   Dramatic improvement in memory usage of preprocessRaw.

    o   Updated CITATION, the minif paper is in press.

    o   Fixed bug with mapToGenome(..., mergeManifest = TRUE) reported by
	 Dale Watkins <dale.watkins@sahmri.com> and Allegra A. Petti
	 <apetti@genome.wustl.edu>.

    o   Fixed bug with mapToGenome(rSet) with rSet being a RatioSet with the
	 CN set to NULL reported byAllegra A. Petti
	 <apetti@genome.wustl.edu>.

    o   Added preprocessFunnorm, a new preprocessing method.

    o   Improvements to the speed of getAnnotation by Martin Morgan
	 <mtmorgan@fhcrc.org>.

Changes in version 1.8:

    o   preprocessQuantile(object) would fail if object was a
	 GenomicMethylSet.  This is now fixed.

    o   Cleanup of Rd markdown in various help files.

    o   estimateCellCounts would throw an error.  This is now fixed.  The
	 function arguments have changed.

    o   Bug in cpgCollapse led to incorrect results. Your output is affected
	 if table(granges(output[[1]])$type) is all 'OpenSea'.  Reported by
	 Florence Cavalli <florence@ebi.ac.uk>.

    o   Encapsulated the example for estimateCellCounts() in 'dontrun', to
	 disable it on the build servers.

    o   preprocessQuantile would work as if removeBadSamples=TRUE no matter
	 the value of the argument.

    o   Fixing replace bug in fixMethOutliers; it would not work on the
	 output of preprocessSWAN.  Reported by David McGaughey
	 <david.mcgaughey@nih.gov>.

    o   The function mapToGenome would return something that looked like an
	 unordered GenomicMethylSet.  Actually, loci were correctly ordered
	 within chromosomes, the issue had to do with whether the
	 chromosomes were ordered as chr1, chr2, chr3 (used in minfi) or
	 chr1, chr10, chr11 (lexigraphically).  Reported by Florence Cavalli
	 <florence@ebi.ac.uk>.

    o   Switched to using new author format in DESCRIPTION.

Changes in version 1.7:

    o   Added getMethSignal(), a convenience function for programming.

    o   Changed the argument name of "type" to "what" for getMethSignal().

    o   Added the class "RatioSet", like "GenomicRatioSet" but without the
	 genome information.

    o   Bugfixes to the "GenomicRatioSet()" constructor.

    o   Added the method ratioConvert(), for converting a "MethylSet" to a
	 "RatioSet" or a "GenomicMethylSet" to a "GenomicRatioSet".

    o   Fixed an issue with GenomicMethylSet() and GenomicRatioSet() caused
	 by a recent change to a non-exported function in the GenomicRanges
	 package (Reported by Gustavo Fernandez Bayon <gbayon@gmail.com>).

    o   Added fixMethOutliers for thresholding extreme observations in the
	 [un]methylation channels.

    o   Added getSex, addSex, plotSex for estimating sex of the samples.

    o   Added getQC, addQC, plotQC for a very simple quality control
	 measure.

    o   Added minfiQC for a one-stop function for quality control measures.

    o   Changed some verbose=TRUE output in various functions.

    o   Added preprocessQuantile.

    o   Added bumphunter method for "GenomicRatioSet".

    o   Handling signed zero in minfi:::.digestMatrix which caused unit
	 tests to fail on Windows.

    o   addSex and addQC lead to sampleNames() being dropped because of a
	 likely bug in cbind(DataFrame, DataFrame).  Work-around has been
	 implemented.

    o   Re-ran the test data generator.

    o   Fixed some Depends and Imports issues revealed by new features of R
	 CMD check.

    o   Added blockFinder and cpgCollapse.

    o   (internal) added convenience functions for argument checking.

    o   Exposed and re-wrote getAnnotation().

    o   Changed getLocations() from being a method to a simple function.
	 Arguments have been removed (for example, now the function always
	 drops non-mapping loci).

    o   Implemented getIslandStatus(), getProbeType(), getSnpInfo() and
	 addSnpInfo().  The two later functions retrieve pre-computed SNP
	 overlaps, and the new annotation object includes SNPs based on
	 dbSNP 137, 135 and 132.

    o   Changed the IlluminaMethylatioAnnotation class to now include
	 genomeBuild information as well as defaults.

    o   Added estimateCellCounts for deconvolution of cell types in whole
	 blood.  Thanks to Andrew Jaffe and Andres Houseman.

Changes in version 1.5:

    o   Added unit testing for the preprocessing algorithms.

    o   Improved the speed of SWAN for large datasets.

    o   Added the new class "GenomicRatioSet".  It is akin to
	 "GenomicMethylSet" but instead of containing Meth and Unmeth it
	 contains M and/or Beta and copy number.

    o   We now depend on illuminaio instead of crlmm in order to get
	 readIDAT.

    o   Added unsrturl.bst to minimize dependences for running Sweave.

Changes in version 1.3:

    o   Updated preprocessSwan to fix a bug when mSet was not set to the
	 default value of NULL.  Specifically, now the "counts" tables is
	 used to construct "subset".

    o   Changed the function manifestNew() to IlluminaMethylationManifest().

    o   Added IlluminaMethylationAnnotation().

    o   Added placeholders for unit testing based on RUnit.

    o   Introduced a new show method for MethylSet and RGChannelSet, derived
	 from the eSet method in Biobase.

    o   The annotation slot of a MethylSet/RGChannelSet is now intended to
	 _not_ be a scalar, but instead have length 2 with components
	 'array' and 'annotation'.  This foreshadows introdution of
	 annotation packages for use with minfi.

    o   Reorganization of R files; rewriting of the man pages for MethylSet,
	 RGChannelSet.

    o   getMeth, getUnmeth, getBeta, getM are now methods.

    o   bug fix to qcReport thanks to Tao Shi.

    o   Changes to getBeta / getM, both in terms of which arguments the
	 methods take and how the values are computed.

    o   Changes to the manifest structure; it now has separate slots for
	 genotype probes and these probes are no longer part of a MethylSet
	 (using eg. preprocessRaw).  They can be accessed using
	 getProbeInfo(rgSet, type) with type equal to "SnpI" or "SnpII".

    o   Introduction of mapToGenome, getLocations and the new class
	 GenomicMethylSet.  man pages are reasonably complete, still need to
	 add examples to the vignette.  This will be a standard part of an
	 extended pipeline.

    o   Introduction of IlluminaHumanMethylation450lannotation.ilmn.v1.2
	 which contains some new annotation needed for
	 mapToGenome/getLocations.  This package will be split into several
	 packages moving forward, in an attempt to harmonize efforts by us
	 and Tim Triche.  getLocations/mapToGenome will stay the same.

    o   getControlTypes added (returns the different types of control
	 probes).

    o   GenomicMethylSet now inherits a number of methods including
	 granges(), start(), end() etc. from SummarizedExperiemnt.  They
	 have therefore been deleted from minfi.

    o   Bugfix to getLocations(..., mergeManifest = TRUE).  It now longer
	 throws an error.

    o   mapToGenome now returns a GenomicMethylSet ordered according to the
	 chromosome name ordering chr1,..,chr22,chrX,chrY,unmapped, the last
	 one not present if drop=TRUE (default).

Changes in version 1.1:

    o   Changed NAMESPACE file

    o   Defined constructors for MethylSet, RGChannelSet,
	 RGChannelSetExtended.

    o   Included a version number in the class definition for MethylSet and
	 RGChannelSet.  Old objects can be updated by calls of the form
	 updateObject(Mset).

    o   read.manifest (not exported) updated to include nCpGs.

    o   preprocessSwan was added.  Still work in progress.

    o   Changed background calculation in preprocessSwan.

    o   Added a section to the vignette describing preprocessSwan.

    o   Bug fix: ilogit2 is now in base (it used to be base e).  Thanks to
	 Time Triche, Jr <tim.triche@gmail.com>.

    o   Added and dcoumented the IlluminaMethylationAnnotation class; still
	 work in progess.

    o   Moved package vignette from inst/doc to vignettes.

Changes in version 0.99:

    o   Initial release to Bioconductor.

    o   Added NEWS file.

    o   Bugfix to vignette.

    o   readIDAT is now exported by crlmm, implying that we can import this
	 function through NAMESPACE.