-
Notifications
You must be signed in to change notification settings - Fork 113
Forthcoming fixes
Joseph Ramsey edited this page Nov 20, 2024
·
381 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 method to calculate IDA-like distances for nodes.
- 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.
- 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.
- Added missing Javadocs, corrected some errors.
- Made repairs to testwise deletion and optimized it.
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.