Skip to content

Releases: svkucheryavski/mdatools

v. 0.14.1

12 Aug 17:03
Compare
Choose a tag to compare
  • Added cv.scope parameter for PLS, PLS-DA and iPLS methods. The parameter sets the scope for center/scale operations inside cross-validation loop: "global" — centering and scaling will be done using globally computed means and standard deviations, "local" — centering and scaling will be done using locally computed means and standard deviations (for each local calibration set). In other words, in case of the global scope, all cross-validation local models will have the same center as the global one, in case of the local scope, each local model will have its own center in the variable space. The default value is "local", as it was before, so this change will not break your previous code.

  • Fixed several minor bugs (#111, #112, #114) and added small updates and improvements to documentation.

v. 0.14.0

28 Mar 18:11
Compare
Choose a tag to compare

The changes are relatively small, but some of them can be potentially breaking, hence the version is bumped up to 0.14.0.

  • Procrustes cross-validation method, pcv(), has been recently improved and extended. It was decided to move it to a separate dedicated R package, pcv. Check GitHub repo for details. The documentation chapter has been updated accordingly.

  • Fixed a bug related to generating segment indices for Venetian blinds cross-validation for regression. In case of regression, the indices are generating by taking into account the order of the response values. There was a small bug in this implementation, now it is fixed. Remember, that you can always provide manually generated vector og segment indices as value of cv argument.

  • Made small changes in prep.alsbasecorr() to meet new requirements of the Matrix package. So if you saw warning message from this package last couple of month, this update will fix this.

  • fixed bug #109

  • small improvements in documentation.

v. 0.13.1

09 Nov 15:38
Compare
Choose a tag to compare
  • fixed a bug in method getRegcoeffs(), which did not work correctly with regression models created without scaling or centering.

  • ipls() got a new logical parameter, full. If full = TRUE the procedure will continue even if no improvement is observed, until the maximum number of iterations is reached. Use it with caution, check the tutorial.

  • Small fixes and improvements.

v. 0.13.0

14 Jul 08:30
Compare
Choose a tag to compare

This release brings an updated implementation of PLS algorithm (SIMPLS) which is more numerically stable and gives sufficiently less warnings about using too many components in case when you work with small y-values. The speed of pls() method in general has been also improved.

Another important thing is that cross-validation of regression and classification models has been re-written towards more simple solution and now you can also use your own custom splits by providing a vector with segment indices associated with each measurement. For example if you run PLS with parameter cv = c(1, 2, 3, 4, 1, 2, 3, 4, 1, 2) it is assumed that you want to use venetian blinds split with four segments and your dataset has 10 measurements. See more details in the tutorial, where description of cross-validation procedure has been moved to a separate section.

Other changes and improvements:

  • Refactoring and improvements of prep.savgol() code made the method much faster (up to 50-60 times faster for datasets with many measurements).

  • Refactoring and improvements of prep.alsbasecorr() code made the method 2-3 times faster especially for large datasets.

  • added new plotting method plotRMSERatio() for regression models (inspired by this post by Barry M. Wise)

  • added PQN normalization method to prep.norm() function.

  • fixed a bug in vipscores() which could lead to a bit higher values for PLS2 models.

  • fixes to several small bugs and general improvements.

v. 0.12.0

13 Sep 07:06
Compare
Choose a tag to compare

This release is mostly about preprocessing - added some new methods, improved the existent once and implemented a possibility to combine preprocessing methods together (including parameter values) and apply them all together in a correct sequence. See preprocessing section in the tutorials for details

New features and improvements

  • method prep.norm() for normalization of spectra (or any other signals) is more versatile now and supports normalization to unit sum, length, area, to height or area under internal standard peak, and SNV. SNV via prop.snv() is still supported for compatibility.

  • prep.savgol() has been rewritten to fix a minor bug when first derivative was inverted, but also to make the handling of the edge points better. See details in help text for the function and in the tutorial.

  • added a new method prep.transform() which can be used for transformation of values of e.g. response variable to handle non-linearity.

  • added a new method prep.varsel() which makes possible to select particular variables as a part of preprocessing framework. For example you can apply baseline correction, normalization and noise suppression to the whole spectra and after that select only a particular part for modelling.

  • added new method prep() which let you to combine several preprocessing methods and their parameters into a list and use e.g. it as a part of model.

Bug fixes

  • fixed a bug in mcrals() which in rare occasions could lead to a wrong error message.

  • fixed a bug when attribute yaxis.value was used as ylab when creating line and bar plots.

  • fixed an earlier reported issue with plotXYResiduals (#100)

v. 0.11.5

26 Apr 11:32
Compare
Choose a tag to compare
  • fix for an issue in PLS SIMPLS implementation (incorrect use of Machine$longdouble.eps), which lead to an error when the package is tested on Apple M1.

v. 0.11.4

23 Apr 14:52
Compare
Choose a tag to compare
  • added possibility for providing partially known contributions (parameter cont.forced) or spectral values (parameter spec.forced) to mcrals(). See more in help text and user guide for the package.

  • added possibility to run iPLS using test set (parameters x.test and y.test) instead of cross-validation.

  • added a possibility to provide user defined indices of the purest variables in mcrpure() instead of detecting them automatically.

  • fixed bug #98, which caused a drop of row names when data frame was used as a data source for PCA/SIMCA.

  • fixed bug #99, which did not allow to use user defined indices of pure variables in mcrpure().

v. 0.11.3

22 Jan 13:01
Compare
Choose a tag to compare
  • added Procrustes Cross-Validation method, pcv() (it is also available as a separate project).
  • added Kubelka-Munk transformation for diffuse reflectance spectra (prep.ref2km()).
  • fixed bug #94 which caused wrong limits in PCA distance plot when outliers are present but excluded.
  • fixed bug #95 which lead to issues when PLS regression methods (e.g. plotRMSE()) are used for PLS-DA model object.
  • added additional check that parameter cgroup for plotting functions is provided as a vector or as a factor to avoid confusion.
  • added link to YouTube channel with Chemometric course based on mdatools package.

v. 0.11.2

23 Oct 07:03
Compare
Choose a tag to compare
  • fixed an issue, which lead to a bug in simcam.getPerformanceStats, returning implausible and asymmetrical results (thanks to @svonallmen).

  • fixed a small issue sometimes giving warning when running tests on CRAN (did not influence the user experience though).

v. 0.11.1

23 Jul 11:41
Compare
Choose a tag to compare
  • the algorithm for mcrpure() method has been replaced to a similar one to avoid potential issues with original patented version.