Fixed a bug where could not be accessed from a model object, and adjusted one test...
[openmx:openmx.git] / CHANGES
1 trunk
2 =====
3
4 * Prevent Varadhan2008 from failing near convergence
5 * Throw error on attempt to invert incomplete Hessian
6 * CSOLNP: Correct exclusion of inequality constraints from gradient/Hessian
7 * When checkpointing fit, record who requested it
8 * Restore parallel processing for CIs
9 * Add "Checkpoint Fullpath" to override output destination
10 * Make mxOption(model, val) return the global setting or the model's override
11 * Add WLS standard error and chi-square functions
12 * Consolidate starting value nudging logic in ComputeGD
13 * Try harder to keep CIs ordered properly vs estimate
14 * Add partial identification information to ID check.  Tells which
15   parameters are not identified.
16 * CSOLNP: Avoid reuse of obm for more than 1 purpose
17 * CSOLNP: Simplify CI calculation
18 * CSOLNP: Tidy optimizer reporting
19 * CSOLNP: Count the number of major iterations
20 * Add Makefile rule to run the failing tests
21 * CSOLNP: Return stuff via CSOLNPFit; isolate Matrix inside of subnp
22 * CSOLNP: Remove some redundent information
23 * Remove template argument from CSOLNP::solnp
24 * Store equality & inequality results in CSOLNPFit
25 * Reduce variable lifetime
26 * Tidy some minor valgrind issues
27 * Remove q() from test
28 * CSOLNP: Convert control param to Eigen vector
29 * CSOLNP: Move bounds to CSOLNPFit; remove lots of deadcode
30 * CSOLNP: Move inequality bounds to CSOLNPFit
31 * CSOLNP: Remove Matrix arg from CSOLNPFit::solFun
32 * CSOLNP: Remove GLOB_ prefix since variables are no longer global
33 * CSOLNP: Eliminate more globals
34 * CSOLNP: Continue refactoring API
35 * CSOLNP: Pass parameter vector using Eigen
36 * CSOLNP: Rewrite omxProcessConstraintsCsolnp in Eigen
37 * CSOLNP: Don't bother creating the unused solEqB matrix
38 * CSOLNP: Eliminate reliance on all-zero solEqB
39 * Simplify setup of constraints
40 * CSOLNP: Put in temporary fix for conformability of derivs with constraints
41 * CSOLNP: Fix some problems revealed by Eigen conformability checking
42 * Rework calculation of compiler args; add IMX_SAFE switch
43 * Add test for omxGetParameters
44 * omxGetParameters: Omit duplicated parameters even when there are no submodels
45 * Tidy up MxMatrix-related error and warning messages; re-write MatrixErrorDetection.R
46 * BA81: Prohibit all NA rows
47 * Small but important MxMatrix-related adjustments.
48 * Add Jacobian-based model identification check.
49 * Added method for getting cov, means, and thresh from LISREL expectation.
50 * Added method for getting cov, means, and thresh from RAM expectation.
51 * Added generic for getting expected covariance, means, and thresholds.
52 * Small test for LISREL type, to be expanded
53 * LISREL model initialization.
54 * Better MxMatrix verification
55 * Conditionally "condense" the 'labels', 'free', 'lbound', and 'ubound' slots of MxMatrix objects.
56 * CSOLNP: Convert ind to Eigen; make easier to understand
57 * Enable ubsan for gcc 4.9+
58 * Make gcc happier
59 * CSOLNP: Remove more deadcode
60 * Avoid reuse of condif[123]
61 * test if OpenMx disorders thresholds
62 * CSOLNP: Remove bounds check; all Eigen ops are already bounds checked
63 * CSOLNP: Remove superfluous assignment
64 * CSOLNP: Remove deadcode
65 * CSOLNP: Converting function add to Eigen
66 * CSOLNP: Converting functions subtract and timess to Eigen
67 * CSOLNP: Converting functions subset, copy, multiply, and divide to Eigen
68 * CSOLNP: reapplying revisions 3976-3996
69 * Add gcc 4.9 support (same binary as gcc 4.8)
70 * WLS maybe working for joint.
71 * Helpful error when SaturatedLikelihood is given a list of two.
72 * Change the fake definition variable value for easier indexing
73 * CSOLNP: global variables moved to a struct
74 * Fix saturated DoF for raw data when only some of the variables are used.
75 * Bug fix for refs models with cov data
76 * CSOLNP: reverted version checked in
77 * Refrain from evaluating MxMatrix in the front-end
78 * Refactor computation of CFI, TLI, & RMSEA
79 * Move demos to nightly
80 * Prevent SEGV on ordinal columns with no thresholds
81 * Ensure continuous all-NA column is not run through mxFactor
82 * Add comment about multinomial degrees of freedom
83 * Enable --force-biarch for Windows fat binaries & remove obsolete rules
84 * various doc cleanup
85
86 Release 2.0.0-4004 (Oct 24, 2014)
87 =======================================
88
89 * Fix calculation of the saturated -2LL for IFA models
90 * Add some warning about CSOLNP
91 * Add hint about infeasible starting values (per Mike Neale)
92 * Rework capture of errors & warnings
93 * Permit running test from top dir
94 * CSOLNP: Unravel some confused Matrix resizing
95 * CSOLNP: Allow 0 coeff matrices; init to NaN instead of 1.0
96 * CSOLNP: Avoid allocation to report gradient
97 * CSOLNP: Add a varient of subset that copies out to Eigen::MatrixBase
98 * CSOLNP: Eliminate 2 instances of fillMatrix
99 * CSOLNP: Shorten lifetime of index variable
100 * CSOLNP: Convert a little bit of subnp to Eigen
101 * CSOLNP: For set{Row|Column}InPlace, treat 2nd arg as a vector
102 * Don't abort build if NPSOL is not found for a particular compiler
103 * CSOLNP: Switch Bcolj to stack allocation
104 * CSOLNP: Remove negate deadcode
105 * CSOLNP: Re-express findMax(matrixAbs()) as matrixMaxAbs()
106 * CSOLNP: Simplify divideByScalar2D & multiplyByScalar2D
107 * CSOLNP: Covert a few more copyInto -> copyIntoInplace
108 * CSOLNP: Move sob to stack allocated storage
109 * CSOLNP: Move alp to stack allocated storage
110 * CSOLNP: Move subnp_ctrl from Matrix to stack allocated Eigen::Array
111 * CSOLNP: Change setColumn to setColumnInplace
112 * CSOLNP: Change some setRow to setRowInplace
113 * Once constraints are turned into algebras, eliminate objectives from
114   those new algebras and replace them with fitfunctions.
115 * CSOLNP: Convert some copyInto into copyIntoInplace
116 * CSOLNP: options added
117 * Update citation
118 * Drop psych dependency
119 * Document that mxLog will fail in Rgui on Windows
120 * Stop with error message if mxLog fails
121 * Updates to documentation
122 * Report CIs with NA as NA instead of throwing an error
123 * CSOLNP: void functions and memory allocation checks added to minor iteration loop
124 * Correctly collapse levels regardless of order (mxFactor)
125 * Repair derivatives of the beta density
126 * Avoid exception when only 1 optimizer has errors in the test suite
127 * Add mxFactor(..., collapse=TRUE)
128 * Fix bug that failed to print optimizer messages again in summary.  Add test.
129 * Fix mxEval(..., defvar.row) for when data is sorted
130 * Check for duplicated level names in factors in MxData
131 * Simple category collapsing for mxFactor
132 * Change mxStandardizeRAMpaths() to say if the model hasn't been run yet; amend test model accordingly.
133 * Add mxMakeNames & test
134 * Add eval by name wrapper for mxEval created by Spiegel
135 * 'make test' should record errors optimizer-wise
136 * Don't INSTALLMAKEFLAGS=""; allow setting from the environment
137 * Report 'make test' errors as they happen
138 * Throw warning from ref models when definition variables are present.
139 * Cope with zero length components in mxSimplify2Array
140 * Make mxFactor preserve rownames
141 * Update dims slot of expectations for models in mxRun.  Adjust saturated model accordingly.
142 * Make mxSimplify2Array preserve colnames
143 * Added threshold deviation labels for saturated models
144 * Fix bug in saturated model for raw matrix data.
145 * Implement qnorm() and lgamma() in mxAlgebras.
146 * Make models with row fitfunctions re-runnable from an initial fit
147   and end name collisions with filteredDataRow, existenceVector, and
148   rowResults.
149 * Modify quoted formula error catch to only use match.call()$expression once.
150 * Smarter way to catch mxAlgebra formulas that are character strings.
151 * Catch quoted formula error in mxAlgebra
152 * Fix mxEval error and add test for square bracket with blank entry
153 * Modify wall time printing as per Dev mailing list discussion
154 * Small change so that mxStandardizeRAMpaths() handles independent submodels as intended.
155 * Adding correctly named Holzinger 1939 data set
156 * mxFitFunctionMultigroup: Fix error for unmatched submodel; add test
157 * omxQuotes should do something sensible when passed nothing
158 * Permit models with no matrices (to avoid masking other errors)
159 * Coerce x argument of mxFactor to character type
160 * Fix array indexing of ordinal thresholds (when there are unused columns in observed data)
161 * Add warning for data.type='cor'
162 * removing link to non-existant function in OpenMx [doc]
163 * Avoid stringification of non-finite numbers
164 * Charlie Driver pointed out that mxTryHard() fit attempts that result
165   in npsolstatus -1 should be treated similarly to fit attempts ending
166   in error
167 * Fix bug in summary for AIC/BIC with cor data.
168 * Drop duplicates from CI list
169 * Prevent acceleration of worsening fit
170 * BA81: Make E-step optimization less fragile
171
172 Release 2.0.beta3-3838 (Sep 26, 2014)
173 =======================================
174 * Constrain GRM item parameters more sensibly
175 * Newton-Raphson: Restore feasible parameter vector when fit obtains NaN
176 * Hopefully, fix performance decrement in FIML.
177 * Begin EM acceleration 1 cycle earlier
178 * Switch default EM acceleration to varadhan2008
179 * Reorg EM acceleration; add Varadhan & Roland (2008)
180 * Return SEs as "not requested" strings when argument SE=FALSE in mxStandardizeRAMpaths()
181 * Cope with observed data matrix with no NAs (observed data.frame not affected)
182 * Mention fomulation of IFA independence model [doc]
183 * Drop support for non-double matrices
184 * CSOLNP: memory issue and reporting starting values as optimal parameters
185 * (Re?)enable parallel processing for confidence intervals
186 * Grab Eigen from RcppEigen
187 * Add ordinal ML/WLS test with both model identifications
188 * For saturated type=cov model, set TLI=1 and RMSEA=0
189 * Recompute thresholds (when provided)
190 * Rewrite algebra/fitfunction lookup in MxFitFunctionMultigroup
191 * Downgrade check of algebra dimnames to a warning for backward compat
192 * Edit 'make clean' to also remove src/*.dll (Windows shared library).
193 * Add mxTryHard() and its man page.
194 * Add check for data type of algebra dimnames
195 * Implemented smarter tab-completion for MxObjects.
196 * Make the global freeGroup vector private
197 * Update SE study for relative tolerance
198 * SE simulation studies (IFA)
199 * Depend on package parallel (in R core since 2.14)
200 * Check threshnames for duplicates
201 * Store omxThresholdColumn in a std::vector
202 * LAD--CheckCode6.R moved to models/passing
203 * CSOLNP: status code report corrected
204 * Change the 'running xxxmodel' output from mxRun to a message
205 * Toggle silent= back to FALSE as preference for running Reference/Saturated models.
206 * Add multilevel model example in state space form.  Data is grabbed from the web.
207 * Report optimizer in summary for default compute plan
208 * Rename nullModels -> refModels per dev discussion
209 * Add column of raw SEs to output of mxStandardizeRAMpaths(); edit its test model and man page appropriately.
210 * Fix 'unknown macro '\t'' warning I was getting from mxRestore man page
211 * Document Number of Threads option.
212 * Modify .svnignore files.  WLS branch and trunk changes.  Added
213   continuous only wls test.  Found and added state space algebra test.
214 * Include numObs in data for mxNullModels
215 * First draft of mxDataWLS
216 * Fixed documentation for reading checkpoint file via read.table
217 * Permit BA81 mean & variance specified with algebras
218 * Rename omxSaturatedModel to mxNullModels per dev discussion
219 * Refuse to clear model slots by assignment to NULL and say why
220 * Remove minItemsPerScore option
221 * Fix state space in FIML joint.
222
223 Release 2.0.beta2-3751 (Aug 20, 2014)
224 =======================================
225 * Switch default optimizer back to CSOLNP
226 * Made MxSummary have prettier printing of Chi-Square and RMSEA with CI.  Also added more checks for SummaryCheck.R
227 * Extinguish globalState
228 * NLOPT and Simulated annealing added
229 * Report condition number when standard erorrs are enabled
230 * Improve destruction order
231 * Merge OMX_VERBOSE to OMX_DEBUG
232 * Simplify copyParamToModel API
233 * Move childList from omxState to FitContext
234 * Track whether a model has been run for submodels
235 * Modify FIML Single Iteration Joint to accomodate State Space expectations for continuous vars.
236 * Distinguish between stale models and models which has not been run
237 * Improve reporting of CIs for non-free parameters
238 * Ignore request for CIs if the label exists and is not a free parameter
239 * Add comment about RMSEA formula
240 * Reorganize omxSaturatedModel for better modularity
241 * Factor out processing of the run argument to omxSaturatedModel
242 * Remove our own version of std::max
243 * Consolidate FIML to omxFIMLSingleIterationJoint (except for state
244   space). NOTE: This introduced a serious performance regression.
245 * Remove a bunch of duplicated code in FIML
246 * Add Oakes1999 EM information matrix method
247 * Set up setVarGroup handler for MxAlgebraFitFunction
248 * Add independent flag to mxComputeSequence
249 * Implement new unprotect strategy
250 * For summary(verbose=F), suppress SE and bounds if all NA
251 * minor error msg change: show user the verboten list of names
252 * Various optimizations to improve frontend performance
253 * Don't blindly cast all NA columns to double. When the column is a
254   factor, it needs to stay integer
255 * Only warn once about the model being modified since run
256 * Prohibit clashes between model and matrix names in type='RAM' models
257 * Clear modified-since-run flag on submodels
258 * Permit more than 1 fitfunction in mxComputeOnce
259 * The backend no longer resizes matrices that will be exported to R
260 * Switch to more accurate matrix log/exp
261 * Adjust pretty-printing of MxData to match slot names
262 * Print model name in summary
263 * Change error message in saturated model helper when algebra fit function detected.
264 * Improvements to mxSummary: RMSEA conf intervals, Information table
265   adjustments, guidance to help page, statement about missing fit
266   indices.
267 * CSOLNP: out of bound starting values issue solved. Mode added
268 * Revision to saturated model helper that allows multigroup and saturated models
269 * ComputeHessianQuality should not SEGV when no Hessian is available
270 * Add fix and test for mxFitFunctionR Hessian
271 * modified mxVersion to include R and plaform + optimizer
272 * Add a few unprotects to reduce stack usage of big algebra
273 * Manual update from Hermine H Maes
274 * Extensive rework of the conformability checking pass
275 * Provide more helpful error messages when an expectation fails to initialize
276 * CSOLNP: potential fix for CI and non-linear constraint issues
277 * Add checks for AIC, BIC
278 * Add a conformability checking step to the backend
279 * better error when definition variable is missing
280 * Added names() support to the base R object types.  Changed the
281   return value of MxModel names(). [For those who enjoy
282   tab-completion]
283 * Make NPSOL the default if available
284 * Added verbose=FALSE argument to mxSummary to change amount of information that is printed.
285 * Add matrix logarithm algebra operator
286 * Move more CI code from frontend to backend
287 * Better way to label and reference figures (like APA style)
288 * Visually decorate figures so they stand out from the rest of the text [manual, HTML version]
289 * Recompute fit at the end of mxComputeGradientDescent
290 * CRAN prohibits variable length arrays
291 * Better error message when a CI is not found. Let user know what to check and do
292 * Fix for a minor bug that dates back to version 1.3.2 (at
293   least). Now, mxVersion() reports the version number of the OpenMx
294   package loaded into R's workspace, not the version number of the
295   OpenMx package installed in the first directory in .libPaths()
296 * Added check of many (but not all) of the parts of MxSummary.
297 * Added joint ordinal continuous example and an example with means to LISREL man page.
298 * Improve safety of mxFactor
299 * Automatically extract and run code from the manual to ensure that it works
300 * Added reporting of Chi square DoF.
301 * Minor bug fix in saturated model helper.
302 * Fixed bug in Chi square degrees of freedom calculation.
303 * modified error msg in mxRun and mxOption to tell user how to change
304   default optimizer, and how to add a fit function
305 * Refuse to set "Default optimizer" on models
306 * Reinstate R_CheckUserInterrupt (got commented out by mistake)
307 * Fail if a model has an expectation, no fitfunction, and no custom compute plan
308 * Fix signature mismatch in displayCompute
309 * Remove non-ascii em dashes
310 * Fix our signature for logLik S3 method
311 * If an MxMatrix is constant, avoid copy
312 * Advertise our version as 2.0.0 instead of 999.0.0
313 * Reimplement omxData storage to facilitate dynamic data
314 * omxAssignFirstParameters should not explode with 0 free parameters
315 * Move packageStartupMessage to .onAttach
316 * Reject vector=TRUE as part of MxFitFunctionMultigroup
317 * Make FIML respect vector=FALSE
318
319 Release 2.0.beta1-3473 (May 30, 2014)
320 =======================================
321 * Fix for R 3.1
322 * Add packageStartupMessage if compiled without OpenMP
323 * Remove extra copy of # of evaluations
324 * Fix algebra dependency tracking
325 * Name anonymous algebras to aid debugging
326 * numThreads is always 1 without openmp
327 * MxRAMModel should not assume MxExpectationRAM
328 * Permit optimization directly on mxFitFunctionML(vector=TRUE)
329 * Remove unimplemented and crashing omxSetFinalReturnsFIMLFitFunction
330 * Added a warning about using "one" as a label in mxPaths.
331 * minor error msg mod to suggest action if non-square matrix declared as cov
332 * Warn if summary is called on a model that was modified after mxRun
333 * Bug Fix: the backend resized 1x1 matrices to MxN when used in scalar/elementwise multiplication, but then did not resize them back in the frontend.
334 * Fix mxRename with constraints bug.
335 * Learn mxMatrix dimnames from values if explicit dimnames omitted
336 * fix issue 'summary() of fitted mxModel object returns error'
337 * Confidence Intervals now give the name of the parameter if they are from an MxMatrix instead of the MatrixName[row,col].
338 * Exterminate strncmp
339 * Distinguish between sorted/unsorted and whether sorting is requested
340 * Remove unneeded parameter from isErrorRaised()
341 * Fixed Saturated Likelihood Bug by not populating that attribute for FIML.
342 * Support NPSOL warmStart
343 * Add option to checkpoint every evaluation
344 * Bug fix the number of observed statistics in non-IFA models with raw data.
345 * In addition to the mxOption, let mxData(sort=FALSE) request unsorted data
346 * Add a git bisect script
347 * Fixed bug where mxOption 'Default optimizer', and other options as well, get overwritten to the global defaults
348 * logLik for mxModel (contributed by Andreas Brandmaier)
349 * mxOption without a value to show the current setting
350 * Place likelihood-based CI code into a separate MxCompute step
351 * Add rownames to standardErrors
352 * Do not resetDataSortingFlags
353 * Remove unused arguments from omxRaiseError, omxRaiseErrorf
354 * Remove unused argument from omxResizeMatrix
355 * Handle omxRemoveRowsAndColumns for row-major order; add tests
356 * omxAliasMatrix, omxResetAliasedMatrix are essentially omxCopyMatrix
357 * Simplify implementation of aliased matrices
358 * Fix memory corruption in omxResetAliasedMatrix
359 * Checkpoint rewrite
360 * Allow standard errors without Richardson extrapolation
361 * Preserve dimnames in assignments to MxMatrix slots
362 * Rework reporting of iterations and optimizer status; add failing test
363 * Fix memory corruption in matrix populate lists
364 * Remove unused omxInitMatrix argument
365 * Add more gdb hints
366 * Fix misuse of stdargs macros
367 * Enable gdb for the regular 'make test' variants
368 * Hook up recordIterationError for FIML
369 * Add FitContext::recordIterationError
370 * Enumerate errors if there is more than one
371 * Report all the errors instead of only the most recent one
372 * mxCI should not interfere with SEs (or fit)
373 * Add dimnames to @output$hessian and @output$ihessian
374 * Fix omxMatrix memory model
375 * Remember how many cores we detected
376 * Fix mxCI for a vector of parameter names; add test
377 * Hook up numerical integration precision parameters
378 * Improve detection of CPU architecture
379 * Minor bug fix in saturated model generator
380 * Pull libnpsol.a from our website (linux only, so far)
381 * Hint the correct way to customize the compiler/compiler options
382 * Add info on using omxAssignFirstParameters with SetParameters
383 * Add mxOption for max stack depth
384 * Factor out lots of calls to Rf_mkChar
385 * Remove "at iteration" from error messages (simplifies log diff)
386 * Make elementwise algebra ops conformable for the scalar-matrix case
387 * Continue with omxMatrix API simplification
388 * Enable R_NO_REMAP for a cleaner namespace
389 * Add check for algebra dimnames
390 * Don't use R to calculate our algebra result matrix dimensions
391 * Initial compute protocol for the whole tree of dependencies
392 * Don't rely on R to evaluate our algebra
393 * Remove non-reproducable pointer addresses from logs (makes it possible to diff logs)
394 * Change backend initialization order
395 * Set up the usual gdb breakpoints automatically
396 * Update references to mxFitFunctionAlgebra and correct dot multiplication explanation in mxAlgebra.Rd
397 * Improve some conformability checks by showing the dimension mismatch
398 * Always report @output$fit but don't report @output$minimum unless it is
399 * Using the name "stderr" with #pragma omp critical can cause conflicts when building multithread binaries under Windows.
400 * Permit rescaling of log-likelihood
401 * Compute condition number of information matrix
402 * Control some ComputeEstimatedHessian knobs from R
403 * Do not use roxygen to create Collate field
404 * Reduce use of protect stack
405 * Suggest how to debug protect stack overflow
406 * Permit easy specification of the default optimizer in R code
407 * Keep parameters within bounds
408 * Rename most PPML functions to keep them unexported
409 * Allow summary to work with unnamed estimates
410 * Fixed a bug where ML fit functions with raw data (FIML) and vector=TRUE set were returning a single value instead of a vector.
411 * Updating twinData.Rd to document the reuse of zyg 6:10. Also added Nick Martin reference
412 * Document how to find & adjust R's default compiler flags
413 * Add back some UNPROTECTs
414 * Be more paranoid about importing mxData to backend
415 * Avoid final copyParamToModel when not needed
416 * Remove obsolete performance counters
417 * Fix/remove improper printf style formats
418 * Change how dirty matrices are indicated
419 * Rewrite dependency tracking
420 * Grab expectation names in the backend
421 * Disable NPSOL gradient verification by default (this is a developer feature)
422 * Permit better control over whether NPSOL uses gradients
423 * Remove most instances of setFinalReturns, mark deprecated
424 * Don't communicate unused dependency information to the backend
425 * Store fit function name (regression fix?)
426 * Free parameter groups
427 * Store omxGlobal as a pointer to ensure proper init & destruction
428 * Threads don't help RFitFunction, force single threaded
429 * NPSOL linear constraints are unused (deadcode)
430 * Set up a build rule for installing without NPSOL
431 * Replace bloated autoconf script with a simple shell script
432 * Prevent developers from using Rprintf
433 * Split omxState into truly global stuff and per-thread stuff
434 * Modified mxSaturatedModel to take either a model or a data set, and added a run= argument with FALSE as the default.
435 * mxSaturated model support for ordinal data.
436 * Skip recomputing thresholds when they don't exist
437 * Replace completely broken PBS cpus detection
438 * Add thread-safe logging functions
439 * Changed all objective functions to return NAMED lists of expectation and fitfunction.
440 * Switch over to new structured Compute system
441 * Added manual page for mxFitFunctionML
442 * Encapsulate NPSOL into omxComputeGD; rework error status reporting
443 * Pass blank gradient and hessian to omxNPSOLConfidenceIntervals
444 * Reorder matrix name processing
445 * Dump matrices using valid R syntax (debugging)
446 * Remove unimplemented OMX_SOCKET_CHECKPOINT
447 * Simplify management of omxData.type
448 * Switched backend from C to C++
449 * Fixed maximum number of dimensions bug so that only dimensions other than those -inf to +inf are counted
450 * Add API for internal expectations; remove redundent copy of rObj
451 * C-side support for submodels
452 * Add deps on MASS and mvtnorm
453 * Remove lots of UNPROTECTs
454 * Refactor allocation of omxAlgebra.args
455 * Teach MxExpectation to store its relationship in the model tree
456 * Add default A,S,F matrix names for mxExpectationRAM
457 * Process submodels concurrently with manifest & latent variables (early)
458 * Simplify error reporting of unrecognized arguments to mxModel
459 * Factor out interpretation of mxPath's connect argument
460 * fix insertMeansPathRAM to catch arrows=2
461 * minor fix to insertMeansPathRAM() 1. catch arrows != 1 in means paths; 2. reword error
462 * Automatically balance PROTECT/UNPROTECT
463 * Added suggestion for solution when mxData are cov/cor and not symmetric.
464 * Improved mxData error messages
465 * Added cov2cor and chol to supported functions.
466 * Update mxCompare() to handle missing comparison parameter
467 * update showFitStatistics() to handle empty compareSummaries list
468 * Added comment to RAM model error, prompting user to view ?mxData when their model has no data
469 * Add varargs replacement for omxRaiseError
470 * Make omxCheckCloseEnough compare missingness pattern too
471 * Complain if any starting values are missing
472 * Fix uninitialised memory access in omxSelectRows & omxSelectCols,
473   Bug only affected non-square matrices
474 * changed FIML fit functions to report all elements when vector=TRUE
475 * added mxThreshold() function
476 * migrated from MxObjective* to mxFitFunction* and mxExpectation*
477 * bug fix in multiple-iteration upper confidence interval estimation
478 * bug fix in mxRun() where a model with grandchildren submodels can
479   have its internal state corrupted
480 * Added vech2full and vechs2full mxAlgebras: inverses of vech and vechs
481 * detect non-conformable arrays for elementwise division in the front-end
482 * fix crash in Hessian calculation when no objective function is specified
483 * warn if standard errors are enabled and the numeric Hessian calculation is disabled
484 * added confidence interval calculations to checkpoint output
485
486 Release 1.3.0-2168 (September 17, 2012)
487 =======================================
488 * added mxOption() for "Analytic Gradients" with possible values "Yes"/"No"
489 * added 'cache' and 'cacheBack' arguments to mxEval()
490 * added omxLocateParameters() function (see ?omxLocateParameters)
491 * type='RAM' allowing 'manifestVars' argument to appear in a different order
492   than in the observed covariance matrix.
493 * the configuration mxRun(model, checkpoint = TRUE) writes a line
494   in the checkpoint file at the conclusion of model optimization.
495 * added "Always Checkpoint" to mxOptions() with values "Yes" or "No"
496 * header for the checkpoint file will identify anonymous 
497   free parameters with the string modelName.matrixName[row,col]
498 * omxGetParameters() and omxSetParameters() support anonymous
499   free parameters
500 * implemented cov2cor in the OpenMx backend
501 * mxOption "Major iterations" accepts either a value or a function
502 * now tracking the MxAlgebra and MxMatrix objects that need to be updated
503   when populating free parameters or updating definition variables.
504 * performance improvements in mxModel() when building RAM models
505 * performance improvements in mxRun() frontend for large matrices
506 * rewrite on the processing of objective functions in the frontend
507 * added R functions omxCbind(), omxRbind(), and omxTranspose()
508 * added 'fetch' argument to omxGetParameters()
509
510 Release 1.2.5-2156 (September 5, 2012)
511 ======================================
512 * bugfix to omxRAMtoML() when input model has covariance data
513 * fixing memory leak in cleaning up algebras when optimization is complete
514 * fixing memory leak in omxImaginaryEigenvalues()
515 * fixed a bug that manifests in confidence intervals with definition variables
516   (see http://openmx.psyc.virginia.edu/thread/1505)
517 * fixed a bug in the identification of NA definition variables
518   (see http://openmx.psyc.virginia.edu/thread/1521)
519
520 Release 1.2.4-2063 (May 22, 2012)
521 =================================
522 * added argument "name" to omxSetParameters()
523 * error checking for 0-length arguments to mxPath()
524 * fixing several memory leaks
525
526 Release 1.2.3-2011 (April 10, 2012)
527 ===================================
528 * bugfix when (I-A)^-1 speedup is disabled
529 * bugfix in mxAlgebra() detection of missing operator or function
530 * bugfix in joint FIML when: 1) there are no definition variables, 
531   2) the first (sorted) row with a new number of ordinal variables, and 
532   3) has all continuous variables missing
533
534 Release 1.2.2-1986 (March 22, 2012)
535 ===================================
536 * setting default value for mxOption("UsePPML") to "No" until
537   the feature is adequately tested. Added test enforcing default
538   value to test suite.
539
540 Release 1.2.1-1979 (March 21, 2012)
541 ===================================
542 * bug fix for interaction of matrix transpose and square bracket substitutions
543 * renaming mxLISRELObjective() to imxLISRELObjective(), LISREL objective function is not yet implementated.
544 * improved error messages when a free parameter has multiple lbounds/ubounds
545 * improved error messages when passing strings into mxModel()
546 * improved error messages in mxEval()
547
548 Release 1.2.0-1926 (February 04, 2012)
549 ======================================
550 * new interface such that 'objective@info$expMean', 'objective@info$expCov'
551   and 'objective@info$likelihoods' are available in FIML or RAM objective functions.
552 * bug fix for omxSetParameters with lbound or ubound of NA.
553 * catching unknown matrix operator or function in mxAlgebra() or mxConstraint() declaration
554 * deprecated 'all' argument from mxPath function and replaced it with 'connect' argument. Also updated demos that used 'all' argument and documentation.
555 * removed 'excludeself' argument from mxPath() function
556 * added deprecation warning for argument 'all' = TRUE in mxPath()
557 * added support for OpenMP in hessian calculation
558 * added support for OpenMP in continuous FIML objective function
559 * added support for OpenMP in ordinal FIML objective function
560 * added support for OpenMP in joint ordinal/continuous FIML objective function
561 * added more descriptive error message to mxOption()
562 * serializing the sum operation on likelihoods - floating point addition is not associative
563
564 Release  1.1.2-1818 (October 24, 2011)
565 ======================================
566 * fixed bug in summary() function, see http://openmx.psyc.virginia.edu/thread/1104
567 * fixed bug in independence model likelihood calculation for ML objective
568 * included support for gcc 4.5 and 4.6 under 32-bit x86
569
570 Release  1.1.1-1784 (September 11, 2011)
571 ========================================
572 * fixed several bugs in joint ordinal-continuous integration
573 * fixed several typos in User Guide
574
575 Release  1.1.0-1764 (August 22, 2011)
576 =====================================
577 * Joint and Ordinal documentation included and up to date.
578 * added deprecation warning for argument 'all'=TRUE in mxPath()
579 * added omxSelectRowsAndCols, omxSelectRows and omxSelectCols documentation
580 * fixed model flattening to keep track of confidence intervals in submodels
581 * added error checking for dimnames on MxMatrix and MxAlgebra objects
582 * reformated comments and heading style for all demos
583 * fixed segmentation fault on backend error condition
584 * turn off jiggling of free parameters with starting values of 0.0 when useOptimizer=FALSE
585 * allow non-RAM objective functions in RAM model
586 * change model type names to 'default' and 'RAM'
587 * no longer explicitly transforming RAM + raw data models into FIML models
588 * fixed bug in MxMatrix indexing operator
589 * added argument 'threshnames' to mxFIMLObjective() and mxRAMObjective()
590 * renaming majority of omx* functions to imx* functions. See http://openmx.psyc.virginia.edu/thread/761
591 * added error checking to mxOption() function
592 * added "Optimality tolerance" to mxOption() selection
593 * added 'lbound' and 'ubound' columns to summary() output of free parameters
594 * added asterisks to the 'lbound' and 'ubound' columns when feasibility tolerance is met
595 * added "omxNot" function to the set of available mxAlgebra() function
596 * added "omxSelectRows", "omxSelectCols", and "omxSelectRowsAndCols" as mxAlgebra operators()
597 * added "mean" function to the set of available mxAlgebra() functions
598 * added slots "expCov" and "expMean" to the MxRAMObjective function
599 * added useOptimizer option to mxRun.
600 * added error checking in frontend and backend for non-positive-definite observed covariance matrices
601 * added "omxGreaterThan", "omxLessThan", "omxApproxEquals", "omxAnd", and "omxOr" operators to the set of mxAlgebra() operators
602 * error checking for model[[1]] or model[[TRUE]]
603 * error checking in the front-end whether more than 20 ordinal columns are present in a data set
604 * improved performance in the front-end in mxModel() for adding paths to RAM models
605 * print name of algebra when operator has too few or too many arguments
606 * added mxErrorPool() function and R documentation.
607 * added Apache license information to all R documentation files.
608 * new implementation of mxEval().
609 * new argument 'defvar.row' to mxEval().  See ?mxEval.
610 * handling definition variables for (I - A) ^ - 1 speedup
611 * handling square bracket labels for (I - A) ^ - 1 speedup
612 * added argument 'free' to omxGetParameters.  See ?omxGetParameters.
613 * added argument 'strict' to omxSetParameters.  See ?omxSetParameters.
614 * eliminated warnings for confidence interval optimization codes
615 * added "..." argument to mxRObjectiveFunction()
616 * fix memory leak in RAM objective function
617 * removed dependency to MBESS library in R documentation
618 * added more descriptive error message when thresholds are not sorted
619 * incorporated NaN unsafe matrix-matrix multiplication (dgemm) from R <= 2.11.1
620 * incorporated NaN unsafe matrix-vector multiplication (dgemv) from R <= 2.11.1
621 * return NA in mxVersion() if "OpenMx" cannot be found
622 * fix infinite loop in objective function transformations
623 * added initialization to load OpenMx on swift workers
624 * implemented omxParallelCI() to calculate confidence intervals in parallel
625 * only calculating CIs for upper triangle of symmetric matrices
626 * cleanup appearance of transient MxMatrix objects in error messages
627 * fix bug with very large number of omxUntitledName() objects
628 * added optional argument CPUS=n to "make test" target
629 * change snowfall interface to use sfClusterApplyLB()
630 * storing raw data in row-major order, and copying contiguous data rows
631 * fix bug in mxModel() when using remove = TRUE
632
633 Release 1.0.7-1706 (July 6, 2011)
634 =================================
635 * error checking in front-end for non-positive-definite observed covariance matrices
636 * fix bug in MxMatrix indexing operator
637 * added deprecation warning for argument 'all'=TRUE in mxPath()
638
639 Release 1.0.6-1581 (March 10, 2011)
640 ===================================
641 * Bug fix corner case in sorting data with definition variables
642
643 Release 1.0.5-1575 (March 8, 2011)
644 ==================================
645 * added error checking in ML objective to match expected covariance and observed covariance matrices
646 * updated BootstrapParallel.R demo to use mxData() instead of model@data
647 * added the dataset from the Psychometrika article (www.springerlink.com/content/dg37445107026711)
648
649 Release 1.0.4-1540 (January 16, 2011)
650 =====================================
651 * added initialization to load OpenMx on swift workers
652 * only calculating CIs for upper triangle on symmetric matrices
653 * fix bug with very large number of omxUntitledName() objects
654 * incorporated NaN unsafe matrix-vector multiplication (dgemv) from R <= 2.11.1
655 * fix bug in mxModel() when using remove = TRUE
656 * Added intervals to MxModel class documentation
657
658 Release 1.0.3-1505 (November 10, 2010)
659 ======================================
660 * return NA in mxVersion() if "OpenMx" cannot be found
661 * eliminate infinite loop in objective function transformations
662
663 Release 1.0.2-1497 (November 5, 2010)
664 =====================================
665 * missing <errno.h> include 
666 * fix memory leak in RAM objective function
667 * incorporated NaN unsafe matrix-matrix multiplication (dgemm) from R <= 2.11.1
668
669 Release 1.0.1-1464 (October 8, 2010)
670 ====================================
671 * bugfix for mxEval() and MxData objects
672 * handling definition variables for (I - A) ^ - 1 speedup
673 * handling square bracket labels for (I - A) ^ - 1 speedup
674 * added argument 'free' to omxGetParameters.  See ?omxGetParameters.
675 * added argument 'strict' to omxSetParameters.  See ?omxSetParameters.
676 * eliminated warnings for confidence interval optimization codes
677
678 Release 1.0.0-1448 (September 30, 2010)
679 =======================================
680 * added missing entries to demo 00INDEX file
681
682 Release 0.9.2-1446 (September 26, 2010)
683 =======================================
684 * added growth mixture models to user guide
685 * added initial Swift hook in omxLapply() - currenly activated only for mxRun calls
686 * fixed a bug in mxRename() when encountering symbol of missingness
687 * bugfix for crash when '*' is used instead of '%*%'
688 * feature removal: square brackets in MxMatrix labels now accept only literal values
689 * bugfix for definition variables used in mxRowObjective (which is still experimental)
690 * bugfix for (I - A) ^ -1 speedup with FIML optimization
691
692 Release 0.9.1-1421 (September 12, 2010)
693 =======================================
694 * fixed a bug in -2 LL calculation in RAM models with definition variables and raw data
695
696 Release 0.9.0-1417 (September 10, 2010)
697 =======================================
698 * improved error messages for non 1 x n means vectors in FIML and ML
699 * fixed a performance bug that was forcing too many recalculations of the covariance matrix in FIML optimizations.
700 * defualt behavior is to disable standard error calculations when model contains nonlinear constraints
701 * improved error messages for NA values in definition variables
702 * added error message when expected covariance dimnames and threshold dimnames do not contain the same elements.
703 * fixed a bug when mxRename() encounters a numeric or character literal.
704 * new chapters added to OpenMx user guide.
705 * fixed a bug in -2 log likelihood calculation with missing data
706
707 Release 0.5.2-1376 (August 29, 2010)
708 ====================================
709 * improved error messages when identical label is applied to free and fixed parameters
710 * added 'onlyFrontend' optional argument to mxRun() function.  See ?mxRun.
711 * disabling cbind() and rbind() transformations as they are broken.
712
713 Release 0.5.1-1366 (August 22, 2010)
714 ====================================
715 * added error detection when multiple names are specified in mxMatrix(), mxAlgebra(), etc.
716 * removed 'digits' argument from mxCompare.  Target behavior of argument was unclear.  See ?mxCompare
717 * more informative error messages for 'dimnames' argument of objective functions
718 * more informative error messages when constraints have wrong dimensions
719 * improved error detected for 'nrow' and 'ncol' arguments of mxMatrix() function
720 * fixed a bug in ordinal FIML objective functions with non-used continuous data
721
722 Release 0.5.0-1353 (August 08, 2010)
723 ====================================
724 * calculating cycle length of RAM objective functions
725 * bugfix: preserve rownames when converting data.frame columns to numeric values
726 * 'nrow' and 'ncol' arguments now supercede matrix dimensions in mxMatrix()
727 * add boolean argument 'vector' to mxRAMObjective() for returning the vector of likelihoods
728 * added demo(OneFactorModel_LikelihoodVector) as example of 'vector=TRUE' in RAM model
729 * cbind() and rbind() inside MxAlgebra expressions with all arguments as MxMatrix objects are themselves transformed into MxMatrix objects
730 * bugfix with square bracket substitution
731 * finishing implementing sorting of raw data in mxFIMLObjective()
732 * added 'RAM Optimization' and 'RAM Max Depth' to model options.  See ?mxOption
733 * added support for linux x86_64 with gcc 4.1.x
734
735 Release 0.4.1-1320 (June 12, 2010)
736 ==================================
737 * confidence interval optimizations now jitter if they can't get started
738 * added error checking for dimensions of expected means in ML + FIML objectives
739 * check for missing observed means when using (optional) expected means in ML
740 * added citation("OpenMx") information
741
742 Release 0.4.0-1313 (June 09, 2010)
743 ==================================
744 * fixed bug in calculation of confidence intervals around non-objective values
745 * checking for partial square bracket references on input
746 * fixed error reporting for non-positive-definite covariances in FIML
747 * implemented initial sorting-based speedup for FIML objectives
748 * added 'No Sort Data' to mxOptions()
749 * eliminated getOption('mxOptimizerOptions') and getOption('mxCheckpointOptions') 
750 * added getOption('mxOptions')
751 * error messages for illegal names provide function call information
752 * added 'estimates' column to confidence intervals in summary() of model
753 * fixed bug so checkpointing will work in R 2.9.x series
754 * fixed bug so mxRename() works on confidence interval specification
755 * renaming 'estimates' column of confidence interval summary output to 'estimate'
756
757 Release 0.3.3-1264 (May 24, 2010)
758 =================================
759 * confidence interval frontend was requesting nonexistent matrices
760 * omxNewMatrixFromMxMatrix() assumed input was always integer vector S-expression
761 * confidence intervals mislabeling free parameter names
762
763 Release 0.3.2-1263 (May 22, 2010)
764 =================================
765 * added 'newlabels' argument to omxSetParameters() function
766 * now throwing errors to the user when detected from the backend in mxRun()
767 * checkpointing mechanism implemented - mxRun(model, checkpoint = TRUE)
768 * never computing confidence intervals for matrix cells where free = FALSE (all bets are off on algebras)
769 * added mxOption(model, "CI Max Iterations", value) 
770 * added documentation for mxRestore() function
771 * default expected means vectors are no longer generated
772
773 Release 0.3.1-1246 (May 09, 2010)
774 =================================
775
776 * new arguments to mxRun() for checkpointing and socket communication (doesn't work yet)
777 * throw an error if FIML objective has thresholds but observed data is not a data.frame object.
778 * bugfix for R version 2.11.0 is detecting as.symbol("") character as missing function parameter
779 * mxFactor() function accepts data.frame objects
780 * added mxCI() function to calculate likelihood-based confidence intervals
781 * mxCompare() shows model information for base models
782 * added flag all=[TRUE|FALSE] to mxCompare() function
783 * 'SaturatedLikelihood' argument to summary() function will accept MxModel object
784
785 Release 0.3.0-1217 (Apr 20, 2010)
786 =================================
787
788 new features
789 ------------
790 * implemented new ordinal data interface http://openmx.psyc.virginia.edu/thread/416#comment-1421 (except for 'means=0' component)
791 * added mxFactor() function (see ?mxFactor for help)
792 * added R documentation for rvectorize() and cvectorize()
793 * implemented eigenvalues and eigenvectors
794 * added 'numObs', 'numStats' arguments to mxAlgebraObjective()
795 * added 'numObs', 'numStats' arguments to summary()
796
797 changes to interface
798 --------------------
799 * mxConstraint("A", "=", "B") is now written as mxConstraint(A == B)
800 * renaming 'cov' argument to 'covariance' in omxMnor()
801 * renaming 'lbounds' argument to 'lbound' in omxMnor()
802 * renaming 'ubounds' argument to 'ubound' in omxMnor()
803 * renaming 'cov' argument to 'covariance' in omxAllInt()
804 * argument 'silent = TRUE' to mxRun() will no longer suppress warnings
805 * argument 'suppressWarnings = TRUE' to mxRun() will suppress warnings
806
807 bug fixes
808 ---------
809 * added error checking for mxBounds() with undefined parameter names
810 * improving error messages in mxMatrix() function
811 * fixed aliasing bug in mxAlgebra() with external variables and constant values
812
813 internal
814 --------
815 * added directory to repository for nightly tests ("make nightly")
816 * performance improvement to namespace conversion
817 * changing MxPath data structure from a list to an S4 object
818 * new signature for omxSetParameters(model, labels, free, values, lbound, ubound, indep)
819 * checked in implementation of mergesort
820 * changed mxCompare() signature to mxCompare(base, comparison, digits = 3)
821
822
823 Release 0.2.10-1172 (Mar 14, 2010)
824 ==================================
825 * bugfix for assigning default data name when default data does not exist
826 * bugfix for sharing/unsharing data to a three-level hierarchy
827 * bugfix for error reporting in bad matrix access, uncalculated std. errors, and poor omxAllint thresholds
828 * implemented rvectorize, cvectorize algebra functions: vectorize by row, and vectorize by column
829 * not allowing the following forbidden characters in names or labels: "+-!~?:\*/^%<>=&|$"
830 * added timestamp to summary() output
831 * reimplemented summary() function to handle unused data rows, and independent submodels
832 * reimplemented names(model), model$foo, and model$foo <- value to return all components of a model tree
833 * started work on an "OpenMx style guide" section to the User Guide.
834 * fix documentation + demo errors brought to our attention by dbishop
835
836 Release 0.2.9-1147 (Mar 04, 2010)
837 =================================
838 * bugfix for ordinal FIML with columns that are not threshold columns
839 * bugfix for detection of algebraic cycles when multiple objective functions are present
840 * test cases included for standard error calculation
841 * enabled standard error calculation by default
842
843 Release 0.2.8-1133 (Mar 02, 2010)
844 =================================
845 * bugfix for memory leak behavior in kronecker product calculation
846 * implemented kronecker exponentiation operator %^%.
847 * actually updating means calculations in ordinal FIML models
848 * removing standard errors from summary() until they are computed correctly
849
850 Release 0.2.7-1125 (Feb 28, 2010)
851 =================================
852 * added 'unsafe' argument to mxRun function.  See ?mxRun for more information.
853 * bugfix for filtering definition variable assignment to current data source.
854 * bugfix for using data.frame with integer type columns that are not factors.
855
856 Release 0.2.6-1114 (Feb 23, 2010)
857 =================================
858 * implemented omxAllInt, use ?omxAllInt for R help on this function
859 * implemented omxMnor, use ?omxMnor for R help on this function
860 * added option to calculate Hessian after optimization.  See ?mxOption for R help.
861 * added option to calculate standard errors after optimization.  See ?mxOption for R help.
862 * added R documentation for vech, vechs, vec2diag, and diag2vec
863 * performance improvements for independent submodels
864 * added 'silent=FALSE' argument to mxRun() function
865 * added R documentation for omxApply(), omxSapply(), and omxLapply()
866 * wrote mxRename() and added R documentation for function
867 * added 'indep' argument to summary() to ignore independent submodels (see ?summary)
868 * added 'independentTime' to summary() output. Wall clock time for independent submodels.
869 * added 'wallTime' and 'cpuTime' to summary() output. Total wall clock time and total cpu time.
870 * implemented ':' operator for MxAlgebra expressions. 1:5 returns the vector [1,2,3,4,5]
871 * implemented subranges for '[' operator in MxAlgebra expressions. foo[1:5,] is valid inside algebra.
872 * added omxGetParameters, omxSetParameters, omxAssignFirstParameters.  Use ? for documentation.
873 * renamed all objective function generic functions from omxObj* to genericObj*
874 * enumerated OpenMx and NPSOL options in ?mxOption documentation
875 * implemented foo[x,y] and foo[x,y] <- z for MxMatrix objects
876
877
878 Release 0.2.5-1050 (Jan 22, 2010)
879 =================================
880 * added 'mxVersion' slot to output of summary() function.
881 * added documentation of summary() function.
882 * set default function precision for ordinal FIML evaluation to "1e-9"
883 * not throwing an error on mxMatrix('Full', 3, 3, labels = c(NA, NA, NA))
884 * applying identical error checking to single thresholds matrix and single thresholds algebra
885 * implemented generic method names() for MxModel objects.
886 * implemented vec2diag() and diag2vec() matrix algebra functions.
887
888 Release 0.2.4-1038 (Jan 15, 2010)
889 =================================
890 * definition variables can now be used inside algebra expressions
891 * definition variables inside of MxMatrices will populate to the 1st row before conformability checking. In plain english: you do not need to specify the starting values for definition variables.
892 * the square-bracket operator when used in MxMatrix labels is no longer restricted to constants for the row and column.  The row and column arguments will accept any term that evaluates to a scalar value or a (1 x 1) matrix.
893 * summary() on a model returns a S3 object.  Behaves like summary() in stats package.
894 * eliminated UnusualLabels.R test case.  Too many problems with windows versus OS X versus linux.
895 * implemented vech() and vechs() functions: half-vectorization and strict half-vectorization
896 * fixed bug in ordinal FIML when # of data columns > # of thresholds
897 * added 'frontendTime' and 'backendTime' values to summary() output. They store the elapsed time of a model in the R front-end and C back-end, respectively.
898 * created a name space for the OpenMx library. Only mx**() and omx**() functions should be exported to the user, plus several miscellaneous matrix functions and S4 generic functions.
899 * corrected 'observedStatistics' output of summary() to exclude definition variables
900 * corrected 'observedStatistics' output of summary() count the number of equality constraints
901
902 Release 0.2.3-1006 (Dec 04, 2009)
903 =================================
904 * added 'vector' argument to mxFIMLObjective() function. Specifies whether to return the likelihood vector (if TRUE) or the sum of log likelihoods (if FALSE). Default value is FALSE.
905 * renamed omxCheckEquals() to omxCheckIdentical(). omxCheckIdentical() call "identical" so that NAs can be compared.
906 * added checking of column names of F and M matrices in RAM objective functions.
907 * added 'dimnames' argument to mxRAMObjective() function. Populates the column names of F and M matrices.
908 * added square bracket operator to MxAlgebra expressions.  A[x,y] or A[,y] or A[x,] or A[,] are valid.
909 * square bracket operator supports row and column string arguments.
910 * mxModel(remove=TRUE) accepts both character names or S4 named entities.
911 * added support for x86_64 on OS X 10.6 (snow leopard)
912 * fixed support for x86_64 on Ubuntu 9.10 (gcc 4.4)
913 * throw error message when inserting a named entity into a model with an identical name
914 * added Anthony William Fairbank Edwards "Likelihood" (1972; 1984) A, B, O blood group example to online documentation
915
916 Release 0.2.2-951 (Oct 29, 2009)
917 ================================
918 * omxGraphviz() either prints to stdout or to a filename
919 * updated omxGraphviz() to draw an arrow if (value != 0 || free == TRUE || !is.na(label))
920 * omxGraphviz() returns a character string invisibly
921 * error checking for bogus definition variables
922 * summary() uses matrix dimnames by default, use options('mxShowDimnames'=FALSE) to disable
923 * added support for gcc 4.4 (Ubuntu 9.10) on x86 and x86_64 architectures
924 * created R documention for omxGraphviz() function
925 * generalized dependency specification for objective functions (omxObjDependencies)
926 * fixed cross-reference links in User Guide
927
928 Release 0.2.1-922 (Oct 10, 2009)
929 ================================
930 * checked observed data for dimnames on ML objective functions
931 * using dimnames= argument to mxMLObjective() and mxFIMLObjective()
932   propagates to MxMatrix objects on output.
933 * bug fix for error message where model name is incorrect
934 * updated user guide in response to feedback from beta testers
935 * incremented version number to 0.2.1-922 to sync demos and user guide
936
937 Release 0.2.0-905 (Oct 06, 2009)
938 ================================
939 * several of the twin model demo examples have been recoded.
940 * fixed bug with non-floating point matrices.
941 * more error checking for mxPath().
942 * tools/mxAlgebraParser.py will convert Mx 1.0 algebra expressions (Python PLY library is required).
943 * renamed "parameter estimate" column to "Estimate" and "error estimate" to "Std.Error" in summary().
944 * added 'dimnames' argument to mxFIMLObjective() and mxMLObjective().
945 * error checking for RAM models with non-RAM objective functions.
946
947 Release 0.1.5-851 (Sep 25, 2009)
948 ================================
949 * improved error messages on unknown identifier in a model (beta tester issue)
950 * fixed bug in mxMatrix() when values argument is matrix and byrow=TRUE
951 * implemented square-bracket substitution for MxMatrix labels
952 * fixed a bug in computation of omxFIMLObjective within an algebra when definition variables are used
953 * significant alterations to back-end debugging flags
954 * tweaked memory handling in back-end matrix copying
955 * added support for x86_64 linux with gcc 4.2 and 4.3
956
957 Release 0.1.4-827 (Sep 18, 2009)
958 ================================
959 * added checking and type coercion to arguments of mxPath() function (a beta tester alerted us to this)
960 * moved matrices into submodels in UnivariateTwinAnalysis_MatrixRaw demo
961 * added Beginners Guide to online documentation
962 * mxRun() issues an error when the back-end reports a negative status code
963 * named entities and free or fixed parameter names cannot be numeric values
964 * constant literals are allowed inside mxAlgebra() statements, e.g. mxAlgebra(1 + 2 + 3)
965 * constant literals can be of the form 1.234E+56 or 1.234e+56.
966 * type checking added to mxMatrix arguments (prompted by a forum post)
967 * mxPath() issues an error if any of the arguments are longer than the number of paths to be generated
968 * data frames are now accepted at the back-end
969 * FIML ordinal objective function is now working. Still a bit slow and inelegant, but working
970 * FIML ordinal now accepts algebras and matrices. dimnames of columns must match data elements
971 * implemented free parameter and fixed parameter substitution in mxAlgebra statements
972 * implemented global variable substitution in mxAlgebra statements
973 * turned off matrix and algebra substitution until a new proposal is decided
974 * snow and snowfall are no longer required packages
975 * added cycle detection to algebra expressions
976 * mxEval() with compute = TRUE will assign dimnames to algebras
977 * added dimnames checking of algebras in the front-end before optimization is called
978 * added 'make rproftest' target to makefile
979
980 Release 0.1.3-776 (Aug 28, 2009)
981 ================================
982 * mxEvaluate() was renamed to mxEval() after input from beta testers on the forums.
983 * new function mxVersion that prints out the current version number (beta tester request).
984 * When printing OpenMx objects, the @ sign is used where it is needed if you would want to print part of the object (beta tester request).
985 * now supports PPC macs.
986 * implemented AIC, BIC and RMSEA calculations.
987 * mxMatrix documentation now talks about lower triangular matrices (beta tester request).
988 * fixed bugs in a number of demo scripts.
989 * added chi-square and p-value patch from beta tester Michael Scharkow.
990 * added comments to demo scripts.
991 * fixed a bug in the quadratic operator  (a beta tester alerted us to this).
992 * means vectors are now always 1xn matrices (beta tester request).
993 * added an option "compute" to mxEval() to precompute matrix expressions without going to the optimizer.
994 * Matrix algebra conformability is now tested in R at the beginning of each mxRun().
995 * named entities (i.e. mxMatrices, mxAlgebras, etc.) can no longer have the same name as the label of a free parameter.  (This seems obscure, but you will like what we do with it in the next version!)
996 * can use options(mxByrow=TRUE) in the R global options if you always read your matrices in with the byrow=TRUE argument.  Saves some typing.  (beta tester request)
997 * fixed the standard error estimates summary.
998 * added mxVersion() function to return the version number (as a string).
999
1000 Release 0.1.2-708 (Aug 14, 2009)
1001 ================================
1002 * Added R help documentation for omxCheckCloseEnough(), omxCheckWithinPercentError(), 
1003         omxCheckTrue(), omxCheckEquals(), and omxCheckSetEquals()
1004
1005 * (mxMatrix) Fixed a bug in construction of symmetric matrixes.
1006     - now supports lower, standardized, and subdiagonal matrices.
1007
1008 Release 0.1 (Aug 03, 2009)
1009 ==========================
1010 * (mxEvaluate) mxEvaluate translates MxMatrix references, MxAlgebra references,  MxObjectiveFunction references, and label references.
1011
1012 * (mxOptions) added 'reset' argument to mxOptions()
1013
1014 * (mxPath) renamed 'start' argument of mxPath() to 'values'
1015     - renamed 'name' argument of mxPath() to 'labels'
1016     - renamed 'boundMin' argument of mxPath() to 'lbound'
1017     - renamed 'boundMax' argument of mxPath() to 'ubound'
1018     - eliminated 'ciLower' argument of mxPath()
1019     - eliminated 'ciUpper' argument of mxPath()
1020     - eliminated 'description' argument of mxPath()
1021
1022 * (dimnames) implemented dimnames(x) for MxMatrix objects
1023     - implemented dimnames(x) <- value for MxMatrix objects
1024     - implemented dimnames(x) for MxAlgebra objects
1025     - implemented dimnames(x) <- value for MxAlgebra objects
1026
1027 * (mxMatrix) added 'dimnames' argument to mxMatrix()
1028
1029 * (mxData) renamed 'vector' argument of mxData() to 'means'