You are here

OpenMx 2.13 released!

We are pleased to announce the official release of OpenMx version 2.13.2. 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, Performance Improvements, and Tweaks Since v2.12:

  • Previously, OpenMx (and classic Mx before it) did not report standard errors for the free-parameter estimates when there were MxConstraints in the model. Now, OpenMx reports standard errors that have been properly adjusted to reflect the influence of the MxConstraints. Additionally, the model's whole constraint-adjusted sampling covariance matrix of the free-parameter estimates can be accessed with the generic function vcov(), or by reading the 'vcov' element of the MxModel's output slot. Also, mxSE() now works with models containing MxConstraints.
  • mxCheckIdentification() now works when there are MxConstraints in the model, and now also gives a warning if the model contains definition variables.
  • Two new arguments to mxAlgebra(): initial and recompute. These arguments give the user the option of populating an MxAlgebra with initial values, and of only recomputing the MxAlgebra when specifically called-for in a custom compute plan. The motivating use case for this new behavior is fitting mixture models with individual-level mixture proportions via expectation-maximization.
  • mxRefModels() now raises a warning if it is used on an MxModel that contains definition variables, or is a multilevel model. Additionally, the man page for the function now has a "Warnings" section in which it explains certain situations in which the function does not work or must be used with caution.
  • If using the recommended interface for WLS, summary statistics are now calculated from raw data taking advantage of multiple CPU cores.
  • summary() output now reports a p-value of 1 if the chi-square test statistic has zero degrees-of-freedom.
  • There is a new function, omxReadGRMBin(), which loads a genomic-relatedness matrix into R's workspace from a GCTA-format binary file.
  • Argument doPseudoHessian to mxComputeNelderMead() now defaults to TRUE, because calculating the curvature matrix at the final simplex allows discovery of nearby points that have even better fit values than any of the simplex vertices. Note that this is a backwards-incompatible change in default behavior.
  • omxSetParameters() now warns if it is used but unable to change anything about the model it was passed.
  • A new function, mxJiggle(), has been implemented. It can either emulate the effect of keyword JIGGLE from classic Mx, or (default) function as a wrapper to the pre-existing imxJiggle(). Let the jiggling commence.
  • OpenMx now accepts a non-positive-definite observed covariance matrix in mxData(), as long as type="acov".
  • mxRun()'s non-persistent progress-report printing is now easier to read.
  • When silent=TRUE, mxTryHard() now prints non-persistent progress reporting to the console in a manner similar to mxRun(), prefixed with the index of the fit attempt that it is currently running.
  • Argument model to mxOption() now conveniently defaults to NULL.
  • mxOption() accepts a new argument, reset, which if TRUE will reset all options to their on-load defaults.
  • An experimental compute step, mxComputeLoadData, has been added to support high-throughput data analyses. A paper describing how to use it to analyze molecular genetic data is in preparation.
  • mxData() now has a new argument, algebra. It is an experimental feature that is only useful in conjunction with mxComputeLoadData. Its use will be described in the same paper along with mxComputeLoadData.
  • The implementation of mxFactorScores() is moved to the backend resulting in a substantial performance improvement.
  • Several mxPath() error messages have been edited to be more helpful.
  • The package now includes a new demo for latent differential equation (LDE) models.

Bug-fixes Since v2.12:

  • In version 2.12.x, support for WLS estimation, via user-provided values for arguments acov and fullweight to mxData(), was completely broken and would result in an error. This serious bug, which rendered OpenMx incapable of analyzing the matrices output by ldsc() in package 'GenomicSEM', has been repaired. Note that the now-recommended interface is to use argument observedStats to mxData().
  • Previously, CSOLNP would sometimes enter an infinite, uninterruptible loop, requiring the user to force-kill R. Frequently, this would occur if the MxModel being run contained linearly dependent equality MxConstraints (see next bullet point). But now, those loops are user-interruptible, and have a finite maximum number of iterations.
  • This new version includes several repairs and mitigations for issues concerning linearly dependent equality MxConstraints: (1) CSOLNP no longer hangs as described in the preceding bullet point; (2) CSOLNP and Nelder-Mead now both warn if they detect the possibility of linearly depedendent equalities; and (3) an SLSQP error message now advises the user that the error may be a result of linearly dependent equality constraints.
  • Previously, RAM-type MxModels did not have the OpenMx package associated with their class, "mxRAMModel". As a result, if a user loaded a saved R workspace containing an mxRAMModel prior to loading the OpenMx package, methods defined for the mxRAMModel class (such as summary()) would not work. This annoying bug has been repaired.
  • Several bugs that could lead to a segmentation fault (which crashes R) have been repaired. One was due to a regression introduced with v2.11, and could occur when analyzing covariance-matrix data that had no column names. Another could occur when using CSOLNP with an MxFitFunctionAlgebra and a high-dimensional system of equality MxConstraints. A third could occur when using NPSOL to find only the lower limit of a confidence interval under the inequality-constrained representation of the optimization problem (which is not default behavior, so users are unlikely to have encountered that particular fault).
  • In OpenMx v2.12, if the raw dataset passed to mxData() was a matrix rather than a dataframe, the WLS fitfunction would throw an error at runtime. This bug has been repaired.
  • Like the other optimizers, simulated annealing is now user-interruptible, and ephemerally prints reports of its progress to the console.
  • The effect of mxTryHard()'s argument bestInitsOutput, and its interaction with argument silent, are now consistent with what the function's man page says about them.
  • Previously, mxAutoStart() would throw an error if it were used on an MxModel that contained fully qualified references like "modelName.matrixName". This bug has been repaired.
  • Previously, if shrink transformations were switched off, and an outer contraction failed, Nelder-Mead would accept the reflection point. Now, it restarts the simplex instead.
  • mxStandardizeRAMpaths() now works when the covariance matrix is 1x1.
  • OpenMx v2.12 introduced a bug in mxSE() that made the function throw an error if the value provided for its argument x was a character string. This bug has been repaired.
  • Formerly, passing a dataframe as argument observed to mxData() with type="cov" would always result in an error. Now, if the dataframe can be coerced to a square symmetric matrix, it is automatically so coerced.
  • Previously, there was a Nelder-Mead bug that greatly reduced the optimizer's effectiveness when the Wu-Neale correction was being applied during a confidence-limit search. This bug has been repaired.
  • OpenMx now correctly allows asymmetric residual-covariance matrices between manifest exogenous and manifest endogenous variables in LISREL path models.

Known issues

  • summary() still counts redundant equality MxConstraints as though they were nonredundant (which is not a new issue, and likely has always existed in OpenMx). Therefore, it can get the model degrees-of-freedom wrong if redundant equality constraints are present in the model. Note that as of the v2.13.2 release, the package's NEWS.md file incorrectly implied that this issue was resolved.
  • summary() reports only a few fit indices if the model is using the WLS fitfunction.
  • The fit indices reported in summary() are wrong if the observed data are a correlation matrix (i.e., if type="cor" is passed to mxData().