You are here

OpenMx 2.19.8 released!

We are pleased to announce the official release of OpenMx version 2.19.8. Click here for instructions on how to install the package from our repository. As usual, our repository has package binaries for Windows and macOS, and source tarballs for Linux/GNU and other non-Mac Unix-likes, all of which come with the proprietary NPSOL optimizer. Alternately, users may install the fully open-source build of the new version from CRAN.

New Features and Performance Improvements Since v2.19.1:

  • omxLocateParameters() can now find fixed parameters.
  • The 'runstate' slot of the MxModel object class has been eliminated. The intended purpose of the slot was to store the pre-run state of the MxModel, but its intended internal use was never fully implemented. Now that the slot is gone, MxModels will no longer store extraneous frontend copies of MxMatrices and MxAlgebras, which, among other things, should reduce the RAM footprint of GREML models. However, eliminating the 'runstate' slot required deprecating the indep argument to summary().
  • There is now a new, less-confusing interface for user-provided weight matrices for use with the WLS fitfunction, which uses argument observedStats to mxData().
  • OpenMx can now checkpoint the sample size of a raw dataset when argument naAction="omit" is passed to mxData().
  • MxAlgebras now support the Moore-Penrose pseudoinverse, via function mpinv().
  • SLSQP and CSOLNP are now able to work with linearly dependent equality constraints. Previously, only NPSOL was able to do so.
  • The mxCompare() function now returns an object of class MxCompare whereas previously it returned a data.frame object. This change allows nested model comparison of weighted least squares models. The $ and [ extractors continue to behave in the usual way. There is also an as.data.frame method that returns the same data.frame that was previously returned. See the help page for mxCompare() for details on model comparison with weighted least squares.

Bug-fixes and Tweaks Since v2.19.1:

  • The WLS fitfunction applied with exogenous predictors was using the wrong mean structure. This is now corrected. Since models could find the wrong optimum, you are urged to re-run any models with exogenous predictors to verify your results.
  • mxRename() now works correctly with the multigroup fitfunction.
  • mxRestore() now correctly uses the checkpoint directory that was set as a local mxOption.
  • OpenMx now consistently throws an error when a free parameter's lower bound is greater than or equal to its upper bound.
  • In models that use the WLS fitfunction, slopes with respect to exogenous predictors are now counted as observed statistics.
  • OpenMx now coerces data columns of logical NAs to numeric NAs.
  • Previously, when carrying out the bootstrap likelihood-ratio test, OpenMx would raise a fatal error if fewer than 3 replications converged. Now, it no longer raises a fatal error in that case, which makes it easier for the user to diagnose the underlying issue.
  • mxGetExpected() now works correctly with multigroup models and Pearson-Aitken selection.
  • OpenMx no longer sporadically crashes R when using a single thread to run a GREML model that uses semi-analytic derivatives.

Known Issues:

  • There is a bug that can make the GREML fitfunction return numerically incorrect fitfunction derivatives. This bug is only in effect when the number of available threads is large relative to the number of free parameters, and when argument infoMatType="expected" (which is not the default) is passed to mxFitFunctionGREML(). This bug will be repaired in the next OpenMx release.
  • In some cases, the GREML fitfunction backend still unnecessarily stores copies of the covariance matrix's derivatives during runtime, which inflates OpenMx's memory demand. This issue will be resolved in the next OpenMx release.
  • The OpenMx Project's issue tracker can be found here.