Navigation

Revision of Writing Demo Scripts from Sat, 09/19/2009 - 06:00

The revisions let you track differences between multiple versions of a post.

Demo scripts are invaluable for helping others learn OpenMx, and, during development, to test that the integrity of the program is maintained as well as to test new features.

Where to put demos

Demo scripts can be added to the "/trunk/demos/" directory. nb: When adding a file to this directory, please manually update the "00INDEX" file in this directory with the name of the file and a 1-line description of its purpose.

Demo scripts differ from other scripts in that they should verfiy that the results obtained are those returned in original Mx where possible.

Using omxCheckCloseEnough()

omxCloseEnough() simply compares the elements of two compatible arrays, returning TRUE if no pair of elements differ by more than epsilon (the maximum allowed difference)
omxCloseEnough() takes three arguments:

omxCheckCloseEnough(a, b, epsilon =10^(-15))

'a' and 'b' are numeric vectors or matrices, and 'epsilon' is the maximum allowed (absolute?) difference between the elements of 'a' and the elements of 'b'.

In usage, you would typically fill vector a with results from the results of an OpenMx mxRun() statement, while the elements of b will be hard-coded from a comparable Mx run. nb:

For convenience, you can run mx 1.x from OpenMx using the function omxOriginalMx(), which takes two arguments: 'mx.filename' is a string that is the path and name of the mx script to run (relative be found in the directory returned by getwd() ), and 'output.directory' similarly the relative path to the directory where output files will be written.

notes: 'mx' must appear somewhere in your $PATH.
While you can use omxOriginalMx() to get the correct values for omxCloseEnough(). comment this code out in the demo, and hard code the results: We cannot assume that developers and users have installed Mx 1.X.