20 March 2009: limma 2.16.5

- biocViews entry of Statistics changed to Bioinformatics
- Bug fix to rowname assignment for MAList and RGList objects
  containing matrices in 'other' component
- lmFit() warning message on NA coefficients is now more
  refined.  It now appears only when the coef vector is
  partially NA for some probes.
- Fix to gls.series() so that it does not fail when the
  weight matrix contains NA values.
- update to backgroundCorrect help page to reflect published
  papers.
- update to treat help page to reflect published paper.
- lmFit now looks for a design matrix in an MAList data object,
  if one exists.
- C code dynamic library is loaded when package is loaded
  rather than when it is attached, to enable other packages
  to import limma.  (Not user visible.)
- minor edits to geneSetTest, roast and 08Tests help files.

19 Jan 2009: limma 2.16.4

- fix to a toptable() bug, which caused t-statistics to be out of
  order when p<1 or lfc>0.

10 Nov 2008: limma 2.16.3

- fix to a toptable() bug which caused an error when user
  selected p<1 and lfc>0

23 October 2008: limma 2.16.2

- minor improvements to the help page for topTable and topTableF.
- bug fixes to the way that topTable() and topTableF() handle
  sort="none".

22 October 2008: limma 2.16.1

- minor updates to User's Guide to refer to R 2.8.0

22 October 2008: limma 2.16.0 (Bioconductor 2.3 Release Branch)

21 October 2008: limma 2.15.18

- refinements to barcodeplot() to make the graphic a bit prettier

20 October 2008: limma 2.15.17

- new function barcodeplot(), which gives a graphical
  representation of geneSetTest() using ranks.

15 October 2008: limma 2.15.16

- getLayout() with guessdups=TRUE can now handle values
  for ndups greater than 2.
- new function getDupSpacing() which determines duplicate
  spacing from a vector of gene IDs.
- getSpacing() now recognizes a new value "subarrays" which
  means that all the probes on an array are repeated in two
  or more subarrays.
- bug fix to removeBatchEffect(), which previously returned
  an error.

9 October 2008: limma 2.15.15

- the criterion for the "Active" column output by roast()
  is changed to be more discriminating.
- new method "mallowscp" for selectModel().

1 October 2008: limma 2.15.14

- minor improvements to several help files
- correction to the "bic" method of selectModel().

28 Sept 2008: limma 2.15.13

- more efficient memory management in normexp.c (not user-visible)
- argument bg removed from internal functions .normexp.m2loglik,
  .normexp.gm2loglik and .normexp.hm2loglik (not user-visible)

25 Sept 2008: limma 2.15.12

- substantial tidying up of normexp.fit() code, although very little
  of this will be visible to users.  The old pure-R normexp.fit() is
  removed and replaced by the function previously called
  normexp.fit.C().  The old method "neldermead" is now replaced by
  "saddle".  The old methods "bfgs", "nlminb" and "nlminblog" now
  replaced by "mle".
- all user-visible functions previously called by normexp.fit()
  are now removed including: dnormexp(), dnormexp.saddle(),
  normexp.m2loglik() and normexp.m2loglik.saddle().  There are
  now just 4 utility functions, none of which are exported from the
  limma NAMESPACE, namely .normexp.m2loglik, .normexp.gm2loglik,
  .normexp.hm2loglik and .bg.parameters.rma75.
- More comments added to C code supporting normexp.fit().  The
  source code file is renamed from find_saddle_theta2.c to
  normexp.c.
- backgroundCorrect() has a new argument normexp.method to
  specify the parametrization estimation method when for normexp
  background correction.  The options are "mle", "saddle",
  "rma" and "rma75".
- in read.maimages(), support added for ArrayVision data files
  with 'Artifact-removed' (ARM) density values.
- new function selectModel() which implements Akaike Information
  Criterion (AIC) or Bayesian Information Criterion model (BIC)
  selection between alternative linear models.
- new function alias2Symbol() to convert gene aliases to
  official symbols.  Uses the data packages org.Hs.eg.db etc.
- new arguments sort.by and p.value for topTableF().  This makes
  it more consistent with topTable().
- topTableF() now allows the input argument number to be larger
  than the number of rows of the fitted model object.  In this
  case the requested number is set to the number of available
  rows.
- non user-visible improvements to toptable() code.

21 August 2008: limma 2.15.11

- new option "none" for the sort argument of topTable().
- new function roast() which does rotation gene set testing for
  linear models.
- new function treat() which computes empirical Bayes moderated-t
  p-values relative to a minimum required fold change threshold.
- new function removeBatchEffects() which removes batch effects
  from microarray data.
- tableF() now gives a friendlier error message when the fitted
  model object doesn't contain F-statistics.

11 July 2008: limma 2.15.10

- Better treatment of array weights in linear modelling.
  lm.series() and gls.series() now treat array weights as a
  special case, when there are no missing values in the expression
  data and now probe-specific weights.  This means that the array
  weights are now incorporated into fit$cov.coefficients, meaning
  that contrasts.fit() will correctly take array weights into
  account when computing the contrast standard errors, which it
  did not do previously.  It also means that lmFit() is much faster
  when array weighting is used.
- Speed improvement to gls.series() when there are no missing
  values and no probe-specific weights.

16 June 2008: limma 2.15.9

- new capabilities and arguments for write.fit().  The argument
  method allows p-values to be adjusted globally instead of
  separately, and the argument F.adjust allows the F-statistic
  P-values to be adjusted.

11 June 2008: limma 2.15.8

- further bug fixes to getEAWP() when object is of PLMset class:
  weights and Amean components were not being set.

4 June 2008: limma 2.15.7

- new S3 generic function avereps() for averaging over irregularly
  spaced replicate spots.  A method is defined for MAList objects
  and a default method intended for matrices.

1 June 2008: limma 2.15.6

- gls.series() now preserves rownames (probe IDs) of the expression
  object.  This affects lmFit() when ndups>1 or block is non NULL.
  This makes gls.series() consistent with other fitting functions
  lm.series() and mrlm().

22 May 2008: limma 2.15.5

- fix bug introduced to plotMA() in version 2.13.6: plotMA()
  ignored array argument when object was of class RGList.
  Correct function now restored.

20 May 2008: limma 2.15.4

- Cleaning up of source code in find_saddle_theta2.c and
  corresponding calls in background-normexp-mle.R.  No user
  visible changes.  The C code now passes R CMD check without
  warnings, and superfluous utility functions are removed from
  background-normexp-mle.R

12 May 2008: limma 2.15.3

- The optimisation step of normexp.fit is now done in C, making
  a new function normexp.fit.C, speeding up the computation several
  fold.  normexp.fit.C() has two new methods available "nlminb"
  and "nlminblog" which compute maximum likelihood estimates.
  backgroundCorrect(method="normexp") now calls normexp.fit.C()
  with method="saddle".

8 May 2008: limma 2.15.2

- the following obsolete functions (deprecated Dec 2006 in favour
  of read.maimages) are now removed: m.spot, a.spot, read.matrix,
  read.series, rg.series.spot, rg.genepix, rg.quantarray, rg.spot

8 May 2008: limma 2.15.1

- fix bug introduced to plotMA() in version 2.13.6: plotMA()
  was not working for MArrayLM objects.  Function now restored.
- getEAWP() now gets probe names correctly from the rownames of
  exprs when object is of PLMset class.
- edits to read.columns help page to explain that some arguments
  cannot be passed to read.table through ... because they are
  already used by read.columns.

30 April 2008: limma 2.15.0 (Bioconductor 2.3 Branch)
25 April 2008: limma 2.13.10

- getEAWP() now gets probe names correctly from the rownames of 
  object when object is a matrix.

24 April 2008: limma 2.13.9

- normalizeBetweenArrays(method="vsn") now gives an error
  if object is an MAList.
- normalizeBetweenArrays(method="vsn") now uses vsnMatrix()
  when the data object is a matrix.

16 April 2008: limma 2.13.8

- bug fix to normalizeBetweenArrays(method="vsn").  When the
  function was updated on 14 December 2007 to use vsnMatrix,
  it had not been noticed that vsnMatrix returns log2 results
  whereas the older vsn function returned loge results.  The
  results returned by normalizeBetweenArrays(method="vsn") are
  again now log2, similar to before 14 December 2007.
- method option "neldermean" for normexp.fit() corrected
  to "neldermead"
- deprecated function splitName() removed
- the help page for backgroundCorrect edited for improved
  readability

26 March 2008: limma 2.13.7

- the function rlm.series(), deprecated in 2004, is now removed
- add comments in the geneSetTest help file to warn that the
  test assumes genewise independence. 

8 March 2008: limma 2.13.6

- Streamlining of plotMA() code.  plotMA() should now work correctly
  for any object class that can be coerced to a matrix, for example
  LumiBatch objects.
- lmFit() now warns if coefficients become inestimable due to
  missing values.
- Bug fix when matrix data object passed to lmFit() containing
  missing values.  The check for log-intensities vs log-ratios
  introduced 27 Oct 2007 did not remove missing values and
  hence produced an error.
- New function getEAWP() introduced to unify the treatment of
  different classes of microarray data objects as input to linear
  model functions such as lmFit(), arrayWeights() and
  printtipWeights().
- Class exprSet2 removed.

27 February 2008: limma 2.13.5

- All usage of Biobase's exprSet class removed or replaced with
  ExpressionSet.
- Fortran call in .vsimpleLoess() function updated.

13 February 2008: limma 2.13.4

- all uses of I() in data.frame() arguments removed and replaced
  with stringsAsFactors=FALSE.  This ensures that the appropriate
  columns in data.frames will have class "character" instead of
  "AsIs".
- arrayWeights() now gives nice error message if the number of
  arrays is too few to give statistically useful results.

2 January 2008: limma 2.13.3

- Section on Mutiple Testing Across Contrasts added to the 
  User's Guide.
- The bibTeX entry returned by citation("limma") now uses
  @incollection styole instead of @inbook, thanks to Joern Toedling.

14 December 2007: limma 2.13.2

- update normalizeBetweenArrays(method="vsn") to reflect
  changes in the vsn package version 3.4.1.
- additions to the help file for MArrayLM-class objects

27 October 2007: limma 2.13.1

- lmFit() now tries to guess whether a data matrix contains log-ratios
  or log-intensities.
  When the input data object is a matrix, it is not possible to know
  for certain whether the data are log-ratios or log-intensities, and
  so lmFit() did not set the component Amean in the MArrayLM output
  object.  lmFit() now sets Amean if the input data values are all
  positive, because the data are almost certainly log-ratios in that
  case.

8 October 2007:

Bioconductor Developmental Version 2.2: limma 2.13.0
Bioconductor Release 2.1: limma 2.12.0

25 Sep 2007: limma 2.11.14

- plot character and size can now be passed to volcanoplot()
  as arguments
- add backgroundCorrect(method="normexp") to automatic test
  suite (not user visible)

19 Sep 2007: limma 2.11.13

- bug fix for as.matrix.vsn.  This allows vsn objects from vsn2() to
  be used directly in lmFit.

8 Sep 2007: limma 2.11.12

- edits to loessfit.Rd to better acknowledge lowess and loess authors.

31 Aug 2007: limma 2.11.11

- correction to loessFit() because lowess() function now in stats
  instead of base.
- other documentation fixes to pass package check in R 2.6.0
- Ritchie et al (2007) reference added to User's Guide and to the
  backgroundCorrect and normexp help pages.

17 Aug 2007: limma 2.11.10

- topTable() and toptable() have new arguments p.value and lfc, allowing
  users to cut the gene list on adjusted p.value and fold change, rather
  than just taking a set number of genes as before.

22 July 2007: limma 2.11.9

- improvements to the numeric computations of dnormexp.saddle(), which
  is used by backgroundCorrect(method="normexp")
- new function normexp.m2loglik.saddle(), which is the same as
  normexp.m2loglik() but using the saddle-point approximation.
- normexp.fit() has a new argument 'methods'
- default for n.pts in normexp.fit() changed to NULL, meaning use all
  the points.  The rule used to choose the quantiles if n.pts is
  improved to give more nearly unbiased parameter estimators.

9 July 2007: limma 2.11.8

- contrasts.fit() now warns if row names of contrast matrix don't
  match column names of contrasts.
- plotMA3by2 has a new argument 'device' to specify the graphic format.

24 June 2007: limma 2.11.7

- decideTests(method="hierarchical") now passes the adjust.method down
  to the second (t-test) level of testing.  Previously the second level
  testing was always "holm".  The spelling is also corrected from
  "heirarchical" to "hierarchical".

8 June 2007: limma 2.11.6

- new argument n.pts for normexp.fit.  n.pts=2^10 becomes the default
  for method="normexp" in backgroundCorrect().  This decreases
  computation time and introduces some robustness.
- backgroundCorrect() now accepts a matrix argument.

30 May 2007: limma 2.10.5 and 2.11.5

- as.matrix method for vsn objects added.

18 May 2007: limma 2.10.4 and 2.11.4

- as.matrix methods for ExpressionSet and LumiBatch added to the
  limma NAMESPACE.

17 May 2007: limma 2.10.3 and 2.11.3

- added as.matrix method for LumiBatch class
- corrected as.matrix method for ExpressionSet class to allow that
  the assayData slot may be a list instead of an environment.

16 May 2007: limma 2.11.2

- fixed some non-matching braces '}' in .Rd files. (Not user-visible.)

1 May 2007: limma 2.11.1

- Bug fix to read.columns() to stop spurious warning message
  when text.to.search has length greater than one.

26 April 2007:

Bioconductor Developmental Version 2.1: limma 2.11.0
Bioconductor Release 2.0: limma 2.10.0

24 Apr 2007: limma 2.9.19

- Minor documentation bug fix: 'F.stat' to 'F' in MArrayLM.Rd

18 Apr 2007: limma 2.9.18

- User's Guide case studies updated for current version of limma.
  A couple of changes to Weaver case study: multiple testing method
  is now "global" instead of "nestedF", and heat diagram is removed. 

4 Apr 2007: limma 2.9.17

- bug fix to read.maimages() for source="arrayvision". Now reads
  arrayvision files again for the first time since version 2.3.1.

27 Mar 2007: limma 2.9.16

- new tests for topTable() added to limma-Tests.R
- bug fix to topTable(). sort="M" and resort.by="M" needed to be
  updated to sort="logFC" and resort.by="logFC". Also sort="AveExpr"
  and resort.by="AveExpr" are now allowed.

26 Mar 2007: limma 2.9.15

- bug fix to read.columns, to read SPOT files with a leading column
  of row numbers. Was failing because the number of headers was
  less than the number of columns.

10 Mar 2007: limma 2.9.14

- lmFit() was giving error with marrayNorm object, because of
  incorrect setting of Amean. Fixed.

24 Feb 2007: limma 2.9.13

- write.fit() was using write ambiguous column names for the coef,
  t-statistic and p-value when the MArrayLM object had only one
  column and these components were matrices with one named column.
  Now fixed.
- default changed in write.fit() to digits=3.

22 Feb 2007: limma 2.9.12

- lm.series() gls.series() were returning errors when the design
  matrix was not of full rank and the columns were names.  Bug fixed.

17 Feb 2007: limma 2.9.11

- changes in 2.9.10 broke read.maimages() for Agilent and generic
  source files.  Bug fixed.

12 Feb 2007: limma 2.9.10

- functions getColClasses() and namesInFun() removed and replacad
  with the new function read.columns().  read.columns() is a more
  generally useful function which is similar to read.delim() but
  reads specified columns only.
- Argument \dots added to all as.matrix methods for compatibility
  with R 2.5.0.

2 Feb 2007: limma 2.9.9

- normalizeRobustSpline() now works with only one print-tip group
- new function mergeScansRG()

5 Jan 2007: limma 2.9.8

- User's Guide sections on spot quality weights and quality assessment
  expanded.
- unnecessary backlashs removed from gsub() calls in protectMetachar()
- normalizeForPrintorder(plot=TRUE) now produces no output to agree with
  the documentation.

1 Jan 2007: limma 2.9.7

- old functions designed to read image data files into data.frames
  are now deprecated. This affects functions: read.matrix, rg.series.spot,
  read.series, m.spot, a.spot, rg.spot, rg.quantarray, rg.genepix.
- wtVariables() renamed to namesInFun()
- new argument other.columns for read.imagene()

19 Dec 2006: limma 2.9.6

- new function as.matrix.ExpressionSet
- section on array quality weights added to User's Guide

17 Nov 2006: limma 2.9.5

- correction of several minor typos.

5 November 2006: limma 2.9.4

- function .onAttach() replaces the old .First.lib()

27 October 2006: limma 2.9.3

- Changes to column headings from topTable: M is now logFC,
  A is now AveExpr
- lmFit() now supports ExpressionSet objects
- volcanoplot() now allows NULL value for 'names' argument
- new function strsplit2() replaces splitName().
- splitName() deprecated.

16 October 2006: limma 2.9.2

- NAMESPACE introduced to package. Funtion matvec() and vecmat() renamed
  to .matvec and .vecmat and are not exported. All objects with names
  not starting with "." are exported.

 4 October 2006: limma 2.9.1
 4 October 2006: limma 2.8.1

- read.maimages() with source="quantarray" now sets annotation columns.
- bug fix to read.maimages() with source="quantarray". Searching for
  "Begin Data" in 2nd and following files read too few lines.
- fix to unprotected "%" character in decideTests.Rd.

 4 October 2006: limma 2.9.0 (Bioconductor Developmental version)
 4 October 2006: limma 2.8.0 (Bioconductor Release 1.9)
21 September 2006: limma 2.7.17

- new arguments for vennDiagram() to allow colors and printing of
  multiple tests of counts on the same diagram.
- warning about lmscFit being "experimental" removed from lmscFit.Rd

14 September 2006: limma 2.7.16

- improvements to lm.series, gls.series and rlm.series to better preserve
  column names.
- topTable() with coef=NULL now ranks genes by F-statistic for all the
  contrasts.

11 September 2006: limma 2.7.15

- topTable() now accepts vector argument coef.  If length(coef)>1,
  topTableF() is called to produce a ranking by F-statistic.
- new arguments col and lwd for plotlines()

2 September 2006: limma 2.7.14

- normalizeWithinArrays() now uses asMatrixWeights() to process weights
  arguments.  This allows to the weights to be a vector of probe weights,
  or a vector of array weights, or a matrix of spot weights.
- weights argument of modifyWeights() now has a default value

2 September 2006: limma 2.7.13

- new argument lfc for decideTests() to require a minimum fold-change

30 August 2006: limma 2.7.12

- subsetting for MArrayLM revised so that contrast matrix is subsetted
  rather than design matrix.
- revision to writefit.Rd to clarify that p-value adjustment is by
  columns
- bug fix to plotlines()

30 August 2006: limma 2.7.11

- new argument ... added to write.fit()
- new function exprs.MA() to extract log-expression matrix from MAList
- array2channel() previously deprecated now removed
- new function plotlines()

27 August 2006: limma 2.7.10

- new argument 'coefficients' for contrasts.fit(). This provides a
  simple way to specify the contrast matrix when the contrasts are just
  a subset of the original coefficients.
- new function topTableF() to rank genes on the basis of F-statistics
- normalizeWithinArrays() was incorrect with method="composite"
  and weights=NULL, now fixed.
- makeContrasts() now gives informative error message if
  parameter names are not syntactically valid.
- edit eBayes.Rd to make meaning of F-statistic clearer

6 August 2006: limma 2.7.9

- new argument 'contrasts' for makeContrasts() which will accept a
  character vector of contrasts.
- the matrix produced by makeContrasts() now has named dimensions.

3 August 2006: limma 2.7.8

- CARMAweb reference added to User's Guide
- In read.maimages(), flush=TRUE added to all instances of read.table().
  This makes read.maimages() tolerant of spurious columns added to the
  end of data lines.

30 July 2006: limma 2.7.7

- wtflags() has new argument cutoff.  Argument w renamed to weight.
- new section Fitted Model Objects in User's Guide
- table of image analysis programs added to Section 4.4 of User's Guide
- read.imagene() now uses mean background instead of median if the auto
  segmentation method has been set.

27 July 2006: limma 2.7.6

- readImaGeneHeader() updated to allow for extraneous trailing white space
  in the lines of the data files.
- In geneSetTest() values "two.sided", "less" or "greater" are now
  permitted as synonyms for "either", "down" or "up".
- geneSetTest() now longer issues warning with type="t" and
  all positive values for statistic.
- new function as.matrix.PLMset. This allows lmFit() to work correctly on PLMset objects.
- Bob case study updated in Limma User's Guide.

22 June 2006: limma 2.7.5

- bug fix to read.maimages: remove mention of readBlueFuseHeader(),
  which is no longer a function.
- editing of RGList.Rd and MAList.Rd to improve clarity
- improvement to normalizeQuantiles() to reduce memory requirements

1 June 2006: limma 2.7.4

- decideTests() now preserves probe row names
- as.data.frame.MArrayLM now has ... argument conditionally in
  R 2.4.0 higher to fit in with change in R base.

29 May 2006: limma 2.7.3

- minor bug fix to kooperberg()
- fix to read.maimages(). Using readGenericHeader() to get column
  names was not working when sep or quote were different from
  defaults.  Now gone back to using scan() to read column names.
- new function plotFG() for foreground-background plots.

5 May 2006: limma 2.6.2 and 2.7.2

- fix to plotMA3by2() which was not passing on the setting of
  the zero.weights arguments to plotMA().

3 May 2006: limma 2.6.1 and 2.7.1

- bug fix to read.imagene(), which was trying to read too many
  data rows when there were multiple ImaGene fields.
  read.imagene() now attempts to sent printer layout for
  ImaGene files created using GAL layout files.

27 April 2006: limma 2.7.0 Bioconductor developmental version
27 April 2006: limma 2.6.0 Bioconductor release 1.8

20 April 2006: limma 2.4.15

- correction in User's Guide: definition of interaction in
  Weaver case study was incorrect.

13 April 2006: limma 2.4.14

- improved topTable.Rd to better explain differences between
  toptable() and topTable().
- read.maimages() was setting RG$ngrid.c incorrectly when source
  ="genepix" and the meta-grid layout could not be determined.
  Now fixed.

7 April 2006: limma 2.4.13

- changes to the argument list and defaults for geneSetTest()
  to make it more intuitive.
- in fitFDist(), the bounding of standard deviations away from
  zero now uses a smaller bound.
- new generic function avedups(), with methods for default
  and MAList object.
- read.maimages() now uses readGenericHeader() to get skip and
  column names for generic source files.
- readGenericHeader() now uses protectMetachar() so that special
  characters can be used in column headings.

5 April 2006: limma 2.4.12

- Non-user-visible change to the way that dimnames<-.RGList and
  dimnames<-.MAList are assigned, so as to pass RCMD check in R2.3.
- new function plotFB()
- read.maimages() no longer tries to guess ndups for GenePix data
  (was found to be unreliable for small boutique arrays).

10 March 2006: limma 2.4.11

- Now reads BlueFuse v3.2 image analysis output files correctly.
  The old function readBlueFuseHeader() is removed and replaced by
  readGenericHeader().

3 March 2006: limma 2.4.10

- limma now passes R CMD check in R 2.3.0dev
- usage of La.chol() in replaced by chol() in lm.R
- bug fix to topTable: separate raw and adjusted p-values (introduced 2.4.8)
  was failing when some p-values were missing.
- bug fix: in read.maimages(source="imagene") was confusing
  a data.frame of file names with a targets file
- editing and expansion of normalizeWithinArrays.Rd
- support for ScanArray Express added to read.maimages()

22 January 2006: limma 2.4.9

- New example using the sma mouse.data for arrayWeights()
- All the linear model functions now use asMatrixWeights(), so that
  they will accept vectors of probe or array weights in place of the
  full matrix of weights.
- new function asMatrixWeights() which will convert vectors of probe
  weights or array weights to a full matrix of weights.
- new argument 'maxratio' for arrayWeightsSimple().  This causes the
  iteration to stop when the ratio of largest to smallest weights
  becomes large.  The default tol also changed for arrayWeightsSimple().

20 January 2006: limma 2.4.8

- Use of parent=NULL in new.env() removed from makeContrasts(), because
  this use is deprecated in R 2.3.0.
- topTable now includes separate columns for raw and adjusted p-values
- when an MArrayLM object is subsetted, the targets frame no longer
  subsets and the design matrix subsets only on columns. Previously
  the design matrix was incorrectly using j to subset rows.
- bug fix to as.data.frame.MArrayLM when row subset is of length 1

3 January 2006: limma 2.4.7

- wtVariables() didn't work correctly when the variable names
  contained meta characters, now fixed.

2 January 2006: limma 2.4.5

- All functions normexp.*() now use simpler arguments:
  'x' instead of 'foreground' and 'background' and
  a vector argument 'par' instead of arguments for each parameter.
- normexp.fit() now uses a saddlepoint approximation to the normexp
  density and reverts to the Nelder-Mead optimisation method.
  This gives gives numerically reliable computations.
- new functions dnormexp() and dnormexp.saddle()
- arrayWeights() now returns a vector instead of a matrix
- bug fixes to arrayWeights(), now faster and returns more
  accurate weights
- new function arrayWeightsSimple()
- subsetting of RGList, MAList and MArrayLM objects by rownames
  now works correctly even if not all components have rownames
- S3 methods for dimnames<- now defined for RGList and MAList objects
- readTargets() now checks that Labels are unique before making row.names
- files argument of read.maimages() can now be a data.frame, assumed
  to be the targets frame.

29 November 2005: limma 2.4.4

- bug fix for decideTests() which still didn't work with
  adjust.method="BH"
- new S3 methods fitted() and residuals() for class MArrayLM

22 November 2005: limma 2.4.3

- bug fix: read.maimages(source="genepix.*") was failing when there
  was only one block of spots
- section on Paired Samples added to User's Guide

15 November 2005: limma 2.4.2

- note about bg.correct.rma added to normexpfit.Rd
- Swirl and ApoAi case studies in User's Guide updated for limma 2.4.1

14 November 2005: limma 2.4.1

- examples for lmFit expanded and those for lm.series, gls.series
  and mrlm removed
- instraspotCorrelation() output all.correlations renamed to
  atanh.correlations
- duplicateCorrelation() now returns atanh-correlations, output
  components renamed to atanh.correlations
- read.maimages(source="genepix") now uses X position column to 
  determine printer layout information

11 November 2005: limma 2.4.0

- fitFDist() now treats very small and zero variances in a unified
  way.  The change will change slightly the hyperparameter estimates
  and significance results produced eBayes().
- new option "rma" for method argument of backgroundCorrect()
- minor edits to User's Guide
- read.maimages() now uses check.names=FALSE to preserve annotation
  column names as input

9 November 2005: limma 2.3.7

- bug fix to ensure that makeContrasts() works correctly when level
  names happen to be the same as local variable names
- edited help files for lm.series, gls.series and mrlm to make clarify
  that they are utility functions called by lmFit
- edited lmFit.Rd to make clearer the role of correlation argument
- correlation argument in lmFit() now has no default value
- vennDiagram example now uses decideTests() instead of classifyTestsF()

6 November 2005: limma 2.3.6

- MAList subsetting now supports 'other' component
- cbind and rbind now support 'other' component in RGList and MAList objects
- limma now formally depends on R >= 2.2.0 (because of allowEscapes in read.table)
- editing of help files to clarify difference between decideTests() and classifyTests
- decideTests() failed with method="nestedF",adjust.method="BH", now fixed
- decideTests() now supports adjust.method="BY"

31 October 2005: limma 2.3.5

- kooperberg() now gives informative error message if input not RGList

27 October 2005: limma 2.3.4

- bug fix to merge.RGList and merge.MAList. These used to break there
  were any components to the data objects other than intensity matrices.

25 October 2005: limma 2.3.3

- read.maimages(souce="genepix.custom",verbose=TRUE) outputs background
  correction method again.
- calls to statmod:randomizedBlockFit changed to statmod:mixedModel2Fit
- deprecated function dupcor.series() removed

19 October 2005: limma 2.3.2

- normalizeMedianDeviations and normalizeMedians replaced by
  normalizeMedianAbsValues. New function resistant to floating underflow.
- default method for normalizeBetweenArrays changed to "Aquantile"

15 October 2005: limma 2.3.1

- read.maimages() now uses the colClasses argument to read.table, resulting
  in a several-fold speed improvement.  Changes courtesy of Marcus Davy.
- new path argument and slightly changed output names for plotMA3by2,
  to bring into line with imageplot3by2 changes
- fix to normexp.m2loglik to prevent infinite likelihoods
- fix to normexp.fit to prevent non-positive alpha
- kooperberg_old() deleted

11 October 2005: limma 2.3.0 Bioconductor developmental version
11 October 2005: limma 2.2.0 Bioconductor release 1.7

- kooperberg() now accepts an RGList object instead of requiring each gpr
  file to be read into a separate data.frame.  The old function is renamed
  to kooperberg_old()

6 October: limma 2.0.12

- formatting changes to User's Guide.  Guide converted to LaTeX report style.

2 October: limma 2.0.11

- update citation, installation and help sections of User's Guide

30 September: limma 2.0.10

- "fdr" changed to "BH" throughout as p.adjust() method
- default for topTable adjust.method changed to "BH"
- point size 20 and new path argument added to imageplot3by2
- fix errors in technical replication section of User's Guide
- normalizeWithinArrays now checks whether M or A are vectors

29 September: limma 2.0.9

- biocViews added to DESCRIPTION
- fix to normexp.signal to allow NAs in signal

18 September: limma 2.0.8

- readImaGeneHeader entirely re-written: now supports
  ImaGene 6.0 and multiple sub-array fields
- fixed documentation bug in normalizeWithinArrays.Rd:
  RG.MA produces unlogged intensities
- Koorperberg ref added to User's Guide
- methods package added to Depends field of DESCRIPTION file
- note added to dupcor.Rd about minimum number of arrays needed for
  duplicateCorrelation() to return statistically useful results.

26 August: limma 2.0.7

- new option source="genepix.custom" for read.maimages()
- new method "control" for normalizeWithinArrays()

23 August 2005: limma 2.0.6

- arrayWeights() was returning an error for PLMset objects, now works
  correctly on the chip level coefficients
- eBayes now returns F.p.value component as vector rather than matrix
- changes to write.fit to make it tolerant of not finding expected
  components such as Amean in fit object
- bug fix to as.data.frame.MArrayLM when the fit contains only one contrast
  and there are matrices stored as vectors
- several updates to Weaver case study in User's Guide:
     new url to download data,
     wt.fun error fixed,
     and work-around for R 2.1 bug which affects readSpotTypes()
- new sections on getting help and on citation in User's Guide

8 August 2005: limma 2.0.5

- Dentritic cell direct comparison example in User's Guide now uses modelMatrix()
- arrayWeights() now includes full "reml" option
- modelMatrix() was not giving helpful error message if 'targets' was missing
- normalizeWithinArrays(method="printtiploess") now gives informative
  error if layout is incompatible with data dimension

26 July 2005: limma 2.0.4

- the general form for 'columns' in read.maimages() introduced in limma 2.0.3
  caused an error with agilent input.  Now fixed.
- added Duffinck et al 2005 reference to User's Guide
- new option souce="genepix.median" for read.maimages()
- default value for source argument of read.maimages() is now NULL

18 July 2005: limma 2.0.3

- documentation on components Amean, F.stat and F.p.value added to MArrayLM.Rd
- columns argument of read.maimages() now can be arbitrary, provided the two foreground channels are included. Inclusion of background columns is now optional.
- support for BlueFuse files added to read.maimages()
- new function readBlueFuseHeader()
- re-wording revision of CITATION entry, now points to http://bioinf.wehi.edu.au
- normalizeWithinArrays(method="median") now uses a weighted median where appropriate
- new function weighted.median()
- bug fix to RGList subsetting: targets component was subsetted incorrectly with j but missing i
- small fix to readGPRHeader.Rd

20 June 2005: limma 2.0.2

- last mentions of designMatrix and classifyTests removed from help docs

20 June 2005: limma 2.0.1

- work around in eBayes() for pf(q,df1,df2=Inf) bug in R 2.1.0
- all mentions of rlm.series in help changed to mrlm
- New introductory chapters 04.Background and 08.Tests for the online
  help system.  Cleaning up of chapter system.
- Extensive clean-up of background correction functions based on the
  normexp distribution.  fit.normexp0 and m2loglik.normexp removed.
  Functions now called normexp.fit, normexp.m2loglik, normexp.grad
  and normexp.signal.
- deprecated functions designMatrix() and classifyTests() removed
- makeContrasts() now accepts expression- or character-valued variable arguments
- Weng et al (2004) and Uppalapati et al (2005) references added to User's Guide

2 June 2005: limma 2.0.0

- fix background correction bug in plotDensities(), Rb was subtracted twice
- changelog.txt used to refer to the Bionconductor NEWS log for
  changes prior to Dec 2003.  Since the NEWS file is no longer on the
  Bioconductor site, the early information has now been incorporated
  into this file.
- better starting value estimation for fit.normexp()
- convest() now checks that input p-values are between 0 and 1.

21 May 2005: limma 1.10.0

Same as limma 1.9.6. Version number bumped for Bioconductor devel repository.

5 May 2005: limma 1.9.6

- updates to arrayWeights() to better handle NAs, no change to API

2 May 2005: limma 1.9.5

- fix to regular expression in readGAL(), because R 2.1.0 follows stricter reg expression syntax
- update reference in User's Guide (within-array paper published 1 May 2005)

26 April 2005: limma 1.9.4

- further fix to bibtex references in User's Guide
- fix to [.MArrayLM when components are vectors rather than matrices
- added reference to lmscfit.Rd
- added comments about 'correlation' to lmfit.Rd

25 April 2005: limma 1.9.3

- updates to references in User's Guide
- syntax fix to TestResults.Rd
- change to wording of error message with decideTests(method="nestedF") and NA p-values

23 April 2005: limma 1.9.2

- edits to topTable.Rd and decideTests.Rd
- gls.series() now returns error when ndups>2 and block is non-NULL

14 April 2005: limma 1.9.1

- In read.maimages() and readImaGeneHeader: argument allowEscapes=FALSE
  added to use of scan() to prevent new "feature" in R 2.1.0
- new method as.data.frame.MArrayLM

6 April 2005: limma 1.9.0

- bug fix to getLayout2() when GAL-file has no header

6 April 2005: limma 1.8.23

- readImaGeneHeader now allows for headers up to 100 lines (previously 60)
- comments in Between Arrays Normalization of usersguide.pdf about non-negative background correction
- some additions to venn.Rd, say explicitly now that Venn diagrams for no more than three contrasts
- corrections to code in Time Course Experiments section of User's Guide
- duplicateCorrelation() now traps error condition when all non-missing observations for a gene belong to same block
- topTable() default column name for gene names is now 'ProbeID'
- lmFit() captures rownames if object is matrix
- update to topTable.Rd on adjusted p-values

24 Feb 2005: limma 1.8.22

- note added to dupcor.Rd that the function may issue some warnings
- section added to User's Guide on "software packages using limma"
- corrected text version component of CITATION

8 Feb 2005: limma 1.8.21

- new version of arrayWeights() by Matt Ritchie, old version renamed to arrayWeightsQuick()
- modifications to m2loglik.normexp function and derivatives, grloglik() removed

2 Feb 2005: limma 1.8.20

- Note on possibility of adjusted p-values all equal to one added to topTable.Rd
- bug fix in normalizeRobustSpline when Sigma0==0, i.e., when method reduces to global spline
- CITATION updated to Bioconductor book chapter

1 Feb 2005: limma 1.8.19

- New BFGS version of fit.normexp by Jeremy Silver introduced,
  old Nelder-Mead version renamed to fit.normexp0.  Several new utilities
  functions compute the likelihood and gradient for the BFGS version.
- signal.normexp() more resistant to floating overflow/underflow
- decideTests() now allows for NA p-values for method="separate" or "global" (was giving wrong answers)
- summary.TestResults now allowed for NA p-values
- User's Guide starts to use bibtex, not fully converted yet
- new sections "Time Course Experiments" and "Separate Channel Analyses" in user's guide
- 'columns' argument no longer overwrites 'source' argument of read.maimages()
- readTargets() now looks for columns "Label" or "FileName" to make row.names if row.names arg is NULL
- removeExt() now coerces argument to character

13 Jan 2005: limma 1.8.18

- Bug fixes to lmFit with NoWts and df.residual equal to 0 or 1
- new section "Several Groups" in user's guide

10 Jan 2005: limma 1.8.17

- uniquegenelist() now preserves data.frame or matrix class. This fixes a bug when fitting a model to an exprSet object with duplicate probes.

9 Jan 2004: limma 1.8.16

- bug fix for lmFit() when no weights or NAs (NoWts) but non-estimable coefficients

8 Jan 2004: limma 1.8.15

- lm.series() and lmFit() now treat linear model with no weights or NAs (NoWts) as a special case, with great increase in speed for typical Affymetrix analysis
- lmFit() better recognises when an marrayNorm object has a non-empty list of gene names
- new User's Guide section of Adjusting for Multiple Testing

16 Dec 2004: limma 1.8.14

- fix !is.infinite bug in starting values for fit.normexp()
- tests for version of R removed from trigamma.inverse() and .vsimpleLoess()

9 Dec 2004: limma 1.8.13

- log and unlog arguments removed from MA.RG() and RG.MA().  RGLists are now always assumed to contain unlogged intensities.
- changes to plotDensities() to accommodate above
- bug fix to normalizeBetweenArrays with method="Gquantile" or "Rquantile".  Now changes only the A-values.

2 Dec 2004: limma 1.8.12

- fix to last section of User's Guide: quantile normalization code example was garbled
- bug fix in plotDensities(): object=MAList and log.transform=TRUE should give log not log-log scale

1 Dec 2004: limma 1.8.11

- log.transform=TRUE now the default for plotDensities(), corresponding changes to help doc
- new argument unlog for RG.MA()

23 Nov 2004: limma 1.8.10

- bug fix for summary.TestResults to remove reference to 'results'
- fit.normexp() now catches and reports optimization errors
- decideTests() now runs eBayes() if MArrayLM object found not to contain t-statistics

4 Nov 2004: limma 1.8.9

- new argument '...' for readTargets()
- intraspotCorrelation() now uses try() to tolerate some fit errors from remlscore()
- decideTests.Rd now longer says 'object' arg can be a matrix
- convest() now plots pi0 in title of plot for doplot=TRUE
- bug fix: changeLog() was always displaying 20 lines, also assumed "/" separator

29 Oct 2004: limma 1.8.8

- bug fix: lmFit() should call mrlm() not rlm.series()

29 Oct 2004: limma 1.8.7

- limma now officially requires R 2.0 (because of lazyloading)
- new function convest()
- new function arrayWeights()
- as.matrix() methods for all data classes

27 Oct 2004: limma 1.8.6

- new function volcanoplot()
- further editing of all sections of the User's Guide, especially the Weaver case study and the section on between-array normalization
- limmaUsersGuide() now outputs file format rather than URL format, i.e., no file:/// prefix
- slicker summary.TestResults

23 Oct 2004: limma 1.8.5

- limma.Rtex no longer refers to openVignette(), because this won't find the User's Guide
- html version of User's Guide removed
- limmaguideURL() replaced with limmaUsersGuide()
- aaa.R containing 'library("methods")' removed

22 Oct 2004: limma 1.8.4

- lm.series now preserves rownames in M (when ndups=1)
- updates to geneSetTest.Rd: (i) warning re use with F-like statistics, (ii) better example

20 Oct 2004: limma 1.8.3

- fix bug (introduced 1.7.8 or later) for read.maimages() with Agilent data
- further development of "Special Designs" section of User's Guide

14 Oct 2004: limma 1.8.2

- New section on "Special Designs" for User's Guide
- heatDiagram() now chooses col range more carefully so that red is associated only with positive fold changes and green with negative
- new argument 'mar' for heatDiagram()

10 October 2004: limma 1.8.1

- new argument other.columns for read.maimages()
- [.RGList and MA.RG() now accommodate an 'other' component
- many edits to text of User's Guide
- usersguide.pdf updated from usersguide.tex
- usersguide.html converted to usersguide.tex

8 October 2004: limma 1.8.0

- install.R file removed, replaced with LazyLoad: yes in DESCRIPTION
- MA.RG() and normalizeWithinArrays() now accept arguments 'bc.method' and 'offset'

4 October 2004: limma 1.7.9

- bug fix for lmFit() for PLMset object

25 September 2004: limma 1.7.8

- read.maimages() now tries to set $printer layout with Agilent data
- citation entry for limma
- contrasts.fit() now stops with error message if attempt to take contrast of non-estimable parameter
- further bug fix to contrasts.fit() when there are non-estimable coefficients
- new function changeLog()
- limmaguideURL() now uses system.file()
- heatDiagram() now separates primary up and down genes with white space

18 September 2004: limma 1.7.7

- new section on Installation for User's Guide
- bug fix to kooperberg() when background is zero
- new function geneSetTest()
- help doc for imageplot updated
- imageplot() now traps infinite z values and issues an informative error
- update to swirl example in User's Guide (warnings on p-values)
- update to ApoAI example in User's Guide (comments on scale normalization, more recent version of data object)

6 September 2004: limma 1.7.6

- bug fixes to decideTests() for method="heirarchical" and method="nestedF"

2 September 2004: limma 1.7.5

This version was the first posted to CRAN as well as to Bioconductor

- Now passes R CMD check under R 2.0
- example into User's Guide of wt.fun arg of read.maimages() using multiple columns
- rlm.series() deprecated in favor of mrlm()
- new function decideTests() for global multiple testing across probes and contrasts
- anova.MAList checks if design matrix has more than one column
- new function nonEstimable()
- lmFit() now reports non-estimable coefficients
- bug fix to contrasts.fit() when there are non-estimable coefficients

20 July 2004: limma 1.7.4

- normalizeWithinArrays(method="composite") now allows for NAs
- added fill=TRUE to read.table() in readTargets()
- fix bug causing dim on RGList, MAList and MArrayLM to return NULL when just one column
- write.fit() now works on MArrayLM objects when eBayes has not been used

3 July 2004: limma 1.7.3

- plotMA() now does single-channel MA-plots and accepts exprSet and matrix objects
- imageplot legend now rounds numbers to 1 decimal place
- GenePix Allocation List to GenePix Array List throughout

2 July 2004: limma 1.7.2

- in Windows, loading limma twice no longer creates extra "Vignettes" menus
- bug fixes to read.imagene() to account for changes to readImaGeneHeader() on 8 June

28 June 2004: limma 1.7.1

- cex=16,pch=0.2 now default in plotMA()
- cex=16,pch=0.1 changed to cex=16,pch=0.2 throughout User's Guide
- calls in normalizeRobustSpline() to rlm() now explicitly set prior weights

28 June 2004: limma 1.7.0

	All the linear modelling functions now pass the covariance matrix
	Of the estimated coefficients.	This improves support for models
	with covariance structures: random effects models for technical
	replicates, mixed models for log-intensity analysis of two color
	data, duplicate spots etc.  Lots of updates to help files.  pdf of
	User's Guide updated.  Reading of GPR headers now supported.

- pdf version of User's Guide updated
- estrogen case study re-done for User's Guide
- many .Rd files revised
- instances of missing() changed to is.null() is modelMatrix()
- lm.series(), rlm.series(), gls.series() and lmscFit() now save cov matrix of coefficients
- contrasts.fit() and classifyTestF() now use cov matrix of coefficients in data object
- changed many external links in .Rd files to reflect movement of functions from base to stats and graphics in R 1.9.0
- readGPRHeader() no longer assumes any known fields
- lmFit() now accepts PLMset objects
- changelog.txt moved to /inst/doc

21 June 2004: limma 1.6.14

- eBayes() checks design for full rank before computing F-statistic
- Fix link to convert:coerce in array2channel.Rd
- plotMA() now accepts MarrayLM objects
- new background correction method "normexp" and associated functions
- summary methods for RGList, MAList and MArrayLM

14 June 2004: limma 1.6.13

- changelog.txt (this file) included in /archive
- new function imageplot3by2() to write plots to files
- imageplot() now shows z-range legend
- new argument 'offset' for backgroundCorrect()

8 June 2004: limma 1.6.12

- updates to read.maimages() to handle new format SMD files
- periods removed from names of output from readImaGeneHeader()
- read.maimages() now calls readGPRHeader() to get skip records for each gpr file
- readGPRHeaders() renamed to readGPRHeader()
- readImageneHeaders() renamed to readImaGeneHeader()
- new function protectMetachar()
- new function trimWhiteSpace()
- update to kooperberg() help page example
- kooperberg() now returns RGList
- new function getLayout2() which reads GAL file headers
- fill=TRUE added to read.table() calls in read.maimages()
- "Quick Start" section in User's Guide now uses readTargets()
- new function readSMDHeader()
- new function tZscore(), updates to zscore help page
- bug fix for vennCounts() when no sig results for one or more contrasts
- eBayes() now returns F-statistics and corresponding p-values

29 May 2004: limma 1.6.11

- expanded function descriptions in 7.Diagnostics.Rd
- fix Satterthwaite spelling errors
- new function plotMA3by2()
- plotMA() no longer plots points with zero weight by default

25 May 2004: limma 1.6.10

- example and help page updates for lmscFit() and intraspotCorrelation()
- bug fix to array2channel() when Cy3/Cy5 are the only columns

24 May 2004: limma 1.6.9

- further comments on "vsn" normalization in the help entry for normalizeBetweenArrays()

22 May 2004: limma 1.6.8

- update contrasts.fit help page to cover general design matrices, lmFit()
- new argument 'design' for contrasts.fit

21 May 2004: limma 1.6.7

- update User's Guide to refer to marray package
- fix numerical bug in contrasts.fit for non-orthog design matrix

14 May 2004: limma 1.6.6

- new argument 'grep' for array2channel()
- Estrogen case study redone for user's guide.
- Made pdf of User's Guide.

14 May 2004: limma 1.6.5

- smooothVar() renamed to squeezeVar()
- array2channel() behaves nicely for zero-size data.frames
- dim() correctly returns c(0,0) for zero-size RGList, MAList, MArrayLM objects
- optional arguments in normalizeBetweenArrays() changed to ...
- default for 'ties' in normalizeQuantiles() changed to TRUE

10 May 2004: limma 1.6.4

- method="vsn" added to normalizeBetweenArrays()

7 May 2004: limma 1.6.3

- merge method for MAList objects
- functions FStat, dupcor.series, classifyTests now use match.call() and eval()
- clean up help entry for auROC()
- fix documentation bug for topTable(adjust=NULL)

19 April 2004: limma 1.6.2

- new documentation entry on single channel analysis
- new function intraspotCorrelation()
- lmsc.series() renamed to lmscFit(), now produces an MArrayLM object

7 April 2004: limma 1.6.1

- fix to printHead to treat factors as as vectors
- new argument cex for vennDiagram

6 April 2004: limma 1.6.0

- additional argument block to duplicateCorrelation, gls.series and lmFit to treat technical replicates as randomized blocks
- new methods Rquantile, Gquantile, Tquantile for normalizeBetweenArrays
- lmFit now extracts probe IDs from exprSet object
- Ecoli-lrp case study added to User's Guide

29 March 2004: limma 1.5.9

- backgroundCorrect(,method="edwards") now handles NAs
- bug fixes to backgroundCorrect(,method="edwards")
- classifyTests() renamed to classifyTestsF()
- classifyTestsP() now extracts degrees of freedom from object
- read.maimages no longer disallows source= and columns= together

20 March 2004: limma 1.5.8

- internal links added to contents section of User's Guide
- changed calling sequence in duplicateCorrelation() to randomizedBlockFit, limma now depends on package statmod >= 1.0.6
- two changes to plotPrintTipLoess() to avoid warning messages
- bug fix to duplicateCorrelation() to avoid test on rho[i] when NA

15 March 2004: limma 1.5.7

- fixes to write.fit() to accomodate TestResults class
- Sweave-style vignette added, as well as User's Guide
- new function array2channel() to targets files from by-array to by-channel representation
- removed warning about Cy3, Cy5 columns from readTargets()
- more general use of 'ref' in modelMatrix(), doesn't have to occur on every array
- target names are sorted in modelMatrix()
- designMatrix() renamed to modelMatrix(), designMatrix deprecated
- new function lmsc.series() for single-channel linear models

12 March 2004: limma 1.5.6

- tetragamma() changed to psigamma(x,deriv=2) with R version check

9 March 2004: limma 1.5.5

- bug fix to normalizeRobustSpline() to prevent error when spline basis becomes singular
- La.eigen() to eigen() in is.fullrank()
- case study Estrogen added to User's Guide

8 Mar 2004: limma 1.5.4

Now passes R CMD check in R 1.9.0dev.
- new argument 'mar' for vennDiagram(), reduces white-space for venn Diagrams
- new argument 'annotation' for read.maimages()
- fix bug in gls.series to ensure that spacing and weights arguments are passed to duplicateCorrelation()
- check for R version when setting package argument for .C and .Fortran calls

4 Mar 2004: limma 1.5.3

- new function smoothVar()
- fix 'ProbUID' typo for source="agilent"

26 Feb 2004: limma 1.5.2

- source="agilent" added to read.maimages
- bug fixed in heatdiagram() and heatDiagram() which caused over-printing when using par(mfrow)
- vennCounts() now uses table() for major computation and is therefore much faster
- new function FStat()
- S3 class "classification" replaced by S4 class "TestResults", including 'show' and 'summary' methods
- classifyTests(), classifyTestsT() and classifyTestsP() now produce "TestResults" objects

21 Feb 2004: limma 1.5.1

- removed package argument from calls to .C and .Fortran loess hooks in modreg package.  Edited package dependencies in DESCRIPTION file.  These two changes allow the code to pass R cmd check in both R 1.8.1 and R 1.9.0 (dev) and allows the development and release versions of limma to be consolidated.

30 Dec 2003: limma 1.5.0 (Bioconductor devel version only)

- bug fix for designMatrix() (was giving wrong matrix when common reference was Cy5
  for first array)
- bug fix to printorder() with spacing="topbottom" (was returning vectors of wrong
  length)
- new function modifyWeights()
- designMatrix() now uses zapsmall() to eliminate small non-zero entries
- readGAL() now sorts GAL files into standard order if they are not already
- read.maimages() function now sets the genelist directly from the gpr files, so
  readGAL() will usually no longer be required
- new function auROC() to compute exact area under ROC

18 Feb 2004: limma 1.3.18

- fix bug in duplicateCorrelation() which was not finding the M matrix when object was not an MArrayLM

17 Feb 2004: limma 1.3.17

- new argument 'resort.by' for toptable() and topTable()

16 Feb 2004: limma 1.3.16

- changes to loessFit() to avoid errors with small numbers of observations
- argument 'path' added to readSpotTypes() and readTargets()
- check in duplicateCorrelation() for correlation less than -1
- more expository comments added to 2.Classes.Rd

8 Feb 2004: limma 1.3.15

- duplicateCorrelation now uses randomizedBlockFit from the statmod package instead of gls from the nlme package.  This results in a several-fold increase in speed for duplicateCorrelation and dupcor.series.
- dupcor.series now deprecated
- getLayout() now has option to guess spacing between duplicate spots
- new function blockDiag() to form block diagonal matrices
- fix bug in imageplot() which caused overprinting of plots when using par(mfrow)

23 Jan 2004: limma 1.3.14

- new function poolVar to Welch-style pooling of sample variances with unequal variances
- new functions usersguideURL() and .First.lib() to implement limma entry in Windows drop-down Vignettes menu

18 Jan 2004: limma 1.3.13

- bug fix for write.fit() (was failing when adjust p-values with multiple contrasts)
- Updates to references - linear modelling paper now accepted for publication

30 Dec 2003: limma 1.3.12

- bug fix for designMatrix() (was giving wrong matrix when common reference was Cy5 for first array)

29 Dec 2003: limma 1.3.11

- bug fix to printorder() with spacing="topbottom" (was returning vectors of wrong length)
- new function modifyWeights()
- designMatrix() now uses zapsmall() to eliminate small non-zero entries

26 Dec 2003: limma 1.3.10

- readGAL() now sorts GAL files into standard order if they are not
  already
- read.maimages() function now sets the genelist directly from the gpr
  files, so readGAL() will usually no longer be required
- new function auROC() to compute exact area under ROC

20 Dec 2003: limma 1.3.9

- new function getSpacing()
- upgrades to printorder() to accommodate spacing by rows or topbottom
- corrections and updates to try to pass R CMD check in R1090dev, but
  cannot get around that package nlme seems to be broken.

13 Dec 2003: limma 1.3.8

- bug fix to backGroundCorrect(method="edwards")
- bug fix to plotPrintTipLoess()
- refinements to estimation of var.prior in ebayes and related functions
- coerce (setAs) method for RGList to exprSet2

7 Dec 2003: limma 1.3.7

rbind method for MAList objects

6 Dec 2003: limma 1.3.6

- fix to readSpotTypes() to read column names as.is
- new ... argument for readSpotTypes()
- rbind method for RGList objects
- bug fix for designMatrix()

1 Dec 2003: limma 1.3.5

- designMatrix() now has new arguments and now handles direct designs
- new function write.fit() for outputing results of linear model fit

18 Nov 2003: limma 1.3.4

- fix bug with exprSet object in lmFit()

15 Nov 2003: limma 1.3.3

- new function write.fit

11 Nov 2003: limma 1.3.2

- substantial upgrade to functions which identify and track control
  spots from the gene list including readTargets(), readSpotTypes(),
  controlStatus() and plotMA()
- Routine edits to User's Guide

Nov 05 2003: limma 1.3.1

- Bug fix for as.MAList
- Slightly changed comments in install.R and aaa.R

7 October 2003: limma 1.2.8

- new function readGPRHeaders()
- getImageneHeaders() renamed to readImageneHeaders

2 October 2003: limma 1.2.7

- read.imagene now allows for changes of header info between arrays
- bug fix in "minimum" method for backgroundCorrect() 

1 October 2003: limma 1.2.6

- new method "edwards" for backgroundCorrect()
- added html index of vignettes for R 1.8.0
- update to manual

27 Sep 2003: limma 1.2.5

- changes to read.maimages for ArrayVision data
- bug fix for wtIgnore.Filter with GenePix data
- new argument 'ties' for normalizeBetweenArrays. GKS

20 Sep 2003: limma 1.2.4

- ensure that limma passes rcmd check for R 1.8.0
- fix bug in toptable which affected the displayed A-values
- new option 'none' for method argument of backgroundCorrect()
- new argument 'mar' for imageplot()

15 Sep 2003: limma 1.2.0

- fix bug in quantarray read
- classifyTests now returns F-statistic

9 September 2003: limma 1.1.18

- new function plotDensities
- new section in User's Guide on single channel normalization, both by Natalie Thorne

6 September 2003: limma 1.1.17

- new backgroundCorrect options "half", "minimum" and "movingmin"

4 September 2003: limma 1.1.16

- new argument 'include' in vennCounts and vennDiagram
- Support for correlated design matrices added to contrasts.fit()

3 September 2003: limma 1.1.15

- new class exprSet2
- new function topTable
- New argument 'bin' in loessFit
- Fine tuning of interpolation settings used by loessFit.
  Corresponding changes to documentation

2 September 2003: limma 1.1.14

- read.maimages now supports SMD data files

29 August 2003: limma 1.1.13

- reorganization of heatdiagram and classifyTests functions

28 August 2003: limma 1.1.12

- add ArrayVision support to read.maimages
- Many other small changes including a backgroundCorrect method to
  ensure positive intensities
- Expansion of sections on reading data in User's Guide.

15 Aug 2003: limma 1.1.11

- added functionality to read Imagene data to read.maimages

4 August 2003: limma 1.1.9

- bug fix to loessFit
- Gradually introducing object orientated versions eBayes of ebayes,
  topTable of toptable, heatDiagram of heatdiagram

5 July 2003: limma 1.1.7

- support for much extra structure in RGList and MAList objects
- representation of MArrayLM class reverts to list
- support for marrayNorm and exprSet objects by lmFit
- new function makeContrasts to construct contrast matrices
- new function duplicateCorrelation
- classifyTests now supports MArrayLM objects
- new function classifyTests43 for simple t-stat thresholding
- new functions vennCounts and vennDiagram for Venn diagram plots
- update of LinearModels documentation to reflect changes

29 June 2003: limma 1.1.5

- subsetting methods for RGList and MAList objects
- Bug fix for cbind method for RGLists

28 June 2003: limma 1.1.4.

- New function designMatrix to construct design matrices for
  microarray experiments with common references
- cbind methods for MAList and RGList objects
- New function loessFit giving substantial speed improvements for
  loess normalization

23 June 2003: limma 1.1.3

- extra arguments added to kooperberg function
- Internal kooperberg functions now hidden from user
- New affy example added to User's Guide.

June 19, 2003: limma 1.1.2

- bug fixes to classifyTests
- normalizeForPrintorder (no longer generic) and plotPrintorder
- ClassifyTests now accepts design and contrast matrices

June 15, 2003: limma 1.1.1

- new functions for Kooperberg Bayesian background correction
- modreg now required for R earlier than 1.7.0
- normalizeWithinArrays no longer generic to simplify documentation
- Documentation for normalizeBetweenArrays also consolidated
- New virtual class LargeDataObject and associated show method

June 12, 2003: limma 1.1.0.

- New function lmFit()
- classifyTests fixed

June 11, 2003: limma 1.0.9

- first version of MArrayLM class
- Start on bug fix to classifyTests

May 23, 2003: limma 1.0.8

- corrected bug in read.maimages for quantarray data
- Added wtIgnore.Filter function for quantarray data

May 19 2003: limma 1.0.7

- printable pdf version of User's Guide
- use of chol pivot in classifyTests.vector
- couple of typos corrected

May 18 2003: limma 1.0.6

- minor cleaning up of documentation files and vignette ready for BioC release.

10 May, 2003: limma 1.0.5

- new function 'printorder',
- added sma to dependencies in DESCRIPTION
- updates and corrections to User's Guide

May 7 2003: limma 1.0.4

basically a file permission change.

May 4 2003: limma 1.0.3

New function printorder. Correct typo in DESCRIPTION.  Alias for merge
method to reflect dispatching on two arguments.

Apr 29 2003: limma 1.0.2

Fixed bug in ebayes when more than two coefficients (bug introduced on
Apr 25). Added new normalization method, robust splines. Changes to
plotPrintTipLoess. Several changes to .Rd files.

Apr 27 2003: limma 1.0.1

Several new help topics and consolidation of a couple of old ones.
Correction of a couple of small code bugs concerning creation of
classed objects by MA.RG and backgroundCorrect.  Other minor changes
to help topics entries.

Apr 26 2003: limma 1.0

Apr 25 2003: limma 0.9.7

The smawehi package was renamed to limma, with the title "Linear Models
for Microarray Data" and became part of the Bioconductor project.

11 November 2002: smawehi 0.1

smawehi package made publicly available for the first time, through
the repository http://bioinf.wehi.edu.au/smawehi, for the One Day
Course "Statistics for Microarray Data Analysis" at the Australian
Genstat Conference, Perth, Australia, 2 December 2002.  This package
was intended to be used in conjunction with sma from UC Berkeley.

PRE-HISTORY

The limma package was originally called the smawehi package, which was
made public for the first time as SMAWEHI Version 0.1 for the One Day
Course "Statistics for Microarray Data Analysis" at the Australian
Genstat Conference, Perth, Australia, 2 December 2002.  Presenters
were Terry Speed, Gordon Smyth and Natalie Thorne.  The package was
served from an R repository at http://bioinf.wehi.edu.au.  With
version 0.9.7 the package was renamed to 'limma' and became part of
the Bioconductor project at http://www.bioconductor.org.
