Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update code to 7.6.4 #1766

Merged
merged 580 commits into from
May 7, 2024
Merged

Update code to 7.6.4 #1766

merged 580 commits into from
May 7, 2024

Conversation

jdramsey
Copy link
Collaborator

@jdramsey jdramsey commented May 7, 2024

No description provided.

jdramsey and others added 30 commits March 31, 2024 12:45
Updated the usage of initialization methods in various Bayes related classes, specifically changing from "MlBayesIm.RANDOM" and "MlBayesIm.MANUAL" to "MlBayesIm.InitializationMethod.RANDOM" and "MlBayesIm.InitializationMethod.MANUAL". Created new files for CptMapProbs and CptMapCounts as part of the refactoring. This update helps make the code more readable and consistent across different parts of the application.
Updated the usage of initialization methods in various Bayes related classes, specifically changing from "MlBayesIm.RANDOM" and "MlBayesIm.MANUAL" to "MlBayesIm.InitializationMethod.RANDOM" and "MlBayesIm.InitializationMethod.MANUAL". Created new files for CptMapProbs and CptMapCounts as part of the refactoring. This update helps make the code more readable and consistent across different parts of the application.
Made a version of MlBayesim that doesn't store NaNs in the tables so that huge models can be estimated.
Renamed "ML Bayes Estimator" to "Bayes Estimator" and improved the precision by changing the data type of priorCount from int to double across several classes. A new BayesEstimatorParamsEditor class was also added. This improves the accuracy of the estimator and provides more control in configuring the Bayesian model parameters.
Refined the model name from "ML Bayes Estimator" to "Bayes Estimator" and increased the precision by adjusting the priorCount from integer to double. Also, introduced a new BayesEstimatorParamsEditor which provides enhanced control over configuring Bayesian model parameters. These changes ensure a higher accuracy in estimation and better configurability.
The commit switches to the more specific getDeclaredConstructor().newInstance() for class instantiation throughout the files for safer and more exact construction. Simultaneously, it optimizes list operations using method references. It further handles InvocationTargetException during class instantiation, improving exception handling.
Adjusted several classes within the Bayes estimation process to be able to accept an adjustable prior parameter. This allows for more flexibility when modeling and estimating due to the parameter's ability to handle different prior probabilities. Additionally, refactored some variable names to better reflect their functions.
New constructors have been added to BayesEstimatorWrapper, SemEstimatorWrapper, GeneralizedSemEstimatorWrapper, and EmBayesEstimatorWrapper classes. These constructors include additional parameters that enable users to customize the estimation process in individual classes. This change enhances configurability and adaptability of the classes in different conditions.
The default prior count in CptMapCounts.java has been changed from 1 to 0 for maximum likelihood estimation. Additionally, logging of 'bayesIm' data within BayesEstimatorWrapper.java has been commented out. These modifications improve the accuracy of calculations and optimize the program's performance by reducing unnecessary operations respectively.
The model names in both production and development configuration XML files have been updated. The 'Bayes Instantiated Model' and 'Bayes Estimator' have been renamed to 'ML Bayes Instantiated Model' and 'ML Bayes Estimator' respectively to reflect the use of maximum likelihood estimation.
The name attribute for the editor object in SessionEditorNode class has been updated to reflect more accurate functionality. Instead of "Structure Editor", it has been changed to "Parameter Editor" to provide clearer context within the application.
Final touches, Bayes estimator refactor.
The name attribute for the editor object in SessionEditorNode class has been updated to reflect more accurate functionality. Instead of "Structure Editor", it has been changed to "Parameter Editor" to provide clearer context within the application.
Added `getShortName` methods to simulation classes, refactoring various methods and classes related to GUI, such as `AlgcomparisonEditor` and `AlgcomparisonModel`. The code also adds serializations to classes like `Algorithms` and `Comparison`. The GUI changes mainly include implementing list selection event handling, updating method names, and improving swing component usage efficiency.
Implemented `getShortName` method in simulation classes to provide short names. Also, enhanced GUI functionalities by incorporating event handling for list selection, improving usage efficiency of swing components, and updating several method names. These modifications are spread across classes including `AlgcomparisonEditor`, `AlgcomparisonModel`, `Algorithms` and `Comparison`, where serialization is also added.
Implemented `getShortName` method in simulation classes and improved GUI functionalities in AlgcomparisonEditor. Additionally, added event listeners for better interaction, streamlined the usage of Swing components, and updated method names for clarity. Serialization also added to the Comparison class.
Implemented `getShortName` method in simulation classes and improved GUI functionalities in AlgcomparisonEditor. Additionally, added event listeners for better interaction, streamlined the usage of Swing components, and updated method names for clarity. Serialization also added to the Comparison class.
The commit includes refactoring of AlgcomparisonEditor, addition of the `getShortName` method in simulation classes, and updates to GUI functionalities for improved user interaction. It also involves serialization modifications to the Comparison class and renaming of methods for better clarity.
The commit marks several fields in AlgcomparisonModel as transient to prevent them from undergoing serialization process. It also initializes linked lists in the constructor rather than their declaration site, and corrects the assignment of parameters in the constructor method.
The commit updates the acronym of 'Algcomparison' in the configuration files to enhance consistency. It also revises the algorithm comparison editor with new combo box instances for independence test and score models, and refactors the way comparison text is displayed based on the selections. Other minor layout modifications have also been made to improve user interface.
This update adds functionality to handle multiple parameters simultaneously as a number list in the algorithm comparison editor. It provides better handling of parameters with number list text fields instead of single value fields for both simulations and algorithms. The code also refines the algorithm comparison UI, extraction of parameters and handling of simulation and algorithm parameters.
… compare the result with Uniform Distribution using Anderson Darling tes
The algorithm comparison editor now accepts multiple parameters as a number list, providing more flexibility when configuring simulations and algorithms. The UI for the algorithm comparison was also refined to better display these new number list parameters. It ensures accurate extraction and handling of parameters which constitute multiple values.
Changes accommodate multiple parameters as a number list in algorithm comparison editor GUI for enhanced flexibility in simulations and algorithms configuration. User interface is improved to accurately display and handle these multiple value parameters.
The existing code structure in AlgcomparisonEditor was simplified and reorganized. Code blocks and methods were reordered based on their business logic and use-cases. Redundant and unused codes were also removed. The changes were focused on improving the readability, maintainability and overall efficiency of the codebase.
Improved clarity and readability of the AlgcomparisonModel class by revising, adding, and organizing comments. Also implemented changes to structure by reordering and improving usage of variables and methods. Unnecessary code has been removed for a more streamlined and efficient class.
Added author tag to increase traceability and accountability for modifications in AlgcomparisonModel class. The commenting has also been improved to further clarify the class' intended function, enhancing the readability and maintainability of the code.
The 'Xml' and 'Comparison Parameters' tabs have been commented out for future attention in AlgcomparisonEditor.java. Also, the 'Statistics' tab was renamed to 'Table Columns'. The deactivated functions will be revisited and improved in the future.
jdramsey added 29 commits May 3, 2024 12:11
The documentation for the LvLite class has been updated to correctly reflect its purpose. It accurately explains that LvLite is an implementation of the LV algorithm for learning causal structures from observational data, using a combination of independence tests and scores to search for the best graph structure given a data set and parameters.
The documentation for the LvLite class has been updated to correctly reflect its purpose. It accurately explains that LvLite is an implementation of the LV algorithm for learning causal structures from observational data, using a combination of independence tests and scores to search for the best graph structure given a data set and parameters.
Removed the redundant if-else block in the LvLite search algorithm method and simplified it by keeping only the relevant part of the code. Additionally, updated the comments in the LvLite constructor for a clearer understanding, specifying that it will throw NullPointerException if the score is null.
Introduced a new functionality to treat and resolve almost cyclic paths during the graph search process. These are paths that are almost cycles but have a single additional edge that stops them from becoming a cycle. Handlers are placed in different search classes, as well as relevant parameters and documentation updates.
This commit changes the table background color from maroon to blue in the graph_edge_types.html file. This update is part of the user interface enhancement in tetrad-lib module.
Added a function and corresponding boolean flag to resolve almost cyclic paths in the search methods of SvarGfci, SvarFci, LvLite, and Fci. If the flag is set to true, these search methods will check for bidirectional edges and orient them in the direction of any existing directed path.
Several changes were made across multiple classes including changes in abbreviation in NumCorrectVisibleEdges.java, revised search rules in BFci.java, and various modifications in LvLite.java. Notably, a key functionality was added to resolve almost cyclic paths applicable in SvarGfci, SvarFci, LvLite, and Fci algorithms, which when set to true will orient bidirectional edges towards existing directed paths.
The adjacency check in the LvLite class has been simplified by removing redundant condition check. Additionally, the setting of the seed has been removed in both the search method and the parameters list of LvLite in the algorithm/oracle/pag package as it was an unnecessary operation in the current context.
This commit streamlines the edge manipulation flow in LvLite.java by eliminating unnecessary operations and improving condition checks. The changes also adjust how the setDoDiscriminatingPathColliderRule and setDoDiscriminatingPathTailRule methods are invoked in GraspFci.java and GFci.java, now feeding them the doDiscriminatingPathRule value.
In this commit, multiple areas of the code have been updated for better accuracy and readability. The passage of the dependency test into the LvLite class has been removed. Additionally, unnecessary System println calls have been commented out and exceptions now properly print their stack traces. The Discriminating Path Rule method has been introduced and unnecessary iterations in some loops have been eliminated to enhance the code performance.
Refined the LvLite class by removing the unused depth variable and restructuring method descriptions. Method descriptions are now updated to better describe their functionality. The 'discriminatingPathRule' method is now set to private to limit its accessibility.
Several unused import statements were identified and removed from the LvLite.java file. Furthermore, a minor adjustment was made to the comment describing the implementation of the search algorithm.
This commit removes the unused 'distance' variable in the LvLite class and also eliminates the commented-out code associated with it. This clean up helps improve readability and maintainability of the code.
The documentation for the FciOrient class constructor has been updated to indicate that the SepsetProducer object, representing the independence test, only needs to be given if the discriminating path rule is used. Otherwise, it can be null.
Unused code segments related to verbose logging and PAG comparisons have been removed from FciOrient. The printWrongColliderMessage method and truePag related methods have also been eliminated to streamline and declutter the codebase. These changes will not affect the functionality as they involve only unused or debug related code.
Two instances where the algorithm's depth was set have been removed. This change simplifies the algorithm and can potentially optimize its performance, as the depth parameter may not always be necessary or beneficial for certain inputs or situations. This adjustment does not affect the rest of the algorithm configurations.
The LvLite class has had its documentation improved. Both constructors have been expanded to better describe the class's role and functionality. Additionally, the runSearch method documentation has been rewritten and now provides a more accurate description of its operation and exceptions.
Added an extra logging step in the LvLite search algorithm (specifically, in the process of node orientation) in the Tetrad library. This log message will be emitted when the verbose flag is turned on, providing more visibility into the internal operation when debugging.
Added a brief comment to describe the purpose and function of the score-based discriminating path
The commit refactors the GraphEditor and Paths classes, simplifying code where possible and removing redundant comments and conditions. It simplifies conditions in the Paths class and removes lengthy redundant comments. It also refactors EdgeListGraph class by utilizing computeIfAbsent function for better performance and readability. It corrects a textual error in a comment in the Paths class as well.
The update introduces an enhancement in the reachability algorithm to work more efficiently with CPDAGs and PAGs. The aim is to generate virtual edges directed towards the arrow, enabling the reachability algorithm to find any implied colliders along the path. In addition, minor alterations have been made to the 'TestGraphUtils.java' file to increase the number of random graph generations.
A few more fixes for 7.6.4 release.
Modified few methods in the `TestCheckMarkov` testing file for improved accuracy. The method `cpdagForDag(trueGraph)` has been changed to `dagToCpdag(trueGraph)`, and the functions `getPrecisionAndRecallOnParentsSubGraph(...)` have been changed to `getPrecisionAndRecallOnMarkovBlanketGraph(...)`. This ensures more accurate precision and recall testing.
Removed redundant dependencies and adjusted line length to improve code readability in the LvLite algorithm class. Tweaked an error handling method in the DagSepsets class to boost program resilience by allowing for a broader set of valid inputs.
Bryan's score-based discriminating path variant.
Adjusted the condition in the LvLite.java file to check if the index of 'e' is greater than the index of 'c'. This tweak ensures the proper ordering of indices and prevents potential logical issues.
The tucking scheme in LvLite has been cleaned up for clearer logic flow. Old logic, known as Joe's tucking scheme, has been removed entirely. The simplified scheme, Bryan's tucking scheme, remains and is now unconditionally executed. This commit improves code readability and reduces complexity.
The commit includes changes to the version information in several pom.xml files across various modules including tetrad-lib, tetrad-gui, data-reader from "7.6.4-SNAPSHOT" to the official release "7.6.4". This indicates the successful release of the new version.
@jdramsey jdramsey merged commit 1611de7 into master May 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants