You are here

Donate Your Models

As we get closer to the OpenMx 1.0 release, we would like to increase the number of scripts in our test system. We are currently at 115 scripts in the test suite, which is not too shabby. We would like you to donate your working scripts to our test system. Here are the motivating factors for donating your scripts - (1) the altruistic motivation, your work helps to make the project better for all OpenMx users; or (2) the selfish motivation, donating your script virtually guarantees that the script will continue to work in future versions of the OpenMx project.

What we need from you involves three components. The first component is the script itself. We can help you remove any locale specific information, such as setwd() or other things. The second component is the data to run the model. If your data is sensitive or unpublished, we have several workarounds. Generating synthetic data that preserves some characteristics of the original data is one option. Generating completely garbage data is sometimes also sufficient as long as the optimizer is performing the same types of behavior. The third component is to add omxCheck...() statements at the end of the script. These statements validate the results of running a model, and they throw an error if validation fails. Here are some examples of omxCheck..() statements:

omxCheckCloseEnough(mxEval(omxAllInt(Cov, Means, Thresh), testAllint1),
    as.matrix(c(.99, .01)), 0.001)
omxCheckIdentical(mxEval(D, model), as.matrix(c(1,2,3)))
omxCheckError(mxEval(objective + foo, model, TRUE), 'non-conformable arrays')
omxCheckTrue(identical(generated, reference))
omxCheckSetEquals(namespace$entities$model2, c('B', 'data', 'model3'))

So please consider donating your script to our test system. All scripts are released with the Apache Public License 2.0, as is true of all the source code to the OpenMx project. Your contribution helps us all.

Comments

For those of you hesitant to submit data, the fakeData function is now available. It takes existing data as an argument, and generates new data with very similar characteristics to yours. Hopefully this makes it easier to provide models.

You can find fakeData on the wiki: http://openmx.psyc.virginia.edu/wiki/generating-simulated-data