Added "!" to the set of available mxAlgebra() operators
[openmx:proteins-proteins-openmx.git] / CHANGES
1 trunk
2 =====
3 * added argument 'threshnames' to mxFIMLObjective()
4 * eliminated "initialize" method for MxMatrix objects
5 * added "omxCreateMatrix" method for MxMatrix objects
6 * renaming majority of omx* functions to imx* functions. See http://openmx.psyc.virginia.edu/thread/761
7 * added error checking to mxOption() function
8 * added "Optimality tolerance" to mxOption() selection
9 * added 'lbound' and 'ubound' columns to summary() output of free parameters
10 * added asterisks to the 'lbound' and 'ubound' columns when feasibility tolerance is met
11 * added "!" operator to the set of available mxAlgebra() operators
12
13 Pre-Release 999.0.0-1527 (January 6, 2011)
14 ==========================================
15 * added mxErrorPool() function and R documentation.
16 * added Apache license information to all R documentation files.
17 * new implementation of mxEval().
18 * new argument 'defvar.row' to mxEval().  See ?mxEval.
19 * handling definition variables for (I - A) ^ - 1 speedup
20 * handling square bracket labels for (I - A) ^ - 1 speedup
21 * added argument 'free' to omxGetParameters.  See ?omxGetParameters.
22 * added argument 'strict' to omxSetParameters.  See ?omxSetParameters.
23 * eliminated warnings for confidence interval optimization codes
24 * added "..." argument to mxRObjectiveFunction()
25 * added 'excludeself' argument to mxPath() function
26 * fix memory leak in RAM objective function
27 * removed dependency to MBESS library in R documentation
28 * added more descriptive error message when thresholds are not sorted
29 * incorporated NaN unsafe matrix-matrix multiplication (dgemm) from R <= 2.11.1
30 * incorporated NaN unsafe matrix-vector multiplication (dgemv) from R <= 2.11.1
31 * return NA in mxVersion() if "OpenMx" cannot be found
32 * fix infinite loop in objective function transformations
33 * added initialization to load OpenMx on swift workers
34 * implemented omxParallelCI() to calculate confidence intervals in parallel
35 * only calculating CIs for upper triangle of symmetric matrices
36 * cleanup appearance of transient MxMatrix objects in error messages
37 * fix bug with very large number of omxUntitledName() objects
38 * added optional argument CPUS=n to "make test" target
39 * change snowfall interface to use sfClusterApplyLB()
40 * storing raw data in row-major order, and copying contiguous data rows
41 * fix bug in mxModel() when using remove = TRUE
42
43 Release 1.0.0-1448 (September 30, 2010)
44 =======================================
45 * added missing entries to demo 00INDEX file
46
47 Release 0.9.2-1446 (September 26, 2010)
48 =======================================
49 * added growth mixture models to user guide
50 * added initial Swift hook in omxLapply() - currenly activated only for mxRun calls
51 * fixed a bug in mxRename() when encountering symbol of missingness
52 * bugfix for crash when '*' is used instead of '%*%'
53 * feature removal: square brackets in MxMatrix labels now accept only literal values
54 * bugfix for definition variables used in mxRowObjective (which is still experimental)
55 * bugfix for (I - A) ^ -1 speedup with FIML optimization
56
57 Release 0.9.1-1421 (September 12, 2010)
58 =======================================
59 * fixed a bug in -2 LL calculation in RAM models with definition variables and raw data
60
61 Release 0.9.0-1417 (September 10, 2010)
62 =======================================
63 * improved error messages for non 1 x n means vectors in FIML and ML
64 * fixed a performance bug that was forcing too many recalculations of the covariance matrix in FIML optimizations.
65 * defualt behavior is to disable standard error calculations when model contains nonlinear constraints
66 * improved error messages for NA values in definition variables
67 * added error message when expected covariance dimnames and threshold dimnames do not contain the same elements.
68 * fixed a bug when mxRename() encounters a numeric or character literal.
69 * new chapters added to OpenMx user guide.
70 * fixed a bug in -2 log likelihood calculation with missing data
71
72 Release 0.5.2-1376 (August 29, 2010)
73 ====================================
74 * improved error messages when identical label is applied to free and fixed parameters
75 * added 'onlyFrontend' optional argument to mxRun() function.  See ?mxRun.
76 * disabling cbind() and rbind() transformations as they are broken.
77
78 Release 0.5.1-1366 (August 22, 2010)
79 ====================================
80 * added error detection when multiple names are specified in mxMatrix(), mxAlgebra(), etc.
81 * removed 'digits' argument from mxCompare.  Target behavior of argument was unclear.  See ?mxCompare
82 * more informative error messages for 'dimnames' argument of objective functions
83 * more informative error messages when constraints have wrong dimensions
84 * improved error detected for 'nrow' and 'ncol' arguments of mxMatrix() function
85 * fixed a bug in ordinal FIML objective functions with non-used continuous data
86
87 Release 0.5.0-1353 (August 08, 2010)
88 ====================================
89 * calculating cycle length of RAM objective functions
90 * bugfix: preserve rownames when converting data.frame columns to numeric values
91 * 'nrow' and 'ncol' arguments now supercede matrix dimensions in mxMatrix()
92 * add boolean argument 'vector' to mxRAMObjective() for returning the vector of likelihoods
93 * added demo(OneFactorModel_LikelihoodVector) as example of 'vector=TRUE' in RAM model
94 * cbind() and rbind() inside MxAlgebra expressions with all arguments as MxMatrix objects are themselves transformed into MxMatrix objects
95 * bugfix with square bracket substitution
96 * finishing implementing sorting of raw data in mxFIMLObjective()
97 * added 'RAM Optimization' and 'RAM Max Depth' to model options.  See ?mxOption
98 * added support for linux x86_64 with gcc 4.1.x
99
100 Release 0.4.1-1320 (June 12, 2010)
101 ==================================
102 * confidence interval optimizations now jitter if they can't get started
103 * added error checking for dimensions of expected means in ML + FIML objectives
104 * check for missing observed means when using (optional) expected means in ML
105 * added citation("OpenMx") information
106
107 Release 0.4.0-1313 (June 09, 2010)
108 ==================================
109 * fixed bug in calculation of confidence intervals around non-objective values
110 * checking for partial square bracket references on input
111 * fixed error reporting for non-positive-definite covariances in FIML
112 * implemented initial sorting-based speedup for FIML objectives
113 * added 'No Sort Data' to mxOptions()
114 * eliminated getOption('mxOptimizerOptions') and getOption('mxCheckpointOptions') 
115 * added getOption('mxOptions')
116 * error messages for illegal names provide function call information
117 * added 'estimates' column to confidence intervals in summary() of model
118 * fixed bug so checkpointing will work in R 2.9.x series
119 * fixed bug so mxRename() works on confidence interval specification
120 * renaming 'estimates' column of confidence interval summary output to 'estimate'
121
122 Release 0.3.3-1264 (May 24, 2010)
123 =================================
124 * confidence interval frontend was requesting nonexistent matrices
125 * omxNewMatrixFromMxMatrix() assumed input was always integer vector S-expression
126 * confidence intervals mislabeling free parameter names
127
128 Release 0.3.2-1263 (May 22, 2010)
129 =================================
130 * added 'newlabels' argument to omxSetParameters() function
131 * now throwing errors to the user when detected from the backend in mxRun()
132 * checkpointing mechanism implemented - mxRun(model, checkpoint = TRUE)
133 * never computing confidence intervals for matrix cells where free = FALSE (all bets are off on algebras)
134 * added mxOption(model, "CI Max Iterations", value) 
135 * added documentation for mxRestore() function
136 * default expected means vectors are no longer generated
137
138 Release 0.3.1-1246 (May 09, 2010)
139 =================================
140
141 * new arguments to mxRun() for checkpointing and socket communication (doesn't work yet)
142 * throw an error if FIML objective has thresholds but observed data is not a data.frame object.
143 * bugfix for R version 2.11.0 is detecting as.symbol("") character as missing function parameter
144 * mxFactor() function accepts data.frame objects
145 * added mxCI() function to calculate likelihood-based confidence intervals
146 * mxCompare() shows model information for base models
147 * added flag all=[TRUE|FALSE] to mxCompare() function
148 * 'SaturatedLikelihood' argument to summary() function will accept MxModel object
149
150 Release 0.3.0-1217 (Apr 20, 2010)
151 =================================
152
153 new features
154 ------------
155 * implemented new ordinal data interface http://openmx.psyc.virginia.edu/thread/416#comment-1421 (except for 'means=0' component)
156 * added mxFactor() function (see ?mxFactor for help)
157 * added R documentation for rvectorize() and cvectorize()
158 * implemented eigenvalues and eigenvectors
159 * added 'numObs', 'numStats' arguments to mxAlgebraObjective()
160 * added 'numObs', 'numStats' arguments to summary()
161
162 changes to interface
163 --------------------
164 * mxConstraint("A", "=", "B") is now written as mxConstraint(A == B)
165 * renaming 'cov' argument to 'covariance' in omxMnor()
166 * renaming 'lbounds' argument to 'lbound' in omxMnor()
167 * renaming 'ubounds' argument to 'ubound' in omxMnor()
168 * renaming 'cov' argument to 'covariance' in omxAllInt()
169 * argument 'silent = TRUE' to mxRun() will no longer suppress warnings
170 * argument 'suppressWarnings = TRUE' to mxRun() will suppress warnings
171
172 bug fixes
173 ---------
174 * added error checking for mxBounds() with undefined parameter names
175 * improving error messages in mxMatrix() function
176 * fixed aliasing bug in mxAlgebra() with external variables and constant values
177
178 internal
179 --------
180 * added directory to repository for nightly tests ("make nightly")
181 * performance improvement to namespace conversion
182 * changing MxPath data structure from a list to an S4 object
183 * new signature for omxSetParameters(model, labels, free, values, lbound, ubound, indep)
184 * checked in implementation of mergesort
185 * changed mxCompare() signature to mxCompare(base, comparison, digits = 3)
186
187
188 Release 0.2.10-1172 (Mar 14, 2010)
189 ==================================
190 * bugfix for assigning default data name when default data does not exist
191 * bugfix for sharing/unsharing data to a three-level hierarchy
192 * bugfix for error reporting in bad matrix access, uncalculated std. errors, and poor omxAllint thresholds
193 * implemented rvectorize, cvectorize algebra functions: vectorize by row, and vectorize by column
194 * not allowing the following forbidden characters in names or labels: "+-!~?:\*/^%<>=&|$"
195 * added timestamp to summary() output
196 * reimplemented summary() function to handle unused data rows, and independent submodels
197 * reimplemented names(model), model$foo, and model$foo <- value to return all components of a model tree
198 * started work on an "OpenMx style guide" section to the User Guide.
199 * fix documentation + demo errors brought to our attention by dbishop
200
201 Release 0.2.9-1147 (Mar 04, 2010)
202 =================================
203 * bugfix for ordinal FIML with columns that are not threshold columns
204 * bugfix for detection of algebraic cycles when multiple objective functions are present
205 * test cases included for standard error calculation
206 * enabled standard error calculation by default
207
208 Release 0.2.8-1133 (Mar 02, 2010)
209 =================================
210 * bugfix for memory leak behavior in kronecker product calculation
211 * implemented kronecker exponentiation operator %^%.
212 * actually updating means calculations in ordinal FIML models
213 * removing standard errors from summary() until they are computed correctly
214
215 Release 0.2.7-1125 (Feb 28, 2010)
216 =================================
217 * added 'unsafe' argument to mxRun function.  See ?mxRun for more information.
218 * bugfix for filtering definition variable assignment to current data source.
219 * bugfix for using data.frame with integer type columns that are not factors.
220
221 Release 0.2.6-1114 (Feb 23, 2010)
222 =================================
223 * implemented omxAllInt, use ?omxAllInt for R help on this function
224 * implemented omxMnor, use ?omxMnor for R help on this function
225 * added option to calculate Hessian after optimization.  See ?mxOption for R help.
226 * added option to calculate standard errors after optimization.  See ?mxOption for R help.
227 * added R documentation for vech, vechs, vec2diag, and diag2vec
228 * performance improvements for independent submodels
229 * added 'silent=FALSE' argument to mxRun() function
230 * added R documentation for omxApply(), omxSapply(), and omxLapply()
231 * wrote mxRename() and added R documentation for function
232 * added 'indep' argument to summary() to ignore independent submodels (see ?summary)
233 * added 'independentTime' to summary() output. Wall clock time for independent submodels.
234 * added 'wallTime' and 'cpuTime' to summary() output. Total wall clock time and total cpu time.
235 * implemented ':' operator for MxAlgebra expressions. 1:5 returns the vector [1,2,3,4,5]
236 * implemented subranges for '[' operator in MxAlgebra expressions. foo[1:5,] is valid inside algebra.
237 * added omxGetParameters, omxSetParameters, omxAssignFirstParameters.  Use ? for documentation.
238 * renamed all objective function generic functions from omxObj* to genericObj*
239 * enumerated OpenMx and NPSOL options in ?mxOption documentation
240 * implemented foo[x,y] and foo[x,y] <- z for MxMatrix objects
241
242
243 Release 0.2.5-1050 (Jan 22, 2010)
244 =================================
245 * added 'mxVersion' slot to output of summary() function.
246 * added documentation of summary() function.
247 * set default function precision for ordinal FIML evaluation to "1e-9"
248 * not throwing an error on mxMatrix('Full', 3, 3, labels = c(NA, NA, NA))
249 * applying identical error checking to single thresholds matrix and single thresholds algebra
250 * implemented generic method names() for MxModel objects.
251 * implemented vec2diag() and diag2vec() matrix algebra functions.
252
253 Release 0.2.4-1038 (Jan 15, 2010)
254 =================================
255 * definition variables can now be used inside algebra expressions
256 * 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.
257 * 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.
258 * summary() on a model returns a S3 object.  Behaves like summary() in stats package.
259 * eliminated UnusualLabels.R test case.  Too many problems with windows versus OS X versus linux.
260 * implemented vech() and vechs() functions: half-vectorization and strict half-vectorization
261 * fixed bug in ordinal FIML when # of data columns > # of thresholds
262 * 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.
263 * 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.
264 * corrected 'observedStatistics' output of summary() to exclude definition variables
265 * corrected 'observedStatistics' output of summary() count the number of equality constraints
266
267 Release 0.2.3-1006 (Dec 04, 2009)
268 =================================
269 * 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.
270 * renamed omxCheckEquals() to omxCheckIdentical(). omxCheckIdentical() call "identical" so that NAs can be compared.
271 * added checking of column names of F and M matrices in RAM objective functions.
272 * added 'dimnames' argument to mxRAMObjective() function. Populates the column names of F and M matrices.
273 * added square bracket operator to MxAlgebra expressions.  A[x,y] or A[,y] or A[x,] or A[,] are valid.
274 * square bracket operator supports row and column string arguments.
275 * mxModel(remove=TRUE) accepts both character names or S4 named entities.
276 * added support for x86_64 on OS X 10.6 (snow leopard)
277 * fixed support for x86_64 on Ubuntu 9.10 (gcc 4.4)
278 * throw error message when inserting a named entity into a model with an identical name
279 * added Anthony William Fairbank Edwards "Likelihood" (1972; 1984) A, B, O blood group example to online documentation
280
281 Release 0.2.2-951 (Oct 29, 2009)
282 ================================
283 * omxGraphviz() either prints to stdout or to a filename
284 * updated omxGraphviz() to draw an arrow if (value != 0 || free == TRUE || !is.na(label))
285 * omxGraphviz() returns a character string invisibly
286 * error checking for bogus definition variables
287 * summary() uses matrix dimnames by default, use options('mxShowDimnames'=FALSE) to disable
288 * added support for gcc 4.4 (Ubuntu 9.10) on x86 and x86_64 architectures
289 * created R documention for omxGraphviz() function
290 * generalized dependency specification for objective functions (omxObjDependencies)
291 * fixed cross-reference links in User Guide
292
293 Release 0.2.1-922 (Oct 10, 2009)
294 ================================
295 * checked observed data for dimnames on ML objective functions
296 * using dimnames= argument to mxMLObjective() and mxFIMLObjective()
297   propagates to MxMatrix objects on output.
298 * bug fix for error message where model name is incorrect
299 * updated user guide in response to feedback from beta testers
300 * incremented version number to 0.2.1-922 to sync demos and user guide
301
302 Release 0.2.0-905 (Oct 06, 2009)
303 ================================
304 * several of the twin model demo examples have been recoded.
305 * fixed bug with non-floating point matrices.
306 * more error checking for mxPath().
307 * tools/mxAlgebraParser.py will convert Mx 1.0 algebra expressions (Python PLY library is required).
308 * renamed "parameter estimate" column to "Estimate" and "error estimate" to "Std.Error" in summary().
309 * added 'dimnames' argument to mxFIMLObjective() and mxMLObjective().
310 * error checking for RAM models with non-RAM objective functions.
311
312 Release 0.1.5-851 (Sep 25, 2009)
313 ================================
314 * improved error messages on unknown identifier in a model (beta tester issue)
315 * fixed bug in mxMatrix() when values argument is matrix and byrow=TRUE
316 * implemented square-bracket substitution for MxMatrix labels
317 * fixed a bug in computation of omxFIMLObjective within an algebra when definition variables are used
318 * significant alterations to back-end debugging flags
319 * tweaked memory handling in back-end matrix copying
320 * added support for x86_64 linux with gcc 4.2 and 4.3
321
322 Release 0.1.4-827 (Sep 18, 2009)
323 ================================
324 * added checking and type coercion to arguments of mxPath() function (a beta tester alerted us to this)
325 * moved matrices into submodels in UnivariateTwinAnalysis_MatrixRaw demo
326 * added Beginners Guide to online documentation
327 * mxRun() issues an error when the back-end reports a negative status code
328 * named entities and free or fixed parameter names cannot be numeric values
329 * constant literals are allowed inside mxAlgebra() statements, e.g. mxAlgebra(1 + 2 + 3)
330 * constant literals can be of the form 1.234E+56 or 1.234e+56.
331 * type checking added to mxMatrix arguments (prompted by a forum post)
332 * mxPath() issues an error if any of the arguments are longer than the number of paths to be generated
333 * data frames are now accepted at the back-end
334 * FIML ordinal objective function is now working. Still a bit slow and inelegant, but working
335 * FIML ordinal now accepts algebras and matrices. dimnames of columns must match data elements
336 * implemented free parameter and fixed parameter substitution in mxAlgebra statements
337 * implemented global variable substitution in mxAlgebra statements
338 * turned off matrix and algebra substitution until a new proposal is decided
339 * snow and snowfall are no longer required packages
340 * added cycle detection to algebra expressions
341 * mxEval() with compute = TRUE will assign dimnames to algebras
342 * added dimnames checking of algebras in the front-end before optimization is called
343 * added 'make rproftest' target to makefile
344
345 Release 0.1.3-776 (Aug 28, 2009)
346 ================================
347 * mxEvaluate() was renamed to mxEval() after input from beta testers on the forums.
348 * new function mxVersion that prints out the current version number (beta tester request).
349 * 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).
350 * now supports PPC macs.
351 * implemented AIC, BIC and RMSEA calculations.
352 * mxMatrix documentation now talks about lower triangular matrices (beta tester request).
353 * fixed bugs in a number of demo scripts.
354 * added chi-square and p-value patch from beta tester Michael Scharkow.
355 * added comments to demo scripts.
356 * fixed a bug in the quadratic operator  (a beta tester alerted us to this).
357 * means vectors are now always 1xn matrices (beta tester request).
358 * added an option "compute" to mxEval() to precompute matrix expressions without going to the optimizer.
359 * Matrix algebra conformability is now tested in R at the beginning of each mxRun().
360 * 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!)
361 * 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)
362 * fixed the standard error estimates summary.
363 * added mxVersion() function to return the version number (as a string).
364
365 Release 0.1.2-708 (Aug 14, 2009)
366 ================================
367 * Added R help documentation for omxCheckCloseEnough(), omxCheckWithinPercentError(), 
368         omxCheckTrue(), omxCheckEquals(), and omxCheckSetEquals()
369
370 * (mxMatrix) Fixed a bug in construction of symmetric matrixes.
371     - now supports lower, standardized, and subdiagonal matrices.
372
373 Release 0.1 (Aug 03, 2009)
374 ==========================
375 * (mxEvaluate) mxEvaluate translates MxMatrix references, MxAlgebra references,  MxObjectiveFunction references, and label references.
376
377 * (mxOptions) added 'reset' argument to mxOptions()
378
379 * (mxPath) renamed 'start' argument of mxPath() to 'values'
380     - renamed 'name' argument of mxPath() to 'labels'
381     - renamed 'boundMin' argument of mxPath() to 'lbound'
382     - renamed 'boundMax' argument of mxPath() to 'ubound'
383     - eliminated 'ciLower' argument of mxPath()
384     - eliminated 'ciUpper' argument of mxPath()
385     - eliminated 'description' argument of mxPath()
386
387 * (dimnames) implemented dimnames(x) for MxMatrix objects
388     - implemented dimnames(x) <- value for MxMatrix objects
389     - implemented dimnames(x) for MxAlgebra objects
390     - implemented dimnames(x) <- value for MxAlgebra objects
391
392 * (mxMatrix) added 'dimnames' argument to mxMatrix()
393
394 * (mxData) renamed 'vector' argument of mxData() to 'means'