RELEASE HISTORY OF THE "MALDIquant" PACKAGE
===========================================


CHANGES IN MALDIquant VERSION 1.22 [2022-11-10]:
------------------------------------------------

BUGFIXES

* Fix merging metadata with `NA` values; affected functions:
  `mergeMassSpectra`, `mergeMassPeaks`, `averageSpectra`.
  Thanks to Petr Hasler <petr.hasler@upol.cz> for reporting.

MODIFICATIONS

* Fix Paolo's family name in `DESCRIPTION` file.


CHANGES IN MALDIquant VERSION 1.21 [2021-12-19]:
------------------------------------------------

MODIFICATIONS

* Reduce memory requirement for `filterPeaks`, especially for very sparse peak
  lists by rewriting `filterPeaks` and `.as.matrix.MassObjectList` to use a
  `list` internally instead of a `matrix`; see #71.
  Contributed by Paolo Inglese <p.inglese@outlook.com> (@paoloinglese).

INTERNAL CHANGES

* Remove `is.null(getGeneric(...))` tests before setting generics for
  S4 methods to avoid errors in package loading (especially with
  `pkgload::load_all()`).


CHANGES IN MALDIquant VERSION 1.20 [2021-07-29]:
------------------------------------------------

NEW FEATURES

* `binPeaks` gains a new method `"reference"` to bin to the first given
  `MassPeaks` object; see #69.
  Thanks to Alexander Bartel (@ndevln) for the suggestion.

MODIFICATIONS

* Don't run example in `MALDIquant-parallel` manual page to avoid long example
  runtime WARNING in R CMD check.
* Change URLs from http to https where possible.


CHANGES IN MALDIquant VERSION 1.19.5 [2020-04-02]:
--------------------------------------------------

BUGFIXES

* Don't import `plot` from graphics to fix error in R-devel (R 4.0.0)
* Bump required R version to 4.0.0.


CHANGES IN MALDIquant VERSION 1.19.4 [2019-08-08]:
--------------------------------------------------

BUGFIXES

* Use `data(fiedler2009subset)` in manual page to avoid WARNING on R-devel.


CHANGES IN MALDIquant VERSION 1.19.3 [2019-05-12]:
--------------------------------------------------

BUGFIXES

* `approxfun`: remove wrong generic.
  Thanks to Martin Mächler for reporting.
* Remove useless generics for `as.matrix`, `length`, `lines`, `points`, `plot`.


CHANGES IN MALDIquant VERSION 1.19.2 [2019-03-13]:
--------------------------------------------------

BUGFIXES

* `binPeaks` propagated values to empty MassPeaks objects; see #61.
  Thanks to Chase Clark (@chasemc) for reporting.


CHANGES IN MALDIquant VERSION 1.19.1 [2019-03-03]:
--------------------------------------------------

BUGFIXES

* `calibratyIntensity` ignored the `mc.cores` argument.
  Thanks to @dsammour for reporting.


CHANGES IN MALDIquant VERSION 1.19 [2018-11-26]:
------------------------------------------------

IMPROVEMENTS:

* `determineWarpingFunctions`'s return value gains a new argument `nmatch`
  storing the number of matches of the given peaks against the reference; see
  #59.
  Suggested by Melanie Föll (@foellmelanie).


CHANGES IN MALDIquant VERSION 1.18.1 [2018-10-04]:
--------------------------------------------------

INTERNAL CHANGES

* `determineWarpingFunctions`, change handling of minimal necessary peaks for
  each warping method.


CHANGES IN MALDIquant VERSION 1.18 [2018-07-06]:
------------------------------------------------

IMPROVEMENTS

* `determineWarpingFunctions` gains an `allowNoMatches` argument. If
  `allowNoMatches` is `TRUE` a warning is thrown instead of an error and the
  resulting list of warping functions will contain `NA` at the specific index;
  see #57.
  Suggested by Melanie Föll (@foellmelanie).
* `warpMassPeaks`/`warpMassSpectra` gain an `emptyNoMatches` argument. If
  `emptyNoMatches` is `TRUE` the intensity values of
  `MassPeaks`/`MassSpectra` objects with missing warping functions are set to
  zero; see #57 for details.
  Suggested by Melanie Föll (@foellmelanie).
* `alignSpectra` gain two new arguments: `allowNoMatches` and
  `emptyNoMatches`; see #57 for details.
  Suggested by Melanie Föll (@foellmelanie).
* The manual pages of `alingSpectra`, `binPeaks`, `determineWarpingFunctions`
  and `referencePeaks` gain a sentence for use of the "tolerance" argument in
  ppm; see issue #56 for details;
  Suggested by Jimmy Lawrence <jimmymisc@gmail.com>.

REMOVED ARGUMENT

* `plot` now doesn't draw a horizontal line at `y == 0` anymore. The argument
  "abline.col" was removed as well. To get the old behaviour call
  `plot(spectrum); abline(h=0, col="#808080")`;
  Suggested by Jimmy Lawrence <jimmymisc@gmail.com>.


CHANGES IN MALDIquant VERSION 1.17 [2017-11-12]:
------------------------------------------------

NEW FEATURES

* `smoothIntensity` gains a new argument "weighted" (default: `FALSE`) for
  `method="MovingAverage"`. If `TRUE` a weighted moving average is applied.
  Added by Sigurdur Smarason.


CHANGES IN MALDIquant VERSION 1.16.4 [2017-08-27]:
--------------------------------------------------

BUGFIXES

* `coordinates` now returns `NULL` (instead of an error) if there are no imaging
  information in the metadata of a spectrum/peaks list.


CHANGES IN MALDIquant VERSION 1.16.3 [2017-05-30]:
--------------------------------------------------

IMPROVEMENTS

* Mass values are sorted now if they were not before;
  affected functions: `createMassSpectrum`, `createMassPeaks`, `validObject`.

INTERNAL

* Replace `sort.int(..., method="quick")` by `sort.int(...)` and let R decide
  which sorting method is appropriated ("radix"/"insert" [default] is often
  faster than "quick").


CHANGES IN MALDIquant VERSION 1.16.2 [2017-04-04]:
--------------------------------------------------

INTERNAL

* Disable symbol search for native C routines.


CHANGES IN MALDIquant VERSION 1.16.1 [2016-12-23]:
--------------------------------------------------

BUGFIXES

* `match.closest`: fix results for `x >= max(table)`.


CHANGES IN MALDIquant VERSION 1.16 [2016-12-13]:
------------------------------------------------

NEW FEATURES

* `match.closest` allows relaxed matching.

INTERNAL

* The former hidden `.which.closest` is renamed into the exported
  `match.closest` and gains a "tolerance" and "nomatch" argument to allow
  relaxed matching.
* `.pseudoCluster` use the new `match.closest` (could result in slightly
  different tolerance values).


CHANGES IN MALDIquant VERSION 1.15 [2016-06-25]:
------------------------------------------------

NEW FEATURES

* Add `monoisotopicPeaks` to find monoisotopic peaks in `MassPeaks` objects.

IMPROVEMENTS

* `plot`: x-axis label is "m/z" now (was "mass" before).
  Thanks to Robert Winkler <robert.winkler@bioprocess.org> for reporting of the
  sometimes misleading label.
* Add `mz` and `mz<-` (same as `mass`/`mass<-`) to follow `ProtGenerics`
  guidelines and for consistency.

BUGFIXES

* `labelPeaks` didn't respect "srt=c(90, 180, 270, 360)" if
  "avoidOverlap=TRUE". Please note that "srt %% 90 != 0" in combination with
  "avoidOverlap=TRUE" is still not supported!

INTERNAL

* Throw a warning if `plotMsiSlice` was called on a interactive device with
  multiple centers (the warning was not thrown correctly before).
* Throw an error if `trim,list` was called on a generic list instead
  of a list of AbstractMassObjects.
* Remove textLabelRect-functions.R and move its content to
  calculateLabelPositions-functions.R.


CHANGES IN MALDIquant VERSION 1.14 [2015-11-18]:
------------------------------------------------

IMPROVEMENTS

* `?estimateBaseline`: clarify that "decreasing=TRUE" is the default for the
  SNIP baseline estimation algorithm (`estimateBaseline(..., method="SNIP")`).

BUGFIXES

* MALDIquant depends on R 3.2.0 now. Due to a bug in R (PR#15707, fixed in
  R 3.2.0) the ... argument was not interpreted in nested function calls. This
  results in failures of `calibratyIntensity` on R < 3.2.0.

REMOVED ARGUMENTS/FUNCTIONS

* `plotImsSlice`: (was defunct since 1.13) use `plotMsiSlice` instead. It has
  slightly different arguments; see `?plotMsiSlice` for details.

INTERNAL CHANGES:

* `.as.binary.matrix` now always returns an integer matrix.


CHANGES IN MALDIquant VERSION 1.13 [2015-09-16]:
------------------------------------------------

IMPROVEMENTS

* `calibratyIntensity` gains a "range" argument for "median" and "PQN" as well;
  in 1.12 just "TIC" was supported.
* Extend example section in `?MALDIquant-parallel` manual page.
* Add hint about _relative_ tolerance in manual pages `?alignSpectra`,
  `?binPeaks`, `?determineWarpingFunctions` and `?referencePeaks`;
  Thanks to Damien Portevin <damien.portevin@unibas.ch> for reporting of the
  ambiguous phrase.

MODIFICATIONS

* Rewrite DESCRIPTION and explain acronyms to follow the latest version of the
  CRAN Repository Policy.

DEFUNCT ARGUMENTS/FUNCTIONS

* `plotImsSlice`: use `plotMsiSlice` instead. It has slightly different
  arguments; see `?plotMsiSlice` for details.

BUGFIXES

* `calibrateIntensity`: don't apply a scaling factor that equals zero anymore
  (happens in rare cases for method="median"). It throws a warning instead and
  leaves the spectrum untouched; fixes #51.
* `.plotMsiSlice` just used the first center if "combine=TRUE";
  affected functions: `plotMsiSlice`.
* Add `smoothIntensity` to the `?MALDIquant-parallel` manual page. Thanks
  to Leiming Yu <leimingyu830@gmail.com> for reporting the missing entry.

INTERNAL CHANGES

* Importing non-base functions/methods from recommended R packages (graphics,
  stats, ...) as required by R-devel.
* Turn `.calculateLabelPositions`, `.testLabelOverlap`, `.labelOverlap` into
  normal functions (were methods before).
* `msiSlices`: use NA_real_ instead of logical NA.


CHANGES IN MALDIquant VERSION 1.12 [2015-06-11]:
------------------------------------------------

NEW FEATURES

* Add `as` for MassPeaks to convert them into MassSpectrum objects.
* Add `coordinates` methods for AbstractMassObjects and list objects to
  access/set coordinates for MSI datasets.
* Add `msiSlices` functions to create slices of a MSI dataset.
* `calibratyIntensity(object, method="TIC")`: gains a "range" argument allowing
  to calibrate spectra by TIC on a specific mass range; closes #27.
* Add parallel support on unix-based platforms using the parallel package. The
  following functions/methods supports the "mc.cores" argument (default is 1):
  `trim`, `transformIntensity`, `removeBaseline`, `calibrateIntensity`,
  `detectPeaks`, `alignSpectra`, `averageMassSpectra`, `mergeMassPeaks`;
  Please read also `?"MALDIquant-parallel"`.

IMPROVEMENTS

* `intensityMatrix`: rewrite to improve execution time.
* `trim`: rewrite to improve execution time.

MODIFICATIONS

* Change generics of `mass` and `intensity` from `function(object)` to
  `function(object, ...)` to provide the same generics as Bioconductor's
  ProtGenerics package.
* `intensityMatrix`: gains an attribute "mass" that stores the unique mass.

DEPRECATED ARGUMENTS/FUNCTIONS

* `plotImsSlice`: use `plotMsiSlice` instead. It has slightly different
  arguments; see `?plotMsiSlice` for details.

REMOVED ARGUMENTS/FUNCTIONS

* `intensityMatrix` for MassSpectrum objects (was defunct since 1.10).

BUGFIXES

* Fix vignette call in `?MALDIquant-package`.

INTERNAL CHANGES

* The return value of the internal `.as.matrix.MassObjectList` function gains an
  attribute "mass" that stores the unique mass (conversions of the colnames are
  not needed anymore);
  affected functions: `intensityMatrix`
* Remove some useless `cbind` calls in `.estimateNoise*` and
  `.estimateBaseline`; no user visible changes;
  affected functions: `estimateNoise`, `estimateBaseline`, `detectPeaks`
* Remove superfluous arguments in internal `.calibrateIntensitySimple`.
* Avoid double check for negative intensity values in `transformIntensity`.


CHANGES IN MALDIquant VERSION 1.11 [2014-08-11]:
------------------------------------------------

NEW FEATURES

* Add `plotImsSlice`: a function to plot Imaging Mass Spectrometry data.

MODIFICATIONS

* Rename the vignette to MALDIquant-intro.pdf.
* Move the content of the manual pages of `.savitzkyGolay` and `.movingAverage`
  to `smoothIntensity` and remove the old ones.
* Move the content of the manual pages of
  `.estimateBaseline{Snip,TopHat,ConvexHull,Median}` to `estimateBaseline` and
  remove the old ones.
* Move the content of the manual pages of `.estimateNoise{Mad,SuperSmoother}` to
  `estimateNoise` and remove the old ones.


CHANGES IN MALDIquant VERSION 1.10 [2014-04-11]:
------------------------------------------------

IMPROVEMENTS

* Add a general vignette.
* `createMassSpectrum`/`createMassPeaks`: a warning is shown if negative
  intensity values are found.
* `.transformIntensity`: a warning is shown if negative intensity values are
  generated and set them to zero;
  affected functions: `transformIntensity`, `smoothIntensity`,
  `calibrateIntensity`.
* `determineWarpingFunctions`: a warning is shown if the "reference" contains
  less than ten peaks;
  affected functions: `determineWarpingFunctions`, `alignSpectra`
* `trim`: a warning is shown if the resulting MassSpectrum/MassPeaks object
  does not contain any data points.

MODIFICATIONS

* Use `table` instead of `any(length(fiedler2009subset[[1]]) == sapply(...` in
  demo/workflow.R.

DEFUNCT ARGUMENTS/FUNCTIONS

* `intensityMatrix` for MassSpectrum objects.

REMOVED ARGUMENTS/FUNCTIONS

* `isMassObject`/`isMassObjectList`: use `isMassSpectrum`, `isMassPeaks`,
  `isMassSpectrumList` or `isMassPeaksList` instead.
* `totalIonCurrent,MassPeaks-method`: TIC of peaks is meaningless.
* `totalIonCurrent<-,MassSpectrum-method`:
  use `calibrateIntensity(..., method="TIC")` instead to calibrate/normalize
  MassSpectrum objects.
* `standardizeTotalIonCurrent`:
  use `calibrateIntensity(..., method="TIC")` instead to calibrate/normalize
  MassSpectrum objects.
* `calibrate`:
  use `calibrateIntensity(..., method="TIC")` instead to calibrate/normalize
  MassSpectrum objects.
* `ltrim`/`rtrim`: use `trim(..., range=c(min, max))` instead.
* `determineWarpingFunctions`, argument "warpingFunction": use "method" argument
  instead.
* `mergeMassPeaks`, argument "fun": use "method" argument instead.
* `mergeMassSpectra`: use `averageMassSpectra`.
* `savitzkyGolay`: use `smoothIntensity(..., method="SavitzkyGolay")` instead.
* `movingAverage`: use `smoothIntensity(..., method="MovingAverage")` instead.
* `transformIntensity`, argument "fun": use "method" argument instead.
* `removeBaseline`, argument "fun": use "method" argument instead.
* `detectPeaks`, argument "fun": use "method" argument instead.

BUGFIXES

* `.which.closest`: check limits to avoid missing matches in some
  rare edge cases;
  affected functions: `labelPeaks`.
* Add missing reference "Andrew 1979" to the `.estimateBaselineConvexHull`
  manual page.

INTERNAL CHANGES

* `estimateNoise`: move body of `estimateNoise,MassSpectrum` to internal
  `.estimateNoise`.
* Move tests into tests/testthat/ to adapt to testthat 0.8 and new
  CRAN policy; closes #44.
* `.localMaximaR`: removed. It was replaced by a C version of `.localMaxima`
  in 1.5.
* `.snipR`: removed. It was replaced by a C version of `.estimateBaselineSnip`
  in 0.2.
* `.lowerConvexHullR`: removed. It was replaced by a C version of
  `.estimateBaselineConvexHull` in 0.3.
* `.topHatR`: removed. It was never used and replaced by a C version of
  `.estimateBaselineTopHat` in 1.6.


CHANGES IN MALDIquant VERSION 1.9 [2014-01-14]:
-----------------------------------------------

NEW FEATURES

* Add `alignSpectra`: a wrapper around `detectPeaks`,
  `determineWarpingFunctions` and `warpMassSpectra` to provide an easier
  workflow.

IMPROVEMENTS

* `filterPeaks`: introduce "mergeWhitelists" argument to additionally keep peaks
  that occur at least in one group. The default behaviour does not changed.
  Please see the man page of `filterPeaks` for details.
* `intensityMatrix`: add "spectra" argument to allow interpolation of missing
  peaks if corresponding spectra is given.
* Replace some `lapply` calls by `mapply` to allow different
  "halfWindowSize" arguments etc.;
  affected methods: `smoothIntensity`, `removeBaseline`, `detectPeaks`.

MODIFICATIONS

* `filterPeaks`: "minFrequency" > 1 and "minNumber" > n is not set
  to 1 or n anymore; only a warning about "empty peak whitelists" is given;
  see also issue #26.
* `filterPeaks`: replace warning about too large "minFrequency" or "minNumber"
  by a warning about "empty peak whitelists".
* `intensityMatrix`: rename first argument to "peaks"
* demo/workflow.R: introduce `alignSpectra`.
* demo/warping.R: adapt to current preferred workflow.
* demo/peaks.R: add smoothing and a few new plots.

DEPRECATED ARGUMENTS/FUNCTIONS

* `intensityMatrix` for MassSpectrum objects.

DEFUNCT ARGUMENTS/FUNCTIONS

* `isMassObject`/`isMassObjectList`: use `isMassSpectrum`, `isMassPeaks`,
  `isMassSpectrumList` or `isMassPeaksList` instead.
* `totalIonCurrent,MassPeaks-method`: TIC of peaks is meaningless.
* `totalIonCurrent<-,MassSpectrum-method`:
  use `calibrateIntensity(..., method="TIC")` instead to calibrate/normalize
  MassSpectrum objects.
* `standardizeTotalIonCurrent`:
  use `calibrateIntensity(..., method="TIC")` instead to calibrate/normalize
  MassSpectrum objects.
* `calibrate`:
  use `calibrateIntensity(..., method="TIC")` instead to calibrate/normalize
  MassSpectrum objects.
* `ltrim`/`rtrim`: use `trim(..., range=c(min, max))` instead.
* `determineWarpingFunctions`, argument "warpingFunction": use "method" argument
  instead.
* `mergeMassPeaks`, argument "fun": use "method" argument instead.
* `mergeMassSpectra`: use `averageMassSpectra`.
* `savitzkyGolay`: use `smoothIntensity(..., method="SavitzkyGolay")` instead.
* `movingAverage`: use `smoothIntensity(..., method="MovingAverage")` instead.
* `transformIntensity`, argument "fun": use "method" argument instead.
* `removeBaseline`, argument "fun": use "method" argument instead.
* `detectPeaks`, argument "fun": use "method" argument instead.

BUGFIXES

* `plot`: fix subtitle for averaged spectra.

INTERNAL CHANGES

* Add `.as.matrix.MassObjectList` to avoid internal dependencies on
  `intensityMatrix`;
  affected functions: `filterPeaks`, `referencePeaks`.
* Add `.as.binary.matrix`.
* Remove man/MALDIquant-internal.Rd.
* Argument "representation" of `setClass` is deprecated since R 3.0.0;
  use "slots" instead.
  affected classes: AbstractMassObject, MassPeaks, MassSpectrum.


CHANGES IN MALDIquant VERSION 1.8 [2013-09-08]:
-----------------------------------------------

NEW FEATURES

* Add `smoothIntensity`: to apply smoothing filters. Supports
  "SavitzkyGolay" and "MovingAverage". `savitzkyGolay` and `movingAverage`
  are now marked as deprecated.
* Add `calibrateIntensity`: to calibrate/normalize intensity values.
  Supports "TIC", "median" and "PQN" calibration/normalization.
  It replaces three similar functions with
  different names: `totalIonCurrent<-`, `standardizeTotalIonCurrent`,
  `calibrate` (these three are marked as deprecated and will be removed in
  future releases).
* Add `averageMassSpectra`: supports "mean", "median" and "sum" aggregation of
  spectra. It replaces `mergeMassSpectra`.
* Add C implementation of colMedians for faster averaging/merging of
  MassSpectrum/MassPeaks objects.
* Add LongVector support; now MALDIquant depends on R >= 3.0.0.

MODIFICATIONS

* MassSpectrum/MassPeaks class: change representation of slots mass, intensity,
  snr to "numeric" (was "vector" before). Should not affect anything. Maybe you
  have to reimport raw data and resave RData files.
* `trim`: replace "minMass" and "maxMass" arguments by new "range" argument.
* `transformIntensity`: add "method" argument (supports "sqrt", "log", "log2",
  "log10"). "fun" argument is deprecated.
* `estimateBaseline`/`removeBaseline`: rename argument method="Median" to
  method="median".
* `determineWarpingFunctions`: add "method" argument (supports "lowess",
  "linear", "quadratic", "cubic"); "warpingFunctions" argument is deprecated.
* `mergeMassPeaks`: add "method" (supports "mean", "median", "sum") argument;
  "fun" argument is deprecated.

DEPRECATED ARGUMENTS/FUNCTIONS

* `isMassObject`/`isMassObjectList`: use `isMassSpectrum`, `isMassPeaks`,
  `isMassSpectrumList` or `isMassPeaksList` instead.
* `totalIonCurrent,MassPeaks-method`: TIC of peaks is meaningless.
* `totalIonCurrent<-,MassSpectrum-method`:
  use `calibrateIntensity(..., method="TIC")` instead to calibrate/normalize
  MassSpectrum objects.
* `standardizeTotalIonCurrent`:
  use `calibrateIntensity(..., method="TIC")` instead to calibrate/normalize
  MassSpectrum objects.
* `calibrate`:
  use `calibrateIntensity(..., method="TIC")` instead to calibrate/normalize
  MassSpectrum objects.
* `ltrim`/`rtrim`: use `trim(..., range=c(min, max))` instead.
* `determineWarpingFunctions`, argument "warpingFunction": use "method" argument
  instead.
* `mergeMassPeaks`, argument "fun": use "method" argument instead.
* `mergeMassSpectra`: use `averageMassSpectra`.
* `savitzkyGolay`: use `smoothIntensity(..., method="SavitzkyGolay")` instead.
* `movingAverage`: use `smoothIntensity(..., method="MovingAverage")` instead.
* `transformIntensity`, argument "fun": use "method" argument instead.
* `removeBaseline`, argument "fun": use "method" argument instead.
* `detectPeaks`, argument "fun": use "method" argument instead.

REMOVED FUNCTIONS

* `iplot`: because it throws NOTEs on CRAN's R CMD check and the most
  important function `grDevices::getGraphicEvents` behaves
  different on Unix/Windows platform (some keys don't working) and contains some
  nasty bugs, e.g.: https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=15208
  Also the "zoom" R package provides similar functionality.

BUGFIXES

* `totalIonCurrent`: fix calculation by estimating the integral; fixes #29.
  affected functions: `totalIonCurrent`,
    `calibrateIntensity(..., method="TIC")`.
* `filterPeaks`: reduce minNumber to length(l) to avoid complete removal
  of peaks; fixes #26.
* src/snip.c: fix some segmention faults because of a missing
  PROTECT for "duplicate" call.
  affected functions: `estimateBasline/removeBaseline(..., method="SNIP")`
- Add `import("methods")` to NAMESPACE (fixes #36).

INTERNAL CHANGES

* Remove internal `imputeMass`.
* Remove internal `.replaceNonEmptyMassObjects`.
* `approxfun`: returns NA for empty MassSpectrum objects.
* `[` (subset method): little speed up by calling `which` to evaluate logical
  expressions only once.
* Use integer values where possible.
* Modify C written functions to support LongVectors; closes #13;
  now MALDIquant depends on R >= 3.0.0.


CHANGES IN MALDIquant VERSION 1.7 [2013-05-23]:
-----------------------------------------------

NEW FEATURES

* Add `isRegular` method to test MassSpectrum objects for regular increasing
  mass values/intervals; closes #23.
* Add `savitzkyGolay`, Savitzky-Golay Smoothing Filter.
* Add memory usage to `show` output.
* `iplot`: add horizontal distance measurement (using left mouse clicks).
* `filterPeaks`: add "minNumber" argument to allow an absolute threshold for
  filtering; closes #21.
* demo/workflow.R: add raw data check.

IMPROVEMENTS

* demo/workflow.R: replace moving average smoother by Savitzky-Golay-Filter.
* `.estimateBaselineSnip`: support decreasing/increasing clipping window;
  controlled by new argument "decreasing"; use a decreasing window per default
  to get a smoother baseline; (use decreasing=FALSE to get the old behaviour).
* `isEmpty`: treat spectra with only zeros as intensity values as empty ones.
* `movingAverage`: left/right extrema now calculated for 0:windowSize and
  (n-windowSize+1):n (before they were set to NA).

BUGFIXES

* `filterPeaks`: doesn't round (floor) minFrequency argument anymore; led to
  unexpected results; fixes #22.
* `mergeMassSpectra`: empty MassSpectrum objects are ignored now
  (but if all objects are empty `mergeMassSpectra` will return an empty
  MassSpectrum object, too); fixes #20.
* `.mergeMetaData`: fix merging of lists with different lengths; fixes #17.
  affected functions: `mergeMassPeaks`, `mergeMassSpectra`.
* `.doByLabels: preserve order of non-factor labels; fixes #19;
  affected functions: `filterPeaks`, `mergeMassPeaks`, `mergeMassSpectra`.
* `totalIonCurrent`/`isEmpty`: fix integer overflow; fixes #25.
* `totalIonCurrent<-`: fix handling of empty spectra; fixes #15.
* Remove LICENSE file.

INTERNAL CHANGES

* Replace all `paste(..., sep="")` calls by `paste0`;
  now MALDIquant depends on R >= 2.15.
* Replace all `.C` interfaces by `.Call`.


CHANGES IN MALDIquant VERSION 1.6 [2013-03-01]:
-----------------------------------------------

NEW FEATURES

* Add interactive plot method: `iplot`.
* Add TopHat baseline estimation: `estimateBaseline(..., method="TopHat")`/
  `removeBaseline(..., method="TopHat")`.

IMPROVEMENTS

* Include tests in inst/tests.

BUGFIXES

* `.which.closest`: rounding .5 to the next highest integer (before: to the next
  lowest one); affected functions: `labelPeaks`.
* `.doByLabels`: fix an error that occurred if all labels were unique
  (fixes #1); affected functions: `filterPeaks`, `mergeMassPeaks`,
  `mergeMassSpectra`.
* `estimateBaseline(..., method="Median")`: do not allow a window size > n
  (fixes #4).


CHANGES IN MALDIquant VERSION 1.5 [2012-12-06]:
-----------------------------------------------

NEW FEATURES

* Add `movingAverage`.
* `labelPeaks`: add labels argument.

IMPROVEMENTS

* `detectPeaks`: only throw an error if windowSize > length
  (windowSize == length is no error anymore).
* `.doByLabels`: drop unused levels of argument "labels";
  affected functions: `filterPeaks`, `mergeMassPeaks`, `mergeMassSpectra`.
* Rewrite `localMaxima` in C to reduce running time and memory consumption.


CHANGES IN MALDIquant VERSION 1.4 [2012-10-30]:
-----------------------------------------------

NEW FEATURES

* Add slot "snr" to MassPeaks.
* Add `.estimateNoiseMad` (same implementation as old `estimateNoise` method).
* Add `.estimateNoiseSuperSmoother`.
* `estimateNoise`: add method argument, change return value to two column
  matrix.
* `binPeaks`/`referencePeaks`: add argument method=c("strict", "relaxed");
  "relaxed" allows multiple peaks of the same spectrum in a bin.

IMPROVEMENTS

* `labelPeaks`: remove tolerance argument (now always select the closest one).
* `mergeMassPeaks`/`mergeMassSpectra`: merge metaData, too.
* `detectPeaks`: new example for a custom noise estimation function.
* `calibrate`: add ... to generic definition of `calibrate`.
* Change demo licences to public domain.

INTERNAL CHANGES

* `detectPeaks`: change internal snr handling.
* `show`: rewrite (OO design).


CHANGES IN MALDIquant VERSION 1.3 [2012-09-16]:
-----------------------------------------------

NEW FEATURES

* Add `trim` and `[` methods.
* `labelPeaks`: add avoidOverlap argument to avoid overlapping of peak labels.

IMPROVEMENTS

* `detectPeaks`: add error message if windowSize >= length.
* `determineWarpingFunctions`: add error message if it could not match any peak
  to reference peaks.

MODIFICATIONS

* `labelPeaks`: change default value for verticalOffset argument.
* `labelPeaks`: remove family argument.

BUGFIXES

* Fix `isMassSpectrumList`.

GENERAL

* Update DESCRIPTION file to use Authors@R and depends on R>=2.14 now.
* Add CITATION file.


CHANGES IN MALDIquant VERSION 1.2 [2012-07-18]:
-----------------------------------------------

BUG FIXES

* `determineWarpingFunctions`: stop with an error if reference MassPeaks
  object is empty.
* `.doByLabel`: preserve list order (affects `filterPeaks`).

INTERNAL CHANGES

* Replace some `sapply` calls by `lapply`.


CHANGES IN MALDIquant VERSION 1.1 [2012-05-06]:
-----------------------------------------------

NEW FEATURES

* Add `totalIonCurrent` method (replacement for `calibrate` function on
  MassSpectrum objects).
* Add methods accepting lists as arguments: `transformIntensity`,
  `removeBaseline`, `detectPeaks`.

MODIFICATIONS

* `detectPeaks`: remove localMaxima argument.
* `detectPeaks`: replace noise argument by fun.
* `removeBaseline`: replace baseline argument by fun.
* `labelPeaks`: use par("usr") to calculate default verticalOffset.
* `labelPeaks`: add absoluteVerticalPos argument.
* `plot`: change "sub" for merged spectra/peaks.
* `intensityMatrix`: remove argument replaceByNa.
* `determineWarpingFunctions`, `warpMassSpectra`, `warpMassPeaks` now require
  lists as arguments and return a list.
* `calibrate`: works only on matrices now.
* Replace all `lapply` calls by new methods in demonstration scripts.
* Allow only numeric values for `intensity<-` and `mass<-`.
* Rename `findLocalMaxima` to `.findLocalMaxima` and hide by NAMESPACE.
* Rename dataset spectra in fiedler2009subset.
* Remove peaks dataset.


CHANGES IN MALDIquant VERSION 1.0 [2012-03-28]:
-----------------------------------------------

NEW FEATURES

* Add demonstration scripts.
* Add functions: `binPeaks`, `determineWarpingFunctions`, `filterPeaks`,
  `isMassObject`, `isMassPeaks`, `isMassSpectrum`, `mergeMassPeaks`,
  `mergeMassSpectra`, `referencePeaks`, `warpMassPeaks`, `warpMassSpectra`.

MODIFICATIONS

* Change NAMESPACE.
* Hide `imputeMass` method because it fails on Bruker Daltonics' CompassXport
  32bit output.
* Add \keyword{internal} to estimateBasline*-functions.Rd.
* `labelPeaks`: rename massTolerance argument to tolerance.
* Replace dataset sA1/pA1 by spectra/peaks (containing 16 example spectra).


CHANGES IN MALDIquant VERSION 0.5 [2012-01-18]:
-----------------------------------------------

NEW FEATURES

* Add `imputeMass` method.

IMPROVEMENTS

* Rewrite intensityMatrix function (little speed improvement).


CHANGES IN MALDIquant VERSION 0.4 [2011-08-04]:
-----------------------------------------------

NEW FEATURES

* Add functions: `isMassObjectList`, `isMassPeaksList`, `isMassSpectrumList`,
  `findEmptyMassObjects`, `removeEmptyMassObjects`, `intensityMatrix` and
  `calibrate` (only TIC supported up to now).
* Add mass and massTolerance argument to `labelPeaks`.

IMPROVEMENTS

* Change default value for verticalOffset argument in `labelPeaks`.
* Add pA1 dataset.

MODIFICATIONS

* Rename AbstractMassSpectrumData to AbstractMassObject.


CHANGES IN MALDIquant VERSION 0.3 [2011-05-28]:
-----------------------------------------------

NEW FEATURES

* Add `transformIntensity`, `estimateNoise`, `findLocalMaxima`, `detectPeaks`
  and `points` method.
* Add `createMassPeaks` constructor.

IMPROVEMENTS

* Replace `.estimateBaselineMovingEstimator` by `.estimateBaselineMedian` (uses
  `runmed` instead of an own slow `movingEstimator` function).

MODIFICATIONS

* Rewrite `labelPeaks` (some arguments changed).
* Rename SingleSpectrum class to MassSpectrum.
* Rename SinglePeakList class to MassPeaks.
* Remove fdrtool dependency and rewrite `.estimateBaselineConvexHull` in C.
* Move importing functions to the following R-packages: readBrukerFlexData,
  readMzXmlData.

BUGFIXES

* change `.C(..., DUP=F)` to `.C(..., DUP=T)` in `.estimateBaselineSnip`
  to avoid changes of global variables.


CHANGES IN MALDIquant VERSION 0.2 [2011-03-29]:
-----------------------------------------------

* Add baseline correction algorithm SNIP (implemented in C) [default].
* Add MovingEstimator and ConvexHull baseline estimation algorithm.
* Add `as.matrix`, `intensity`, `length`, `lines`, `mass` and `metaData`
  methods.
* Add basic SinglePeakList class, adopt `plot` and `lines`, add `labelPeaks`
  (still useless).


CHANGES IN MALDIquant VERSION 0.1 [2011-02-22]:
-----------------------------------------------

* First public release.
* Up to now only importing and plotting of a single mass spectrum are supported.
