Changes in version 3.12.0: o neqc(), nec() and normexp.fit.control() now give user-friendly error messages when no negative control probes or no regular probes are found. Changes in version 3.10.0: o New function voom() allows RNA-Seq experiments to be analysed using the standard limma pipeline. An RNA-Seq case study is added to User's Guide. o treat(), roast() and mroast() can now estimate and work with a trend on the prior variance, bringing them into line with eBayes(). o barcodeplot() and barcodeplot2() merged into one function. o removeBatchEffect() can now correct for two batch factors. o plotMDS is now an S3 generic function. This allows MDS plots to be redrawn with new labels without needing to repeat the distance or scaling calculations. New S4 class "MDS" to hold the multidimensional scaling information output from plotMDS. o getEAWP() now gets probe annotation from the expression rownames of an EList object, if no other probe annotation is available. o topRomer() now ranks gene sets by secondary columns as well the primary criterion specified, to give a more meaningful ranking when the p-values are tied. o wilcoxGST() now accepts signed or unsigned test statistics. Change to p-value calculation in geneSetTest() when rank.only=FALSE to avoid zero p-values and follow recommendation of Phipson and Smyth (SAGMB, 2010). o plotMA() now recognizes ElistRaw and EList objects appropriately. o Default span for normalizeCyclicLoess increased from 0.4 to 0.7. Speed improved when weights=NULL. o Weaver case study (Section 11.5) in User's Guide is updated and rewritten. Data classes ElistRaw and Elist now described in the quick start section of the User's Guide. Other minor updates to User's Guide. o Bug fix for normalizeBetweenArrays() when object is an EListRaw and method="cyclicloess". Previously this function was applying cyclicloess to the raw intensities, then logging. Now it logs first, then applies cyclicloess. o Bug fix to avereps() for EList objects x when x$other is not empty.