-
Notifications
You must be signed in to change notification settings - Fork 113
Forthcoming fixes
Joseph Ramsey edited this page Nov 27, 2024
·
380 revisions
Changes for upcoming 7.6.6
Main changes.
- Made some corrections to the implementation to the final FCI orientation rules in response to a review from Peter Spirtes.
- Updated discriminating path rule to make it more efficient.
- Refactored FciOrient to always use discriminating path rule.
- Reimplemented R8, R9, R10 in final FCI orientation rules for efficiency.
- Revised implementation of the AD Tree class and incorporated it into the Chi-Square and G-Square discrete independence tests as an alternative to sample counting.
- Revised DiscreteBicScore to ignore unattested categories for variables.
- Removed several "experimental" designations for algorithms.
- Added an implementation of CellTable using AD Trees for space-savings and switched discrete ChiSquare to use it.
- Improved AdTree for efficiency and clarity.
- Improved MvpBicScore.
- Added InterruptedException to MarkovCheck and handling for it in several classes.
- Added an IDA editor to calculate IDA and IDA-like average distances of parameter values from true values.
- Added CpdagParentDistancesFromTrue class.
- Added column to bootstrap table to show edge properties.
- Refacted all sepset finding methods into a new class, SepsetFinder, and added several new new methods.
- Improved logging consistency across LV algorithms.
- Improved LvLite.
- Added "recursive msep" and "noncolliders only" options to MarkovCheckEditor.
- Added selection bias option to nodes in the graph editor.
- Adjusted DagToPag to account correctly for selection bias.
- Added method to produce data with selection nodes conditioned to > 0 as a new DataBox item.
- Refactored logic to find unshielded colliders and to R4 discriminating path orientations into a separate interface.
- Implemented the R0R0 methods for both test-based and DagToPag contexts.
- Added logic in R4 to handle the case of multiple discriminating paths between two nodes for the test-based implementation (using the msep path blocking method).
- Removed independence test caching for the IndTestFisherZ class, which was causing errors in places.
- Added nodewise Markov check methods.
- Did several optimizations for PAG-related functions to improve speed of interface, aiming at PAGs with 100 nodes plus 10 latent common causes, with an average degree of 10.
- Cached some types of paths in the graph class.
- Replaced some depth-first methods with breadth-first equivalents.
- For looking for latent common causes, limited length of treks (correctly) to 3.
- Introduced the PagCache class to store calculated PAGs for DAGs and DAGs for their calculated PAGs, for speed of lookup, so DagToPag only needs to be called once per DAG and that statistics that require a DAG can get one.
- Added missing Javadocs, corrected some errors.
- Made repairs to testwise deletion and optimized it.
- For Markov check, made ordered local Markov the default.
- Updated Conditional Correlation Test.
Selected Minutiae.
- Made table counting classes for the chi-square and g-square tests immutable to be safe in multi-threaded environments in response to a worry discovered when moving to JDK 21.1.
- Replaced block real matrix with MatrixUtils where used.
- Corrected pseudoinverse calculation.
- Improved fast adjacency search.
- Improved KCI implementation. (Still needs work.)
- Removed Meek verbose flag where used.
- In MultiDimensionalIntTable and CellTable, replaced Longs with Integers to save space.
- Added "no rows" check to ChiSquareTable for efficiency.
- Improved MnlrLilklihood and MvpLikelihood.
- In AdTree, refactored Subdivision class to use Java record.
- Added validation checks to AdTree.
- Added bootstrap row sampling to MarkovCheck and AdTree.
- Handled empty total effects in various methods.
- Corrected some edge marking logic in AbstractWorkbench.
- Refactored compareTo() method in IndependenceFact for efficiency.
- Added menu items to the Search box to save graphs in various formats.
To do:
- Get final bootstrapping changes from Kevin and Jessi.
- Clarify legal PAG check with Peter. (I.e., why am I missing tail endpoints still?)
- Update documentation.