Changes in version 2.18.2                        

    o   Added parallel running for ebGSEA function. And allow it to
	return enriched gene list.

                       Changes in version 2.17.3                        

    o   Fixed bug in runCombat, as some factors are numeric format.

                       Changes in version 2.15.1                        

    o   Added scree plot into champ.SVD() function.

                       Changes in version 2.13.2                        

    o   Changed ebayesGSEA function with a new name as ebGSEA, and
	added KPMT function in it.

                       Changes in version 2.8.10                        

    o   ChAMP paper get published on Bioinformatics.

    o   Fixed CSS problem in vignette, it's actually not a bug!.

                        Changes in version 2.8.8                        

    o   Added "force" parameter in champ.load(), which can be used for
	"minfi" loading method, if your data comes from different
	arrays, force parameter would allow minfi's read.meth.exp
	function to extract their commmon probes and continue analysis.

                        Changes in version 2.8.7                        

    o   Make champ.import() more robust for modifed csv file.

                        Changes in version 2.8.5                        

    o   champ.DMP() works on numeric variable now

    o   champ.DMP() do pairewise comparison between each two
	categorical phenotypes.

    o   goseq was replaced by gometh.

    o   DMP.GUI() is modified heavily.

    o   SVD plot added legend.

    o   "minfi" loading method fixed.

    o   vignette of ChAMP and github Demo pages updated.

    o   Added some figures from GSE40279 in vignette.

                        Changes in version 2.8.3                        

    o   Updated zzz.R file, which means the loading messages would be
	different.

    o   Fixed a warning in champ.load.Rd file.

    o   Fixed bug in champ.filter(), if filerDetP is false, update pd
	part would faile because of lacking of RemainSample variable.

                        Changes in version 2.8.2                        

    o   Updated EPIC annotation to B4 version. The B4 version is
	downloaded from illumina website.

    o   Added one new parameter "method" in champ.load() function,
	which allows user to choose which method they want to use to
	read data. ChAMP or Minfi.

    o   champ.filter() has been totally recoded, now user can do any
	filtering on any data set they want. Merely champ.filter() is
	focused to take champ.import() result as input and generate
	filtered beta value for future analysis.

    o   Provide Whole New function champ.import() to read IDAT file to
	R, which is similar to minfi's read.meth.exp() function.

    o   Added more strict checking in champ.runCombat(), now
	champ.runCombat() would check if your variable and batches
	conflict with each other.

    o   Removed some useless code in champ.DMR() to make it faster.

                        Changes in version 2.8.1                        

    o   Added impute option for champ.load().

    o   Add ProbeCutoff and SampleCutoff parameters in champ.load().

    o   Added Demo on github: In respond to our reviewer's question and
	to make users have better understanding on our package, we
	processed ChAMP fully on some data sets and saved all messages
	shown during processing. We upload these information to
	[github](https://github.com/JoshuaTian/ChAMPDemos).

                        Changes in version 2.8.0                        

    o   DMRcate pacakge get updated, Error like "Error in if (nsig ==
	0) { : missing value where TRUE/FALSE needed" has been solved.

    o   In champ.load(), instead of replacing all 0 and negative value
	into 0.0001, we relplace them as smallest positive now.

    o   Fixed warnings() in GUI() functions.

    o   In champ.runCombat() function, removed restriction on factors
	like Sample_Group. Also, added "variable" parameter so that
	user may assign other variables other then "Sample_Group".

    o   Modified champ.DMR() function, for ProbeLasso, there is no need
	to input myDMP anymore, ProbeLasso function would calculate
	inside the function.