Note: as of 2009/03/10, changes that lead to different calculational results are marked as DIFF.


2026/01/27: 1.74

	. The (deprecated) function GOenrichmentAnalysis has been removed.
	  Please use replacement functionality provided by R package anRichment
	  (https://github.com/plangfelder/anRichment) or any number of other
	  packages providing enrichment analysis. 

2024/11/23: 1.73-3

	. Functions plotColorUnderTree and plorOrderedColors now accept
	  arguments col.rowLabels and font.rowlabels controlling color and
	  font type for row labels.

2024/11/22: 1.73-2

	. Minor changes in internal code to enhance interoperability of
	  heatmap functions

2024/11/14: 1.73-1

	. Function formatLabels now respects argument font
	. Minor enhancements in internal plotting code for color legends in
	  heatmap plots

2024/09/18: 1.73

	. Version bumb for release

2024/09/03: 1.72-90

	. New function modifiedBisquareWeights for calculating bisquare weights for
	  columns in a matrix
	. Typos in documentation (help files) of chooseTopHubInEachModule and
	  chooseOneHubInEachModule fixed. Thanks to Dominic Owens for
	  reporting these.
	. Minor changes in compiled C code to comply with R's updated API

2023/12/06: 1.72-5

	. Minor fixes in code and help files

2023/12/06: 1.72-4

	. Minor fixes in code and help files

2023/11/27: 1.72-3

	. Several minor fixes in help files.
	. Minor changes in internal code for labeledHeatmap
	. Fixes in internal code to remove compile warnings and use of
	  deprecated functions 


2023/08/14: 1.72-2

	. Bugfix in function plotEigengeneNetworks reported by Ramón Fallon
	. Minor changes in internal code for labeledHeatmap

2023/01/18: 1.72-1

	. Minor changes to compy with CRAN requirements

2023/01/07: 1.72

	. Version bump for release

2022/12/29: 1.71-7

	. Small changes in default position of legend label in labeledHeatmap
	. C code reorganized to conform to the requirement of declaring all
	  function prototypes before definition
	. Fixed version numbers in changelog.

2022/11/01: 1.71-6

	. Bugfix in modulePreservation fixes checking for testNetworks out of
	  range. The bug made no difference for valid inputs.

2022/10/24: 1.71-5

	. Function overlapTable nwo also returns a matrix of expected overlap
	  counts and a matrix of ratios of observed and expected overlap
	  counts.

	. Bugfix in individualTOMs that fixes a crash in
	  hierarchicalConsensusModules when networkOptions are given as a
	  single object of class networkOptions.

	. Internal functions for creating heatmaps with legend are improved.

2022/09/14: 1.71-4

	. Function overlapTable now optionally returns logarithms of the
	  overlap p-values.

2022/07/03: 1.71-3

	. Function prependZeros now gets the number of characters correctly
	  even for numbers like 100000 which were previously formatted to
	  1e05.


2022/07/02: 1.71-2

	. Functions matchLabels and overlapTable now work also in the case
	  where one set of labels consists entirely of ignored labels.

	. Function imputeByModule only imputes data in those modules that
	  actually contain missing data.

2022/05/22: 1.71-1

	. empiricalBayesLM is a bit informative about failed initial
	  regressions.

2022/04/22: 1.71

	. Version bumb for release

2022/04/08: 1.70-80

	. Bugfix in blueWhiteRed and greenWhiteRed that makes the pallettes
	  symmetric for small odd values of n.

	. Function sampleModules now runs nRuns sampled calculations (and
	  optionally also the unsampled calculation) rather than always
	  running precisely nRuns calculations. 

	. Function blueWhiteRed now accepts arguments giving the blue end, red
	  end and middle colors.

	. Fixed bug in positioning color legend label for labeledHeatmap and
	  related functions.

	. verboseIplot now accepts argument showMSE that can supress printing
	  of MSE in the title of the plot.

	. verboseScatterplot now accepts argument showPValue that can suppress
	  printing of the p-value in the title of the plot.

	. addGrid now accepts arguments linesPerTick.horiz and
	  linesPerTick.vert allowing the user to set the number of lines per
	  tick separately for the vertical and horizontal lines

	. empiricalBayesLM now accepts argument scaleMeansOfSamples that works
	  in conjunction with scaleMeansToSamples to fine tune how the
	  adjustment is applied.

2021/03/01: 1.70-4

	. plotColorUnderTree and plotDendroAndColor now work also when there
	  the 'colors' argument has length zero, producing an empty color
	  plot.

	. Improvements in internal code plotting legends for labeledHeatmap.

2021/02/17: 1.70-3:

	. Bugfixes of bugs introduced in 1.70-2

2021/02/13: 1.70-2:

	. Fixed problem in moduleEigengenes with argument 'expr' not having
	  'rownames'.

2021/02/13: 1.70-1:

	. Fixed several old web links in help files

2021/02/10: 1.69-86, 1.70

	. Internal code for generating axis ticks now works when the limits
	  have zero range.

	. Help files for blockwiseIndividualTOMs and blockwiseConsensusModules
	  updated.

2020/12/18: 1.69-85

	. Internal code for plotting legends for heatmaps expanded to be able
	  to plot several color columns per legend.

2020/11/03: 1.69-84

	. Internal code for plotting color scale/axis for heatmaps can now add
	  an axis label.
	. Corrected help files.

2020/07/12: 1.69-83:

	. Code for labeledHeatmap.multipage was simplified by taking advantage
	  of arguments showRows and showCols to labeledHeatmap. This also
	  solves incorrect font size and colors for the row and column labels.

2020/05/08: 1.69-82:

	. blockwiseConsensusModules and friends now use make.unique before
	  assigning rownames, to guard against duplicate rownames errors.

2020/04/30: 1.69-81

	. Bugfix in internal code fixes failure of labeledHeatmap with only
	  one column or row.

2020/03/03: 1.69-80

	. Minor enhancements in internal code (function
	  .plotOrderedColorSubplot).

2020/02/28: 1.68-86, 1.69

	. Argument nameOut to userListEnrichment now accepts value NULL to
	  suppress generating a file with the results.

	. lmRob has been removed as an automatically supported optional
	  initial fit function in empiricalBayesLM (due to the package
	  'robust' having been orphaned and archived on CRAN).

	. labeledHeatmap and internal function heatmapWithLegend now take
	  optional argument colorMat allowing the user to specify the cell
	  colors explicitly.

	. Internal function heatmapWithLegend shoudl be able to use handle
	  transparent as color for missing data.

	. Bugfix in internal function used in plotColorUnderTree and
	  plotOrderedColor.

2020/02/08: 1.68-84

	. Further bugfixes in plotOrderedColor.

2020/02/06: 1.68-83


	. plotOrderedColors, plotColorUnderTree and plotDendroAndColors gain argument
	  separatorLine.col to set (or omit) separator lines between color
	  rows.

	. plotOrderedColors also gains argument align to provide some degree
	  of control over alignment of color rectangles.

2020/02/03: 1.68-82

	. Bugfixes in prependZeros and internal code
	  (.boxDimensionsForHeatmapWithLegend).

	. Internal change: plotOrderedColor is now split into user-facing
	  wrapper and the workhorse internal function that can be called from
	  other functions as well. 

	. Internal change: split off labeledHeatmap into is own file.

	. prependZeros now handles fractional numbers better.

	. goodSamplesMS and goodSamplesGenesMS now copy the 'names' attribute
	  of the input 'multiExpr' to the output.

	. Function hierarchicalConsensusModules and
	  pruneAndMergeConsensusModules now calculate eigengenes with more
	  regard to resource utilization, skipping the some unneeded
	  calcualtions.

	. Bugfix in labeledHeatmap and related functions; showing two
	  separators at the same position now works.

	. metaAnalysis now works with a single data set.

	. Example for chooseTopHubInEachModule has been simplified.

	. DIFF: Argument scaleMeanToSamples for function empiricalBayesLM now
	  defaults to fitToSamples. This will produce adjusted data wwith
	  different means than before if non-trivial fitToSamples is used.
	  (The variation of the adjusted data is unchanged, i.e., correlations
	  of the adjusted data will be the same as before.) To reproduce old
	  results, use scaleMeanToSamples = NULL when calling empiricalBayesLM.

2019/06/18: 1.68-80

	. binarizeCategoricalColumns.forPlots now accepts argument checkNames.

2019/06/02: 1.68-2

	. Internal code checking and scaling multiData weights is now more
	  general.

2019/05/30: 1.68-1

	. Function matchLabels is now nearly two orders of magnitude faster.

	. Bugfix in sizeRestrictedClusterMerge fizes an error that ocurred
	  when some clusters were of size 1

2019/05/22: 1.68

	. Bugfix in sizeRestrictedClusterMerge which also benefits
	  projectiveKMeans and blockwiseModules fixes an occasional crash.
	  Bug reports and assistance of several users, especially Luis Revilla,
	  is gratefully acknowledged. 

	. Bugfixes in blockwiseModules, blockwiseConsensusModules and
	  individualTOMs fix non-propagation of randomSeed to
	  projectiveKMeans. The default randomSeed for the 3 functions has
	  changed to match that of projectiveKMeans and
	  consensusProjectiveKMeans to make previous results reproducible.
	
	. plotOrderedColor now returns some of the plotting information,
	  useful for adding to the plot.

	. modulePreservation gains arguments multiWeights representing
	  optional observation weights of expression data, and goldName that
	  can be used to change the label used for all-network sample.

	. Adding arguments horizontalSeparator.interval and
	  verticalSeparator.interval to labeledHeatmap

	. Change in sampledHierarchicalModules: saveIndividualTOMs and
	  saveConsensusTOM arguments for the underlying
	  hierarchicalConsensusModules can be set as arguments rather than
	  being hardcoded.

2019/05/05: 1.67-90

	. Bugfix in sizeRestrictedClusterMerge and projectiveKMeans that calls
	  it fixes occassional crash (reported on Stackexchange by user holly)

	. Bugfix in modulePreservation: empty rownames of certain
	  matrices do not cause a crash anymore.

	. New (experimental) versions of Topological Overlap (TOM) are
	  available.

	. bugfix in exportNetworkToVisANT thanks to Guangjian Du

	. consensusProjectiveKMeans is a bit more efficient, especially when
	  the number of sets is 1.

	. goodGenes should be faster when weights are not supplied

2019/04/11: 1.67

	. moduleEigengenes and derived functions (multiSetMEs) now copy
	  row names of the input data as row names of the output matrices.

	. blockwiseModules, blockwiseConsensusModules, their 'recut' versions
	  and blockwiseHierarchicalModules now copy the column names of input
	  data into names of output module labels and colors. Row names of
	  input data are copied into row names of the corresponding module
	  eigengene matrices.

	. Startup message regarding setting up multi-threading is now
	  disabled.

2019/04/09: 1.66-92

	. bugfix in labeledHeatmap makes vertical separator lines better
	  aligned with standard position of labels.

	. exportNetworkToCytoscape does not check column names in nodeAttr for
	  being valid language names. 

2019/02/25: 1.66-90

	. Bugfix in consensusTOM: saving calibrated TOMs should work now.

	. Function formatLabels now accepts optional argument font.

	. Function hierarchicalConsensusKME now accepts argument
	  getMetaColsFor1Set that controls whether meta-statistics are
	  returned when the consensus only has 1 input set.

	. One more bugfix in internal code (.interleave) 

	. Bugfix in internal code (.interleave) fixes crashes in
	  hierarchicalConsensusKME 

	. Bugfix in multiGrep fixes sorting order when returning values rather
	  than indices.

	. Functions consensusKME and hierachicalConsensusKME now don't throw
	  an error on duplicate column names in input data.

	. Changed default for argument saveConsensusData from TRUE to NULL
	  (automatically determined from input data) in function
	  consensusCalculation

	. Signed TOM described by Nowick et al (PNAS, 2009) is implemented and
	  can be accessed using TOMType = "signed Nowick" for all TOM
	  calculation and module identification functions that take argument
	  TOMType. Argument suppressNegativeTOM can be used to automatically
	  set all negative TOM values to zero.

	. New argument suppressNegativeResults for newConsensusOptions.

	. New function sizeRestrictedClusterMerge for merging clusters such
	  that the resulting clusters do not exceed a specified size.

	. hierarchicalConsensusKME is now more robust and works with a single
	  module as well.

2018/10/22: 1.66

	. Function consensusDissTOMandTree is now a it faster because of more
	  efficient garbage collection.

	. Function verboseBarplot can now optionally add text labels to the
	  (also optional) scatterplot. 

	. In internal functions plotting heatmap legends, widths are now
	  specified in inches rather than in user coordinates.

	. Hierarchical consensus module merging is now more robust to unusual
	  cases with 0 or only 1 module.

	. Bugfix in hierarchicalConsensusModules: supplying a single
	  networkOptions dows not produce an error.

	. pruneAndMergeConsensusModules now checks for presence of at least
	  one module; if no modules are present, it returns the input labels
	  rather than throwing an error.

	. DIFF: Bugfix in hierarchicalConsensusModules changes the order of
	  imputation and removal of genes and samples with too many missing
	  values. This may lead to slightly different module eigengenes.

2018/10/02: 1.65

	. Bugfix in modulePreservation fixes duplicate rownames error.

	. Function signedKME now checks that colnames of the input data are
	  unique and makes them unique if not.

	. Consensus calculations now return origin count for all consensus
	  quantiles and the mean consensus. Origin count for each set is the
	  number of (calibrated) values from the set that are less than or equal
	  the consensus.

	. New function consensusTreeInputs for getting inputs of a consensus
	  tree.

2018/09/24: 1.64-81

	. Fixed crash in softConnectivity when weights are used.

	. Fixed bug in labeledHeatmap that transposed a 1-row matrix into a
	  1-column one.

	. Fixed minor typos in errors emitted by labeledHeatmap.

2018/09/14: 1.64-80

	. empiricalBayesLM now accepts optional argument fitToSamples that can
	  restrict the fitting process to a subset of samples. The argument
	  order was also rearranged to make the order more logical.

2018/09/09: 1.64-1

	. binarizeCategoricalColumns.for... have re-ordered and in some cases
	  added arguments to make them more useful.

2018/09/05: 1.64

	. Web site link updated

	. Documentation for cor has been improved by making more precise what
	  nThreads actually affects

	. Documentation for pickSoftThreshold.fromSimilarity has been improved
	  thanks to a suggestion from Paolo Inglese.

	. Function signedKME has been streamlined and a bug in which gene
	  names in the output were passed through check.names in coercing the
	  input to a data frmae is now fixed.

	. New functions binarizeCategoricalVariable,
	  binarizeCategoricalColumns, and related wrappers for binarizing
	  categorical covariates into sets of binary indicators

	. labeledHeatmap now accepts arguments showRows and showCols that
	  allow one show a subset of the heatmap without having to explicitly
	  subset all row- and column-specific arguments

	. branchSplitFromStabilityLabels.individualFraction can now work with
	  missing entries in cluster labels

	. New function signifNumeric for rounding numeric columns of a data
	  frame.

	. Bugfix in corFast: argument 'use' is now interpreted properly
	  (thanks to Thomas Mohr for the report).
	
	. Argument networkType has been removed from the function
	  pickSoftThreshold.fromSimilarity where it has not been used; help
	  file has been adjusted accordingly (thanks to Max Moldovan for
	  reporting the issue).

	. mtd.mapply now prints a more informative error message.

	. bugfix in GOenrichmentAnalysis which now works again.

2018/03/21: 1.63-2

	. TOM calculation now gives 0 for completely unconnected nodes,
	  instead of returning NaN

2018/02/26: 1.63

	. Bugfix in blockwiseModules fixes a crash caused by supplying weights
	  to bicor

	. DIFF: correlation options such as maxPOutliers are now by default
	  used throughout function blockwiseModules. New argument
	  useCorOptionsThroughout can be used to switch to old behaviour where
	  the arguments were used only for network construction.

2018/02/10: 1.62

	. New functions sampledBlockwiseModules and
	  sampledHierarchicalConsensusModules carry out network analysis
	  repeatedly on resampled data.  

	. TOM calculations can optionally use internal matrix algebra rather
	  than R- (or system-)provided BLAS, controlled by argument
	  useInternalMatrixAlgebra.

	. Pearson correlation (function cor) now accepts individual sample
	  weights for arguments x and y. When both weights are supplied (and
	  for correlation of a columns in a single matrix), the weights are a
	  product of the weights for the two vectors being correlated.
	  Denominators are calculated separately using separate weights, which
	  leads to slightly different results than standard weighted
	  correlation.

	. Most network construction functions now also accept optional weights.

	. hierarchicalConsensusModules can now optionally perform gene/module
	  pruning and merging iteratively.

	. New functions pruneConsensusModules and
	  pruneAndMergeConsensusModules implement the pruning and iterative
	  pruning/merging of hierarchical consensus modules.

	. Network construction functions now accept argument
	  suppressTOMForZeroAdjacencies whose effect is to set TOM to zero for
	  all node pairs with zero adjacency.

	. Bugfix in individualTOMs: function now works with default
	  useDiskCache

	. Module eigengenes returned by blockwiseConsensusModules now carry
	  names copied from names of multiExpr

	. New function imputeByModule 

	. Bugfix in verboseBoxplot and verboseBarplot: the function now 
	  honors the setting of addScatterplot and correctly interprets point 
	  color and other arguments when they are vectors.

	. Enhancements and bugfixes in TOMplot which should work with all
	  data sizes and dendrogram complexities.

	. Function formatLabels now avoids over-splitting labels that already
	  contain a newline character.

	. Function labeledHeatmap can plot row labels on the right, specified
	  via argument yLabPosition.

	. Bugfix in internal function .networkCalculation

2017/08/04: 1.61

	. Bugfix in consensusCalculation: function works with mean consensus.

	. New arguments pch and plotPriority for verboseScatterplot.

	. Function pmin has been removed since it incorrectly duplicates
	  base::pmin.

	. Function GOenrichmentAnalysis is deprecated. Please use function
	  enrichmentAnalysis from R package anRichment, available from
	  https://labs.genetics.ucla.edu/horvath/htdocs/CoexpressionNetwork/GeneAnnotation/

2017/07/07: 1.60

	. empiricalBayesLM expanded with additional arguments allowing
	  specification of initial fit function

	. DIFF: New branch split function that works with stability labels, 
	  branchSplitFromStabilityLabels.individualFraction, that tweaks the
	  branch dissimilarity measure to work better when one branch is large
	  and one small. To reproduce old results, use argument
	  stabilityCriterion = "Common fraction" to functions
	  hierarchicalConsensusModules and blockwiseConsensusModules.

	. verboseBoxplot and verboseBarplot can now optionally overlay
	  scatterplots of the underlying data (thanks to Zhijin (Jean) Wu for
	  suggestion and code).

	. Bugfix in enrichmentAnalysis: function does work when the number of
	  reported terms is zero. (Thanks to Zhijie Cao for bug report and
	  fix.)

	. New functionality that allows a hierarchical calculation of
	  consensus modules, with multiple new functions.

	. New arguments colorHeightBase, colorHeightMax control layout in
	  function plotDendroAndColors

	. Arguments controlling the legend size in heatmaps with legends 
	  been tweaked to make the legend width independent of the width of
	  the plotting region. 

	. The horizontal adjusting of row labels in labeledHeatmap can now be
	  set using the new argument x.adj.lab.y.

	. Bugfix in mtd.susbet: function now works properly when invert is
	  TRUE.

	. formatLabels can now format strings to a maximum width in user
	  coordinates and shorten the results to a given number of lines.

	. Limitation to block sizes less than the integer addressing limit
	  (sqrt(2^31)) has been removed.

	. Multiple mtd.... functions now return NULL when the input multiData
	  argument has length zero.

	. Function adjacency now accepts corOptions in both character and list
	  formats.

	. New function minWhichMin that calculates the row- or column-wise
	  minimum and index of the minimum.

	. New functions pmin.fromList, pmean.fromList, pquantile.fromList, for
	  parallel minimum, mean and quantile whose input is a list of
	  identically sized arrays; functions pmin, pmean and pquantile now
	  use compiled code and should be substantially faster and more memory
	  efficient.

	. Bugfix in function blockwiseModules: corrected conditional module
	  removal if too few genes remain.

	. pickSoftThreshold is now faster thanks to Alexey Sergushichev; new
	  argument gcInterval allows the user to fine tune frequency of garbage
	  collection to suit the size of the data.

	. verboseBarplot now takes argument ylim which defaults to
	  incorporating all bar heights plus error bars (if requested)

	. Cleanup in function labeledHeatmap: incorrect text and color label
	  offsets and widths fixed. The corresponding arguments xColorWidth,
	  yColorWidth are now measured in user units rather than fractions of
	  overall width and height. 

	. New functions bicovWeightFactors and bicovWeightsFromFactors

2016/05/30: 1.52

	. New function plotMultiHist for plotting multiple histograms in one
	  plot

	. New functions multiGrep, multiGrepl, multiSub, multiGSub

	. New argument invert in mtd.subset allows consistent excluding of
	  rows and columns from multiData structures.

	. Bugfix in modulePreservation: accuracy statistics now work also with
	  a single module. Thanks to Victor Hanson-Smith for pointing this
	  out.

	. mtd.rbindSelf now warns when colnames of the individual data sets do
	  not agree.

2016/03/08: 1.51

	. DIFF: Defaults for the number of pre-clustering centers in
	  blockwise[Consensus]Modules, projectiveKMeans and
	  consensusProjectiveKMeans have changed to prevent the
	  pre-clustering from becoming too long. To reproduce old results, use
	  (nPreclusteringCenters or nCenters) = min(nGenes/20,
	  maxBlockSize^2/nGenes), where nGenes is the number of genes (variables) 
	  in the input data.
	
2016/02/23: 1.50

	. Bugfix in function cor: function now correctly handles cases where
	  columns have missing data placed such that the remaining entries
	  (after removing missing values) have zero variance. Thanks to Pasha
	  Mazin for pointing this out.

	. New function consensusRepresentatives for selecting consensus representatives
	  from multi-data.

	. Cleanup in plotOrderedColors should results in better placement of
	  'rowText' under blocks of colors.

	. Minor change in spacing for row text in plotOrderedColors that also affects
	  plotColorUnderTree and plotDendroAndColors

	. TOM calculation functins (TOMsimilarity, blockwiseIndividualTOMs,
	  blockwiseModules) now accept argument replaceMissingAdjacencies that
	  allows the underlying code to replace missing adjacencies with an
	  appropriate value for zero-strength link.

	. moduleEigengenes is now more resistant to problems with missing data
	  and zero-variance variables.

2015/12/27: 1.49

	. DIFF: goodGenes, goodGenesMS, goodSamplesGenes, goodSamplesGenesMS get an
	  argument `tol' to compare the variance against, rather than against
	  zero. This prevents erroneous retaining of zero-variacen genes
	  because of numeric under/overflow errors in the fast calculation of
	  variance. This may possibly result in removal of genes that were
	  retained in WGCNA versions 1.47-2 and newer, but should remove the
	  same genes as 1.47-1 and older. 

2015/12/16: 1.48-2

	. Bugfix in our local copy of heatmap, called from TOMplot, based on
	  the bug report
	  https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16583 . Thanks to
	  Duncan Murdoch for pointing it out

	. Function goodSamplesGenesMS can now work with data frames within the
	  multiExpr structure, rather than just matrices.

2015/11/03: 1.48-1

	. TOMplot now uses my own dendrogram drawing routine which should not
	  run into the stack/memory allocation problems of the standard
	  plot.dendrogram function.

2015/10/29: 1.48

	. Bugfix in pickHardThreshold (and pickHardThreshold.fromSimilarity):
	  when the input is a similarity matrix rather than expression data,
	  the function no longer crashes.

2015/10/09: 1.47-6

	. Bug in consensusTOM fixed that caused a spurious error 
	  "File names to save blocks of consensus TOM are not unique."
	  when calculating with more than on block.

	. DIFF: Function consensusProjectiveKMeans can (and will by default) impute
	  missing data. This may cause differences in preclustering when
	  missing data are present. To reproduce old results, use
	  argument imputeMissing = FALSE.

2015/09/30: 1.47-5

	. Function consensusKME is now using internal code for re-arranging
	  rather than relying on reshape's melt-cast combination due to
	  performance issues with larger data sets.

	. Imports from/dependence on reshape have been dropped.

	. blockwiseConsensusModules accepts argument cacheBase which replaces
	  the default "." that has been used.

	. labelPoints now returns a data frame with the label positions, and
	  accepts argument doPlot that optionally turns off the plotting of
	  the labels.

	. bicor now produces a better-worded warnings about zero or missing
	  MAD.

2015/08/07: 1.47-4

	. DIFF: projectiveKMeans now by default imputes missing data in
	  datExpr at the start of the function. 
	  This can lead to somewhat different output; old
	  behaviour can be forced by setting imputeMissing = FALSE. This
	  change does not affect blockwiseModules since blockwiseModules
	  imputed missing data before calling projectiveKMeans.

	. Internal code cleanup: several ifelse calls changed to if else
	  constructs to avoid issues with ifelse generics defined by
	  bioconductor

	. pickHardThreshold is now more resistant to genes (columns) that have
	  zero variance. However, their connectivity is considered 0.

	. DIFF: Bugfix in internal code fixes an error in blockwiseModules and
	  blockwiseConsensusModules where blocks determined by pre-clustering
	  were incorrectly merged. In rare cases this may cause differences to previous
	  results. Thanks to Elmar Tobi for reporting this.

2015/06/27: 1.47-2

	. goodGenes and goodSamples, along with their MS versions, should now
	  run faster thanks to a code clean-up

2015/06/18: 1.47-1

	. Bugfix in empiricalBayesLM fixes a crash in the function.


2015/06/13: 1.47

	. Functions plotCor, plotMat and rgcolors.func from sma have been re-introduced

	. empiricalBayesLM is now more robust to missing values, particularly
	  when OLS regression fails due to missing values making some of the
	  covariates constant.

	. Bugfix in bicovWeights fixes crash when there is one variable with
	  MAD = 0.

	. Function blockwiseModules can now optionally use module merging
	  criteria derived from stability studies.

	. Functions blockwiseModules, blockwiseIndividualTOMs and 
	  consensusBlockwiseModules now accept argument blockSizePenaltyPower
	  that lets the user specify the severity of penalty for blocks
	  exceeding maximum size. 

	. Functions projectiveKMeans and consensusProjectiveKMeans now accept 
	  Inf for sizePenaltyPower.

	. Function labeledHeatmap.multiPage now accepts more explicit
	  arguments (rather than relying on ... as before)
	  and correctly handles separator lines.

2015/03/28: 1.46

	. Functions inherited from the now-defunct package sma have been
	  removed.

2015/03/27: 1.45

	. New function empiricalBayesLM for removing unwanted variation due to
	  given covariates from high-dimensional data
	. New function bicovWeights for assigning weights to observations
	  based on whether they are suspected outliers
	. labeledHeatmap and friends now accept argument keepLegendSpace
	. labeledHeatmap now returns information about positions of individual
	  boxes in the heatmap.
	. labeledHeatmap now accepts argumens xColorOffset and yColorOffset
	  controling the gap between color labels and the heatmap itself.

2015/02/06: 1.43-11

	. Bugfix in C code fixes memory allocation errors with large data
	  sets. The C code was also made more consistent in the use of 
	  size_t whenever needed and possible.

	. Bugfix in labeledHeatmap fixes the direction of extended separator
	  lines for x-axis labels with angle other than the default 45
	  degrees.

2015/01/23: 1.43-10

	. Bugfix in function blockwiseIndividualTOMs and functions that use it
	  (blockwiseConsensusModules, consensusTOM) fixes a bug that caused
	  crashes when more than one blocks were used.

2015/01/15: 1.43

	. Package now imports AnnotationDbi and GO.db

	. Function blueWhiteRed gains argument endSaturation that allows the
	  user to lighten the colors at the end of the range, at the expense of
	  saturation.

	. Function labeledHeatmap gains additional arguments allowing the user
	  to place horizontal and vertical divider lines into the heatmap.

	. Bugs introduced into GOenrichmentAnalysis in the previous release
	  are now fixed.  

2014/11/25: 1.42

	. Function TrueTrait has been re-worked and the argument Strata to it
	  is no longer accepted.

	. labeledHeatmap.multiPage now works with 1-column or 1-row matrices.

	. The textMatrix argument to labeledHeatmap and
	  labeledHeatmap.multiPage is now allowed to be a (dimensionless)
	  vector as long as its length is consistent with the dimensions of
	  the input Matrix.

	. Bugfix in function formatLabels fixes sometimes incorrect start of
	  formatted labels.

	. Bugfixes in function TrueTrait

	. DIFF: Bugfix in mtd.branchEigengeneDissim that primarilly affects 
	  blockwiseConsensusModules. The consensus quantile was incorrectly
	  applied, which led to overly aggressive module merging. The bugfix
	  will lead to a different final modules if useBranchEigengeneDissim
	  was TRUE. To reproduce old behavior, use argument
	  reproduceBranchEigennodeQuantileError = TRUE.

	. New function consensusTOM implements calculation of consensus TOM
	  in a stand-alone function; this calculation was previously hidden
	  inside blockwiseConsensusModules. 

	. Network calibration methods in consensusTOM now include full
	  quantile normalization

	. DIFF: bugfix in blockwiseIndividualTOMs that affects
	  blockwiseIndividualTOMs as well as blockwiseConsensusModules: The
	  soft-thresholding power for set 1 was used for all sets. This bug
	  has bow been fixed; to reproduce old calculations, change the old
	  code to use the same power for all sets. I apologize for this rather
	  serious omission.

	. blockwiseIndividualTOMs gains additional output components.
	  
	. Internal C code changed some index variables from int to size_t.

	. Function individualTOMs now uses a more memory-efficient way to call
	  the internal compiled code.

	. Bugfix in mtd.apply fixes occasional spurious crashes

	. Function mtd.apply now copies the 'names' attribute from input to
	  the output

	. Function mtd.subset can now subset columns based on column names,
	  not just numeric indices.

	. Function votingLinearPredictor can now tolerate missing data in the
	  predictor variables (features).

	. blockwiseModules gains a new argument loadTOM.

2014/06/13: 1.41-1

	. DUP = FALSE removed from all .C calls since the argument is
	  deprecated. This means that memory requirements may increase in some
	  situations.


2014/06/12: 1.41

	. New function shortenStrings 

	. Changed several packages we depend on from Depends: to Imports:

	. New functions prependZeros and formatLabels

	. Bugfix in userListEnrichment: function no longer crashes when there
	  are no "significant" overlaps

	. New function intramodularConnectivity.fromExpr 

2014/05/07: 1.40

	. Functions blockwise[Consensus]Modules and
	  recut[Blockwise,Consensus]Trees get new arguments minSplitHeight and
	  minAbsSplitHeight that get passed to cutreeDynamic.

	. Arguments for blockwiseModules have been re-ordered to group them
	  and make it easier to find the right setting.

2014/04/28: 1.39

	. Function exportNetworkToVisANT can now restrict connections to a
	  given number of top connections. 

	. Function exportNetworkToVisANT returns the resulting data frame
	  invisibly.

	. Function modulePreservation gains the ability to run the
	  calculations in parallel, controlled by argument
	  'parallelCalculation'.

	. Function modulePreservation gains the ability to explicitly specify
	  test sets for each reference network, via parameter testNetworks.

	. Functions matchLabels and overlapTable have been expanded with new
	  functionality and arguments. matchLabels now works with any labels
	  (not just numeric or color labels) and can handle missing labels by
	  removing them.

	. Bug in function multiData2list fixed: function now returns a simpler
	  (and correct) list.

	. Crash-causing bug in mtd.rbindSelf fixed.

2014/01/08: 1.37

	. New functions multiUnion and multiIntersect

	. New function labeledHeatmap.multiPage produces labeled heatmaps
	  divided into multiple plots (pages).

	. plotColorUnderTree and plotOrderedColorsnow produce more precise
	  "center" and "right" text alignment.

	. Maximum block size in blockwiseModules, blockwiseConsensusModules
	  and blockwiseIndividualTOMs (argument 'maxBlockSize') is now limited
	  to be less than sqrt(2^31) to prevent problems with C and Fortran
	  routines. The same limitation also applies to the 'preferredSize'
	  argument of projectiveKMeans and consensusProjectiveKMeans.

	. Occasional bug when saving and loading permutation test results in
	  modulePreservation fixed.

2013/11/22: 1.36

	. Needs dynamicTreeCut 1.61 or higher.

	. Bugfix in mtd.mapply fixes a crash.

	. Warning message in mtd.subset cleaned up.

	. New function multiData to conveniently create multiData structures.

	. The color palette of blueWhiteRed has been tweaked to provide
	  lighter extreme colors which makes it easier to read black text
	  superimposed on the strongest colors.

	. More descriptive error message in cor() and bicor() when input
	  contains missing data and 'use = "all.observations"'. 

2013/11/04: 1.35

	. Function accuracyMeasures now works also with factors.

	. Function moduleEigengenes calls impute.knn only if there are any
	  missing data.

	. Functions mtd.apply, mtd.applyToSubset, and mtd.mapply gain
	  arguments controling whether and how progress should be displayed;
	  they also gain arguments that let the user specify calculation on
	  only a subset of the input sets. 


2013/10/10: 1.34

	. Function verboseBarplot gains argument addCellCounts that enables
	  display of counts above each bar. 

	. Function mtd.subset gains the argument 'permissive' that allows
	  subsetting of "loose" multiData structures as well as 'drop' that
	  controls dropping of dimensions with extent 1.

	. Internal: Depends and Imports fields were cleaned up as per new CRAN
	  requirements. Users should be aware that loading and attaching WGCNA 
	  now does not automatically attach all packages from which WGCNA imports.

	. Potentially serious bug has been fixed in the internal C code for
	  calculations of correlation (function cor()). This bug seems to have led to
	  correlation sometimes returning 0 where it should have returned an NA. 


2013/08/29: 1.33

	. mtd.apply and mda.applyToSubset gain argument mdaCopyNonData that controls whether
	  non-data components of input should be copied to output

	. Bug in matchLabels fixed that led to non-integer color labels if two
	  reference modules had the same size.

	. New function plotOrderedColors that extends plotColorUnderTree to
	  the case where the plot 'above' is not a dendrogram but a general plot
	  (a useful example is a barplot). 

	. DIFF: bugfix in blockwiseModules, recutBlockwiseTrees,
	  blockwiseConsensusModules, recutConsensusTrees: gene reassignment by
	  kME now reassigns correct genes. Previously, the the reassigned
	  genes were incorrectly chosen. This may make a small difference in
	  the module assignments if reassignThreshold was above zero (as it
	  was by default). The default was also changed to not perform module
	  re-assignment.

	. Switching to dynamicTreeCut 1.60: this dynamicTreeCut uses external
	  criteria that are supplied by the blockwise* functions. The
	  criteria are implemented in functions branchEigengeneDissim,
	  mtd.branchEigengeneDissim, branchSplit, branchSplit.dissim
	  To preserve results of older calculations, new features are disabled 
	  by default.

	. New functions for convenient handling of multiData structures:
	  mtd.apply, mtd.applyToSubset, mtd.mapply, mtd.rbindSelf,
	  mtd.setAttr, mtd.colnames, mtd.setColnames  mtd.simplify
	  mtd.subset, list2multiData, multiData2list, isMultiData

	. Function randomGLMPredictor has been removed. Please use the package
	  randomGLM and the function randomGLM in that package.

	. Internal C code has been simplified.

2013/07/20: 1.30

	. Functions blockwiseModules and TOMsimilarityFromExpr are now more
	  memory-efficient: only 2 copies of the potentially large TOM matrix
	  are needed, down from 3 before.

	. Function mergeCloseModules can now optionally perform quantile
	  equalization (normalization) on to make eigengene (dis-)similarities
	  comparable across the data sets.

	. Argument order in mergeCloseModules has changed to a more logical
	  order
	  
2013/07/18: 1.29

	. Functions determining the number of available cores are now more
	  robust.

	. labeledHeatmap gains argument naColor that controls the color for
	  missing values.

2013/07/09: 1.28

	. Help files formatted to narrower line width.

	. bugfix in pickSoftThreshold when dataIsExpr is FALSE: function now
	  correctly checks similarity (thanks to Lourdes Pena Castillo for 
	  reporting it).

	. updateProgInd now only updates display if the value to be displayed
	  is actually different from the one already displayed. This can lead
	  to  somewhat better performance if updateProgInd is the performance
	  bottleneck.

	. DIFF: Bug fix in GOenrichmentAnalysis: all evidence codes listed on 
	  http://www.geneontology.org/GO.evidence.shtml are now recognized. 
	  This will likely may change GO enrichment results. We apologize for
	  this omission.

	. Bug fix in userListEnrichment: p-values of comparisons with no
	  overlapping genes are now 1, instead of 0.

	. plotColorUnderTree and plotDendroAndColors gain new arguments
	  rowTextAlignment and rowTextIgnore that afford more flexibility in
	  how the row text is formatted.

2013/04/01: 1.27-1 ("This one's no April 1 joke!")

	. userListEnrichment now contains a new set of gene lists compiled mostly by Mike
	  Palazzolo and Jim Wang at CHDI.

	. userListEnrichment now runs faster

	. Bug fix in verboseBarplot: p-values are now consistently diplayed
	  with two significant digits.

	. Bug fix in blockwiseConsensusModules: function now works correctly
	  (and faster) when not using disk cache

2013/03/06: 1.26 ("Spring growth")

	. Bug fix in blockwiseModules, blockwiseConsensusModules and
	  blockwiseIndividualTOMs: functions now use consisten block labels
	  [thanks to Austin Hilliard for pointing it out].

	. Function accuracyMeasures has been re-written to accept directly
	  vectors of predicted and observed values, and work also for
	  prediction of continuous outcomes. The new function is
	  backwards-compatible with older versions except for the name of the
	  first argument.

	. Function verboseScatterplot gains a new argument displayAsZero that
	  allows displaying small correlations as 0 (rather than say 1e-13).

	. New function returnGeneSetsAsList returns gene sets used by function 
	  userListEnrichment.

2012/12/01: 1.25-2 ("We ain't done fixin' yet")

	. Bugfix in blockwise[Consensus]Modules fixes a crash under certain
	  circumstances (when some of the initial modules are removed).
	  [Thanks to Nicola Soranzo for pointing this out.]

	. Bad choice of return value in WGCNAnThreads() that caused a crash in
	  pickSoftThreshold is now fixed. [Thanks to multiple users who
	  noticed this.]

2012/11/09: 1.25-1 ("The Election Fix")

	. Internal C++ code now compliant with older compilers that don't
	  implement vector::data()

2012/11/06: 1.25 ("The Election Issue", pardon the pun.)

	. DIFF: bugfix in function modulePreservation: the function now
	  respects the corFnc and corOptions arguments throughout the
	  calculations. This bug affected calculations that used correlation
	  functions other than the default "cor" and options other than
	  the default "use = 'p'".

	. Introducing parallelization to user-level R functions through the use 
	  of packages parallel, foreach and the doParallel backend. The parallelization 
	  should work on all R-supported platforms. This change does not
	  affect C-level workhorse functions for calculating correlations.

	. New function blockSize that attempts to choose a suitable block size
	  for most functions that use a block-wise approach to fit
	  calculations into memory. 

	. Function labels2colors is now more robust and should work for
	  data.frames as well

	. Function verboseBoxplot gains arguments notch and varwidth that are
	  passed to the underlying boxplot call.

	. Functions plotDendroUnderTree and plotDendroAndColors now 
	  display missing color values as grey.

	. Function verboseBarplot can now handle binary variables as well and
	  will print Fisher exact test p-value.

	. Function colQuantileC now ignores missing data

	. Internal C code cleaned up and small memory leaks plugged.

	. Function labelPoints has a new argument protectEdges that can
	  prevent labels from going outside of the plot area.

	. verboseScatterplot now has explicit arguments col and bg to specify
	  colors and fill (background) of the plotting symbols. This makes
	  specifying col and bg work also when only a sample of all points is
	  plotted.

	. GOenrichmentAnalysis can now optionally shorten output by omitting
	  details of highest-enriched GO terms.

	. Defaults in randomGLMpredictor have been slightly tweaked for better 
	  performance.

	. New function transposeBigData for transposing big matrices.

2012/08/02: 1.23-1

	. Examples in help files are now shorter to speed up execution as per
	  CRAN requests.

2012/07/27: 1.23

	. Function userListEnrichment is now improved with more categories of
	  gene lists

	. DIFF: bugfix in functions corAndPvalue and bicorAndPvalue:
	  calculation of the Z statistic is now corrected. This bug did not
	  affect the calculetion of Student t statistics nor the p-values.

	. Function standardScreeningBinaryTrait gains argument areaUnderROC
	  (default TRUE) that allows the user to turn off AUC calculation and
	  thus achieve a substantial speedup for large data sets.

	. Function metaAnalysis now by default turns off AUC calculation,
	  making it much faster on large data sets. The AUC calculation can be
	  enabled using the new argument getAreaUnderROC.

	. New function randomGLMpredictor that implements an ensemble predictor based on
	  bootstrap aggregation (bagging) of generalized linear models whose covariates 
	  are selected using forward stepwise regression according to AIC criteria.


2012/06/18: 1.22

	. DIFF: Bugfix in function blockwiseConsensusModules: the module colors are
	  now correct (and not scrambled) when some genes are excluded due to
	  too many missing entries. Apologies for any non-sense results this
	  error may have generated.

	. Bugfix in the function modulePreservation when used on adjacency
	  input: clustering coefficient calculations are now corrected.

	. Function modulePreservation gains an additional argument
	  calculateClusterCoeff, with default value FALSE, that can be used to
	  enable/disable clustering coefficient calculations. These tend to be
	  slow and for efficiency purposes the default is FALSE. 

	. DIFF: because of the above, clustering coefficient calculations in
	  function modulePreservation are disabled as a default. 

	. Error message in modulePreservation about input containing genes
	  with too many missing values is now more informative.

	. Bugfix in function numbers2colors: function now properly accounts
	  for the presence of positive and negative entries when automatically
	  deciding whether the input should be considered signed or unsigned.

	. Function rankPvalue now doesn't warn about weights not summing to 1.

	. DIFF: bugfix in function userListEnrichment corrects output.
	  Previously, UNcorrected p-values were returned when corrected
	  p-values were requested, and no p-values were returned when
	  uncorrected p-values were requested. 

	. p-value display in function verboseBarplot is now cleaned up by
	  properly arranging spaces.

	. Bugfix in mergeCloseModules: function now completes correctly when
	  all modules are merged into a single module.

	. Internal bugfix in C function minWhichMin: function now works
	  correctly when the first entry is NA or NaN.

2012/04/23: 1.20

	. New function blueWhiteRed that produces a color sequence
	  distinguishable by people with the most common kind of color
	  blindness (green-red color blindness). The currently much-used
	  greenWhiteRed now outputs a warning to that effect. We recommend
	  that users switch to blueWhiteRed. 

	. The default color palette for numbers2colors is now blueWhiteRed.

	. Function TOMsimilarity now forces the diagonal of the input
	  adjacency matrix to be 1. The diagonal is not really meaningful in a
	  network analysis, but the underlying C code assumes the diagonal to
	  be 1 since it simplifies calculations. This change also applies to
	  TOMdist (which calls TOMsimilarity). 

	. Function blockwiseConsensusModules now accepts argument
	  trimmingConsensusQuantile and makes the consensus in module trimmimg
	  consistent with the consensus in network construction and 
	  module identification.

	. Function recutConsensusTrees now accepts arguments trimmingConsensusQuantile
	  and mergeConsensusQuantile with the same effect as in
	  blockwiseConsensusModules.

	. Removed argument minKMEtoJoin from blockwise* and recut* functions as it has
	  not been used by the actual code.

	. Function verboseBarplot now accepts argument horiz and is capable of
	  creating horizontal barplots.

	. Internal: C function minWhichMin now ignores missing values.

2012/02/28: 1.19

	. Argument name change in function TOMplot: colors and colorsLeft are
	  now Colors and ColorsLeft to avoid conflict with argument col to
	  functions heatmap and image.

	. Bugfix in internal function .consensusMEDissimilarity that caused crashes
	  mergeCloseModules.

	. DIFF: blockwiseConsensusModules now passes the argument mergeConsensusQuantile
	  to mergeCloseModules, which can lead to different module merging 
	  compared to previous versions. Use mergeConsensusQuantile = 0 to 
	  reproduce results from older versions of this package.
	  
	. Function mergeCloseModules now takes arguments consensusQuantile,
	  corFnc and corOptions

	. New function blockwiseIndividualTOMs to calculate individual TOMs 
	  across multi-set expression data

	. New functionality in blockwiseConsensusModules that can now utilize
	  pre-calculated individual TOMs, giving more flexibility

	. New utility function lowerTri2matrix

	. Internal change: default chunk size in consensus module calculation
	  is now 1e8 instead of 1e7. Most computers with at least 2GB of
	  memory should be able to handle as much; the size can be lowered (or
	  increased) if necessary.

	. Function sizeGrWindow now calls dev.new rather than X11

	. New function nSets to directly return the number of sets in a
	  multi-set variable.

	. Function verboseBarplot now returns the midpoints of the drawn bars
	  (as the function barplot does) augmented by the bar heights as
	  attribute "height".

	. Minor changes and cleanup in code

	. New citation added for our JSS article

2012/01/12: 1.18-2

	. Bugfix in function consensusKME fixes column names of output

2012/01/04: 1.18-1

	. Bugfix in function GOenrichmentAnalysis fixes occasional crash of
	  the function

2011/12/22: 1.18

	. DIFF: p-value calculation in userListEnrichment is now corrected 
	  to give the probability of overlap **as strong or stronger** than observed,
	  rather than that of overlap **stronger** than observed. The resulting 
	  p-values are more conservative; the difference can be large for very small
	  categories.

	. metaAnalysis and consensusKME now also calculate meta-analysis
	  statistics using weights proportional to the square root 
	  of the number of samples

	. Added citation information for the package. The citation is available
	  by typing the command citation("WGCNA"). Please cite the package 
	  if you use it in published research. (The citation("WGCNA") gives 
	  somewhat mis-formatted results on older R versions, sorry.)

2011/12/20: 1.17-1

	. Minor clean-up of greeting message

	. Functions goodSamples and goodGenes as well as their combined and
	  multi-set versions now properly respect settings of minNSamples and
	  minNGenes

2011/12/06: 1.17

	. Function consensusKME now returns additional statistics based on 3
	  different sets of weights

	. Bugfix in function TOMplot: the heatmap is now drawn correctly

	. GOenrichmentAnalysis is now about 40% faster

	. nearestCentroidPredictor is now more robust to constant variables

	. Bugfix in function standardScreeningNumericTrait: default value for
	  argument corOptions is now correct


2011/11/16: 1.16

	. Bugfix in standardScreeningBinaryTrait: sign of `signed' Kruskal test
	  statistic is now calculated correctly

	. Function metaAnalysis now (optionally) also calculates meta-analysis
	  statistics using the rankPvalue function.

	. Function consensusKME now also optionally uses rankPvalue for
	  meta-analysis of kME results across input data sets

2011/11/14: 1.15

	. Due to CRAN requirements, R versions below 2.10 are not supported anymore.

	. New function multiData.eigengeneSignificance for calculating module eigengene 
	  significances in multi-set situations.

	. DIFF: bugfix in function pickSoftThreshold, subtraction of
	  self-connectivity is now corrected which may lead to slightly
	  different scale-free analysis results (thanks to Michael Linderman
	  for reporting it).


2011/11/08: 1.14

	. The default value of argument calculateCor.KIMall in function
	  modulePreservation is now FALSE to speed up execution.

	. New function consensusKME to calculate "consensus" kME across
	  several data sets.

	. Function standardScreeningBinaryTrait now takes arguments corFnc and
	  corOptions.

	. Argument 'signed' to function 'numbers2colors' now has a default
	  value that is TRUE if the input contains data with both positive and
	  negative signs.

	. labels2colors now accepts missing data in input, and the input
	  labels can be non-numeric

	. Bugfix in standardScreeningNumericTrait: setting qvalues=FALSE
	  now works as intended.

	. Bugfix in votingLinearPredictor: function now works when xTest is
	  NULL.

	. DIFF bugfix in rankPvalue: function now returns correct values also when
	  column weights are specified

	. Default value of argument var.equal in function
	  standardScreeningBinaryTrait has been changed to FALSE to make it
	  consistent with the defaults of function t.test.

	. Function pickSoftThreshold now alos accepts similarity matrix as
	  input.

	. Function nearestCentroidPredictor now works also without specifying 
	  test data (xtest).

	. Function nearestCentroidPredictor lost multiple input arguments that 
	  related to un-loved sample network options and removal of PCs.

	. Function accuracyMeasures now also outputs the naive accuracy rate.

	. New data set SCsList containing stemm cell marker genes that can be
	  used with userListEnrichment. 

	. New function metaAnalysis to calculate meta-analysis significance
	  statistics


2011/08/17: 1.13

	. Multi-threading is now disabled by default but can be enabled by
	  setting the environment variable ALLOW_WGCNA_THREADS=<number_of_threads>
	  or using the function allowWGCNAThreads(). 

2011/08/16: 1.12

	. Code cleanup to satisfy CRAN package check
	. Functions plot.cor and plot.mat renamed to plotCor and plotMat to avoid 
	  confusion with methods for the plot generic
	. Function userListEnrichment now returns a slightly more informative
	  output in which the type of the refrence category is also indicated.


2011/07/06: 1.11-3

	. bugfix in modulePreservation fixes an additional bug that was introduced in 1.11-1 
	. bugfix in votingLinearPredictor: function now produces valid output
	  when some (but not all!) features have zero variance
	. fixed names of output in votingLinearPredictor

2011/06/06: 1.11-2

	. bugfix in blockwiseConsensusModules fixes a crash of the function

2011/05/31: 1.11-1

	. bugfix in modulePreservation fixes internal errors that appeared under certain circumstances
	. small changes in compiled code should make the code compatible with older gcc versions

2011/05/11: 1.11

	. bugfix in conformityDecomposition: calculation corrected
	. bugfix in userListEnrichment: internal data sets are now used
	  correctly
	. bugfix in collapseRows that affected the group2row component in the returned value.
	  The bug caused some of the returned representative rows to be incorrect but had
	  no effect on the collapsed data.
	. bicor now issues a warning when any of the input variables 
	  (or their columns) have zero MAD.
	. numbers2colors gains the argument commonLim to specify whether
	  limits should be column-specific or universal
	. bug fix in numbers2colors: having missing data and out of range data
	  at the same time will not cause an error anymore


2011/04/20: 1.10-2

	. Bug in function cor fixed that caused an unncessary slowdown. Results were not affected.
	. Typos in several help files fixed: use = 'Spearman' is now corrected
	  to use = 'spearman' (thanks to Eric L. Du for pointing it out).

2011/04/19: 1.10

	. New function accuracyMeasures for summarizing 2x2 confusion tables 
	. New prediction function votingLinearPredictor and
	  nearestCentroidPredictor
	. New functions proportionsInAdmixture.R and populationMeansInAdmixture.R 
	  for estimating proportions and populations meanspopulations means in
	  admixtures
	. Several additional functions by Jeremy Miller: 
	  chooseOneHubInEachModule, consensusDissTOMandTree, kMEcomparisonScatterplot, 
	  moduleMergeUsingKME, orderBranchesUsingHubGenes, overlapTableUsingKME,
	  stratifiedBarplot, swapTwoBranches, reflectBranches, selectBranch, userListEnrichment
	. New function mutualInfoAdjacency by Lin Song
	. New functions coClustering and coClustering.permutationTest
	. Due to excessive problems with Tcl/Tk, we dropped the dependency on
	  package qvalue and incorporated the necessary R code directly into
	  WGCNA
	. plotColorUnderTree and plotDendroAndColors gain additional
	  flexibility when working with rows of text labels. 
	. The argument 'colorText' to the above functions has been renamed to
	  'rowText'. Sorry for any code that becomes broken because of this!
	. VerboseScatterplot gains arguments to set the regression line color and type.
	. Colors for text labels in labeledHeatmap can now be set.

2011/02/05: 1.00

	. Functions standardScreeningBinaryTrait and standardScreeningNumericTrait can now optionally turn
	  off the calculation of q-values as the latter sometimes leads to problems.
	. Character expansion for axis labels in labeledHeatmap can be set separately 
	  for x and y axis.
	. The ubiquitous corOptions argument can now take the value of an empty string ("").
	. New utility function prepComma.
	. New set of functions that calculate adjacency from a given similarity matrix.


2010/12/17: 0.99

	. Functions [bi]cor gain the ability to calculate cosine [bi]correlations, 
	  invoked using the argument cosine = TRUE. Similar functionality added 
	  to blockwise[Consensus]Modules and TOMsimilarityFromExpr. 
	  For most other functions using correlations, the argument corOptions can be 
	  used to request cosine correlations.
	. Corrected error message in function adjacency
	. Functions [bi]corAndPvalue now also return the number of
	  observations for each p-value

2010/11/12: 0.98

	. Bugfix in functions [bi]corAndPvalue that gave incorrect p-values
	  when input y = NULL
	. Functions [bi]corAndPvalue now also return the Student t statistic
	  from which the p-values are calculated. 
	. Function standardScreeningNumericTrait now accepts arguments corFnc
	  and corOptions

2010/10/29: 0.97

	. Functions [bi]corAndPvalue now also return the Fisher Z statistics.
	. Function adjacency can now calculate distance-based networks as well, 
	  via type="distance". Various distance functions and options can be used.
	. Functions signedKME and networkScreening now accept arguments cor
	  and corOptions that can be used to specify the correlation function
	  to be used in the calculations.
	. Argument 'y' in [bi]corAndPvalue now has a default value NULL
	. DIFF: displayed value of correlation p-value in function
	  verboseScatterplot is now based on Student distribution instead of
	  Fisher normal approximation. This change only affects plots.

2010/09/23: 0.96

	. New functions pquantile, pmean, pmedian for calculation of
	  "parallel" quantiles, means, and medians.
	. Functions cor and bicor now give a more descriptive error description when 
	  an argument with one dimension equal zero is passed to the functions.

2010/09/16: 0.95

	. More changes to function collapseRows: renamed arguments, changed defaults, 
	  code cleaned up and bugs fixed. The function collapseRows should still be
	  considered experimental.

2010/09/05: 0.94

	. DIFF: big fixed in modulePreservation that put incorrect input into
	  Zconnectivity.preservation which also affected Zsummary. We apologize
	  for this error.
	. Bug fixes in function collapseRows

2010/08/25: 0.93

	. modulePreservation now also calculates density and connectivity
	  statistics based on clustering coefficient and maximum adjacency
	  ratio.
	. New functions mutualInfoAdjacency and AUV2predicted provide basic
	  interfacing between mutual information methods and weighted networks
	. Minor cleanup of help files

2010/07/26: 0.92-3

	. Package file cleanup, nothing changed from user perspective

2010/07/14: 0.92-1

	. Bug in compiled calculation of adjacency fixed. This may have
	  affected calculations of TOM when TOMType = "signed". Apologies if
	  important results were affected.

2010/06/24: 0.92

	. DIFF: in modulePreservation, by default Zsummary is only calculated
	  from meanAdj, cor.kIM and cor.Adj.
	. DIFF: in modulePreservation, a new option includekMEallInSummary (default FALSE)
	  controls whether cor.kMEall should be included in summary statistis
	. output of modulePreservation now has names in permutationDetails to facilitate 
	  detailed studies of permutation results

2010/06/10: 0.91

	. DIFF: in modulePreservation, values of cor.kME, cor.kMEall and
	  meanSignAwarekME are now stripped of their sign, both in observed
	  values and in permutations. This is done because the eigengene may
	  flip sign between data sets, leading to artificially low
	  preservation scores. 
	. DIFF: p-values calculated by modulePreservation are now returned as logarithms in base 10
	  (previously they were returned as natural logarithms). Names of the returned components also
	  changed slightly to emphasize that the p-values are returned as logarithms.
	. Additional summarycolumns added to the output of modulePreservation 
	  for observed and permutation preservation statistics
	. Function collapseRows now selects a single probe to represent each gene

2010/06/05: 0.90

	. modulePreservation now also returns p-values and optionally the q-values corresponding to the
	  permutation Z scores
	. simulateDatExpr now sets (artificial) gene and sample names, for easier integration with some	
	  analysis functions (notably modulePreservation)
	. incompatibilities with new versions of R in exportNetworkTo[Visant,Cytoscape] fixed 
	. new function subsetTOM to efficiently calculate TOM among a subset
	  of network nodes 
	. bugs in vectorTOM fixed
	. DIFF: modulePreservation now limits the size of the gold module to
	  at most half the total number of genes in the comparison, to make
	  sampling and permutation calculations meaningful. This may slightly affect
	  calculated results for the gold module, but will not affect results of
	  any other modules.


2010/05/21: 0.89

	. DIFF: definition of cluster coefficient has been slightly changed,
	  which affects approximate conformity-based network concepts
	. new functions rankPvalue and metaZfunction
	. new function standardScreeningNumericTrait
	. bug in automatic labeling of axes in verboseBoxplot has been fixed
	. several help files added and updated
	. minor changes in standardScreeningBinaryTrait, standardScreeningCensoredTime
	. scaleFreeFitIndex now does not calculate a log(log(..)) based fit
	  that often led to errors
	. new function collapseRows by Jeremy Miller to convert probe-level
	  expression to gene-level expression

2010/05/07: 0.88-2

	. unnecessary dependence on package fields removed. 

2010/05/07: 0.88-1

	. DIFF: bug in cor(x) and bicor(x) fixed that produced incorrect results
	  when a column of x was all missing (NA). We aplogize for any incovenience
	  this error may have caused.

2010/03/17: 0.88

	. new functions corAndPvalue and bicorAndPvalue that calculate (bi)correlation p-values efficiently
	  for matrices of correlations


2010/02/19: 0.87

	. bicor gets a new argument pearsonFallback that lets the user specify 
	  the handling of cases with zero median absolute deviation that would
	  normally lead to NA values.
	. mergeCloseModules (and blockwise[Consensus]Modules) now more robust: 
	  works also in the case of a single module
	. DIFF: A bug was fixed that affected bicor(x) calculation with missing data on Windows
	  (calculations of 2-variable bicor, single-variable bicor without missing data, and any 
	   calculations where multi-threading is available [most platforms except Windows] were 
	   not affected by this bug). The bug caused some calculations to be a bit off. 
	   We apologize for any problems this may have caused.

2010/02/10: 0.86

	. bug in colQuantileC fixed.
	. EXPERIMENTAL: a major addition to modulePreservation now allows
	  module preservation calculations based on general adjacency matrices. 
	. bugfix in labelPoints fixes a warning message

2009/12/26: 0.85

	. DIFF: in modulePreservation, separability now correctly works for
	signed and signed hybrid networks.
	. modulePreservation gains argument to specify correlation function

2009/12/05: 0.84

	. new function spaste
	. addtions and corrections to help files
	. bugfix in standardScreeningCensoredTime
	. bugfix in blockwiseModules: module colors are now not scrambled when
	  some genes are excluded because they don't pass goodSamplesGenes
	. improved labelPoints: more consistent label offsets and fixed
	  meaning of 'offs' in help file

2009/11/24: 0.83-1

	. help cleaned up
	. Windows package now compatible with R-2.10

2009/11/22: 0.83

	. new function modulePreservation calculates module preservation
	  statistics between independent data sets
	. new dependence on package splines
	. new function labelPoints to semi-inteligently label points in a
	  scatterplot.
	. extended functions pickSoftThreshold, pickHardThreshold
	. minor bugfix in scaleFreePlot
	. new function standardScreeningCensoredTime
	. new function scaleFreeFitIndex

2009/11/17: 0.82-1

	. bugfix in plotEigengeneNetworks (thanks to Ronnie Alves for pointing it out)
	. bugfix in heatmapWithLegend when used with mixed color and text labels

2009/11/10: 0.82

	. new function standardScreeningBinaryTrait
	. bugfix in verboseBarplot: the function now passes the ... arguments to barplot
	. verboseScatterplot gets argument sample for better handling of large vectors
	. labeledHeatmap gets arguments xColorWidth and yColorWidth that control the witdth 
	  of the color labels

2009/10/29: 0.81-2

	. bugfix in blockwise[Consensus]Modules: function now works when number of modules 
	  exceeds number of available colors
	. bugfix in exportNetworkToCytoscape: all nodes are now included in
	  the node file (thanks to Tim Gernat for pointing it out and suggesting
	  the fix)

2009/10/22: 0.81-1

	. addTraitToMEs now works with colnames instead of names
	. bugfix in bicor(x): when x has missing data, bicor now does not crash
	. minor bugfix in plotEigengeneNetworks: printAdjacency is now respected

2009/10/19: 0.81

	. several functions from the now defunct package sma were added, mainly
	  to allow our users to run all tutorials smoothly. Note that if 
	  sma package is used concurrently, identical copies of the duplicated 
	  functions will be available. Warning messages about this fact can be 
	  disregarded safely.
	. labeledHeatmap re-written to use an internal heatmapWithLegend
	  function. This means labeledHeatmap now works also in complicated
	  sectionings using layout(), which was not the case before.

2009/09/18: 0.80-1

	. crash in blockwise[Consensus]Modules and TOM calculations when using
	  bicor fixed; blockwise[Consensus]Modules and TOM calculations using
	  compiled code get a new argument maxPOutliers corresponding to the
	  bicor argument of the same name (see news in 0.80).

2009/09/13: 0.80

	. new functions conformityBasedNetworkConcepts and fundamentalNetworkConcepts
	  calculate network concepts (indices)
	. bicor gains the argument maxPOutliers specifying the maximum
	  fraction of data that can be considered outliers
	. new function verboseBarplot to produce annotated barplots
	. verboseBarplot, verboseBoxplot and verboseScatterplot now have
	  complete help files

2009/09/01: 0.79-4

	. bug in networkConcepts fixed
	. goodGenesMS and goodSamplesMS now a bit more robust
	. new function vectorizeMatrix to turn a matrix into a vector of non-redundant components
	. orderMEs now works also on the single set output of moduleEigengenes.
	. plotColorUnderTree, plotDendroAndColors, and plotClusterTreeSamples
	  are now capable of displaying text labels that identify the
	  displayed colors by name.
	. overlapTable now works when the arguments are 1xn or nx1 matrices.

2009/08/07: 0.79-3

	. GOenrichmentAnalysis now works for yeast data as well. Yeast GO
	  mappings are given in a slightly different database (ORF identifiers
	  instead of Entrez) and previous versions of the function did not
	  handle this difference (thanks to Maryam Anwar for pointing this out).

2009/08/05: 0.79-2

	. Default color in addGuideLines now darker ((grey30 instead of grey70).
	. Default color in addGrid now darker (grey30 instead of grey70).
	. Error in bicor help file corrected.
	. moduleEigengenes gets the option to turn off scaling expression data
	  before calculating the singular value decomposition. This should only
	  be used to speed up calculation if the data has been scaled
	  previously.
	. Bugfix in simulateMultiExpr: the function now works when leaveOut=NULL
	. Minor changes to diagnostic messages in TOM calculations
	. Minor changes to printed values in verboseBoxplot
	. GOenrichmentAnalysis a bit more stable
	. GOenrichmentAnalysis can now analyze several sets of labels at the same time;
	  the idea is to give the user the option to quickly calculate enrichments
	  for a collection of competing module assignments. 
	. Enrichment calculations can optionally be restricted to a subset of modules

2009/06/05: 0.79-1

	. GOenrichmentAnalysis now faster and a bug in returned genePositions fixed.
	. function plotEigengeneNetworks gained two additional arguments controling the printing of
	  numerical values into the adjacency heatmaps.

2009/06/01: 0.79

	. Added (experimental) function GOenrichmentAnalysis for automatic GO enrichment
	  analysis 

2009/05/26: 0.78

	. Package qvalue becomes optional. If it is not installed, q values
	  will not be calculated in the network screening functions.

2009/05/18: 0.77-1

	. Hubgene calculation in moduleEigengenes now works even if only
	  one gene has valid data.
	. Bug in labeledBarplot fixed that crashed the function if no error bars were given.

2009/05/05: 0.77

	. DIFF: reverting to default TOM denominator method "min"
	. Bug fix in .clustOrder affecting consensusOrderMEs and
	  mergeCloseModules when there is only one proper module present.

2009/04/02: 0.76

	. Display of p-value in verboseScatterplot improved: small p values now shown more accurately
	. Spurious warning message in matchLabels is now suppressed
	. additional TOM option added: use mean denominator instead of minimum	
	. DIFF: default TOM denominator method is mean. Use TOMDenom = "min" where necessary to reproduce
	  older results
	. help files for [unsigned]adjacency corrected

2009/03/18: 0.75

	. fixed a bug in matchLabels that caused unrelated modules to be
	  matched
	. faster correlation calculations are now implemented both for [bi]cor(x)
	  as wellas [bi]cor(x,y). On platforms where POSIX threads are
	  available, certain parts of the [bi]cor calculations are threaded
	. functions [bi]cor, blockwise[Consensus]Modules, TOMsimilarityFromExpr
	  now have additional parameters providing control over threading and
	  over the tradeoff between speed and precision in handling missing data
	  in the correlation calculations
	. fixed a bug in bicor(x,y) that was present when any of the columns
	  consisted of only missing data and that caused incorrect NAs and 0s
	  in the result.
	. DIFF: softConnectivity now subtracts 1 from the sum of adjacencies to remove 
	  the adjacency of a gene with itself.
	. DIFF: order of parameters in softConnectivity has changed.
	. DIFF: default number of centers in [consensus]projectiveKMeans is
	  now an attempt to fully utilize resources estimated from preferredSize.
	. softConnectivity now accepts parameter 'type' that can specify the
	  network type to be used;
	. fixed a bug in function adjacency that would crash the function in
	  certain circumstances.

2009/03/04: 0.73

	. default p value threshold in matchLables relaxed to 5e-2
	. DIFF: [consensus]ProjectiveKMeans now default to a much higher number
	  since that seems to lead to better results.
	. Faster versions of correlation and bicorrelation implemented. Fast correlation available 
	  for general use in function cor1.
	. bugfix in labeledHeatmap: xLabels and xSymbols do not overlap anymore
	. goodGenes, goodGenesMS, etc now resistant to whole gene profiles containing only NAs
	. minor changes in verbosity of [consensus]projectiveKMeans

2009/02/18: 0.72

	. corPvalueStudent now correctly returns small values instead of zero
	. minor changes in default sectioning in plotDendroAndColors
	. plotDendroAndColors and plotColorUnderTree now plot colors top to bottom
	  (previously was bottom to top)
	. faster median calculation in C implementation of bicor
	. added function overlapTable for computing significance of module overlaps
	. added function matchLabels for relabeling modules in a source partition 
	  to best approximate module labels in a given reference partition

2009/02/06: 0.71-1

	. minor changes in verbosity of TOM calculations
	. blockwise[Consensus]Modules: random seed is now set only if it is non-NULL; this allows the
	  user to force the functions to run without setting a seed, which was not possible before.

2009/02/05: 0.71

	. package flashClust that implements fast hierarchical clustering is now required and used
	  throughut.

2009/01/29: 0.70

	. adapted for dynamicTreeCut-1.20: PAM stage in the dynamic tree cut
	  used in blockwise module detection functions can now optionally
	  respect the dendrogram  in the sense an object can be PAM-assigned
	  only to clusters that lie below it on the branch that the object is
	  merged into. Note that this requires dynamicTreeCut 1.20 or higher.
	. TOM calculation: "Rough guide to max array..." now respects verbose parameter

2009/01/25: 0.67-2

	. bug in recutBlockwiseTrees fixed (only visible if some genes or samples were bad)
	. bug in clusterCoef fixed
	. typos in help files fixed (cutreeStatic[Color])
	. drawing of color label rectangles slightly modified in labeledHeatmap to
	prevent excessively large rectangles 

2008/12/23: 0.67-1

	. help file for intramodularConnectivity corrected
	. corPvalueFisher corrected when twoSided=TRUE: used to give p-values inflated by a factor of 2

2008/12/09: 0.67

	. addTraitToMEs now works also when the multiMEs only contain the eigengenes but no average 
	  expression
	. labeledBarplot now accepts xLabelsAngle
	. fixed interpretation of grey name in orderMEs, consensusOrderMEs
	. scaleTOMs in consensusBlockwiseModules now actually has an effect

2008/12/04: 0.66

	. new function exportNetworkToCytoscape

2008/12/04: 0.65-3

	. new function networkConcepts
	. Bug fix in plotEigengeneNetworks when only one set is given
	. Minor changes and cleanup in help files and printed diagnostics

2008/11/05: 0.65-2

	. Bugfix in exportNetworkToVisANT: no more spurious errors when probe to gene name translation
	  table is given.

2008/11/02: 0.65-1

	. Bugfix in reassigning genes between modules when KME difference too significant: 
	  an empty set of reassign candidates doesn't throw an error anymore.
	. Several help files added

2008/10/25: 0.65

	. added function preservationNetworkAdjacency 

2008/10/09: 0.64

	. different versions of package impute are now supported.
	. help files expanded
	. help files' syntax corrected so all item descriptions are now
	  displayed properly.

2008/10/01: 0.63-1

	. bug in [consensus]ProjectiveKMeans fixed that would cause a crash if
	  the center with highest index became empty
	. numbers2colors resistant to values out of range of the given min and max.
	. p-value in verboseScaterplot now corresponds to the actual correlation printed instead of
	  the Pearson correlation value. However, the p-values are always calculated assuming the
	  correlation value is actually Pearson. 

2008/09/18: 0.63

	. [automaticN|n]etworkScreening now accept option getQValue that can be used to turn off q value 
	  calculations; they also report counts of module eigengenes with gene
	  significances in specific intervals.

2008/09/17: 0.62-1

	. C implementation of column quantile (i.e., apply(data, 2, quantile)) giving immense speedup 
	  of consensus quantile calculations in new function colQuantileC

2008/09/17: 0.62

	. Fixed bugs in blockwiseConsensusModules when disk cache not in use, and when consensusQuantile>0
	. Added function exportNetworkToVisANT to export a network to VisANT.
	. Help files for several functions added

2008/09/13: 0.61

	. TOMdist function added, defined simply as 1-TOMsimilarity, for easier migration of older code.

2008/09/10: 0.60-3

	. [consensus]projectiveKMeans now resistant to an svd failure, using a weighted mean if svd
	  returns an error.

2008/09/05: 0.60-2

	. Bug fix in C implementation of bicor (bad bug!!)

2008/09/04: 0.60-1

	. Big fixes in blockwiseConsensusModules related to TOM sampling

2008/09/02: 0.60

	. minCoreKME default now 0.5 (was 0.7 for Consensus functions, which didn't make much sense)
	. blockwise functions now complete all blocks even if there is a block
	  with no modules detected or with an error during ME calculation.
	. consensusProjectiveKMeans can now optionally use mean as definition
	  of consensus distance, improving convergence in multiple set situations
	. several help files added
	. bicor now implemented consistently in R code and in compiled code:
	  both call the same set of C functions and treat NAs correctly and
	  consistently. Functions bicov and bicorNAy are removed. 
	. pickSoftThreshold now accepts networkType argument
	. blockwiseConsensusModules can now optionally save samples used for TOM scaling

2008/08/29: 0.55

	. Changes of input arguments and output for blockwise[Consenus]Modules
	. Errors in pre-clustering and calculation of signed networks fixed
	. New functions for re-cutting dendrograms produced in blockwise[Consenus]Modules
	. Bug in the return value of blockwise[Consensus]Modules fixed: blockGenes now correctly refer to
	  all genes instead of goodGenes; 
	. New function numbers2colors

2008/08/26: 0.50-2

	. Fixed bugs in blockwiseConsensusModules causing a crash when module eigengene calculation fails

2008/08/20: 0.50-1

	. fixed bug in compiled code bicor1 function that used quick calculation whenever at least one of
	  the x,y had the correct NAs instead of both.  
	. fixed crash in consensusBlockwiseModules when data not checked for missing entries
	. added info printing when merging clusters in consensusProjectiveKMeans

2008/08/15: 0.50

	. [consensus]projectiveKMeans improved: no crash when some clusters become empty, faster
	. blockwise[Consensus]Modules: additional parameter checkMissingData can optionally turn off
	  checking for missing data when it's not necessary.
	. a few help files added

2008/08/05

	. Added random seed setting to blockwise[Consensus]Modules and [consensus]ProjectiveKMeans 
	  for repeatability

	. Lowered reassignThreshold to 1e-6 to prevent too many reassigned genes.

2008/08/03: 0.42-2

	. Fixed bug causing a crash when no modules are detected.

2008/08/02: 0.42-1

	. More complete help pages, bug in blockwiseModules fixed (reported by Anatole Ghazalpour)

2008/07/23: 0.41

	. Many enhancements, improvements and bugfixes

2008/06/02: 

	. Changes to TOMplot to make the dendrograms on the side more informative

	. Changes to scaleFreePlot to pass more of ... to the plotting
	function (removed separate title() command).

2008/05/29: 0.12

	. Performance improvements, extra parameters in blockwiseConsensusModules

2008/05/16: 0.11-1

	. nearestNeighborConnectivity (and softConnectivity) now work even when there is 1 gene in the
	  last block
	. More bug fixes.

2008/05/15: 0.11-0

	. Numerous bug fixes
	. blockwise[Consensus]Modules fixed (ub-broken) from the change of batch to block.
	. blockwise[Consensus]Modules get an option to choose the TOM function.

0.1.0: Basic functions in place.
