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 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 tile "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.
