Copyright © 2007-2019 The OpenMx Project

Published on *OpenMx* (https://openmx.ssri.psu.edu)

We are pleased to announce the official release of OpenMx version 2.13.2. Click here [1] 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.

- Previously, OpenMx (and classic Mx before it) did not report standard errors for the free-parameter estimates when there were MxConstraints [2] 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 [3]'s output slot. Also,`mxSE()`

[4] now works with models containing MxConstraints. `mxCheckIdentification()`

[5] 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()`

[6]:`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 [7]. `mxRefModels()`

[8] 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()`

[9], which loads a genomic-relatedness matrix into R's workspace from a GCTA-format binary file. - Argument
`doPseudoHessian`

to`mxComputeNelderMead()`

[10] 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()`

[11] now warns if it is used but unable to change anything about the`model`

it was passed.- A new function,
`mxJiggle()`

[12], 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()`

[13]. Let the jiggling commence. - OpenMx now accepts a non-positive-definite observed covariance matrix in
`mxData()`

[14], as long as`type="acov"`

. `mxRun()`

[15]'s non-persistent progress-report printing is now easier to read.- When
`silent=TRUE`

,`mxTryHard()`

[16] 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()`

[17] 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()`

[18] is moved to the backend resulting in a substantial performance improvement. - Several
`mxPath()`

[19] error messages have been edited to be more helpful. - The package now includes a new demo for latent differential equation (LDE) models.

- 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' [20], 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 [10] 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 [21] 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 [22] 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 [23] 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 [24] would throw an error at runtime. This bug has been repaired. - Like the other optimizers, simulated annealing [25] 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()`

[26] 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()`

[27] now works when the covariance matrix is 1x1.- OpenMx v2.12 introduced a bug in
`mxSE()`

[4] 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()`

[14] 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 [28] path models.

`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()`

.

**Links**

[1] http://openmx.ssri.psu.edu/installing-openmx

[2] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxConstraint.html

[3] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxModel.html

[4] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxSE.html

[5] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxCheckIdentification.html

[6] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxAlgebra.html

[7] https://vipbg.vcu.edu/vipbg/OpenMx2/docs//OpenMx/latest/_static/Rdoc/mxComputeEM.html

[8] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/omxSaturatedModel.html

[9] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/omxReadGRMBin.html

[10] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxComputeNelderMead.html

[11] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/omxSetParameters.html

[12] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxJiggle.html

[13] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/imxJiggle.html

[14] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxData.html

[15] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxRun.html

[16] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxTryHard.html

[17] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxOption.html

[18] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxFactorScores.html

[19] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxPath.html

[20] https://github.com/MichelNivard/GenomicSEM

[21] https://openmx.ssri.psu.edu/thread/4199

[22] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxFitFunctionAlgebra.html

[23] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxCI.html

[24] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxFitFunctionWLS.html

[25] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxComputeSimAnnealing.html

[26] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxAutoStart.html

[27] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxStandardizeRAMpaths.html

[28] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxExpectationLISREL.html