At the developer meeting today, we discussed adding checkpointing functionality to OpenMx.
This is basically a recovery system in case the computer crashes during an optimization. Essentially, the back-end will write a file to disk every x minutes or every z iterations. The file will contain some representation of the state of optimization at the time it saved. That way if the power fails or the computer crashes, the state of not-too-long-ago is saved somewhere, and the optimizer can pick up where it left off.
In the developer meeting, we proposed the following arrangement: The user may specify a checkpoint filename. A file would be created with that name, and would contain a row of comma-delimited table column titles, and would be slowly populated with rows of data, one at each checkpoint. The first column would be named " Iteration", where gets replaced by the name of the model, and would contain the optimizer iteration at that checkpoint. The other columns would be named after the free parameters in the model, and would contain the last-used values of those parameters. Any unnamed parameter would be named after its location (something like "A[1,1]") . The column names therefore provide a quick check to make sure the correct model is being matched to the checkpoint. The checkpoint file itself would then be readable by humans, R's read.csv() (or read.table with the right arguments), and basically any other tool out there, as well as by OpenMx.
We welcome comments, questions, or concerns about this proposal.