-
Notifications
You must be signed in to change notification settings - Fork 5
MLIPs in FreeBird #124
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
Open
yangmr04
wants to merge
40
commits into
dev
Choose a base branch
from
feature/ml-ipi
base: dev
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
MLIPs in FreeBird #124
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- Created a new pixi.toml file for CondaPkg with specified dependencies and project metadata. - Added a new CondaPkg.toml file to define pip dependencies for the project. - Updated Project.toml to include CondaPkg as a dependency with the appropriate UUID and version.
… and generalize related live sets into MLIPAtomWalkers.
- Adjusted OpenSSL version constraint in pixi.toml to ">=3, <3.6". - Specified numpy version constraint in pixi.toml to "<2.3". - Updated Python version constraint in pixi.toml to ">=3.10,<3.14, =3.11". - Removed outdated dependencies from pixi.toml and CondaPkg.toml. - Set fairchem-core version in both files to ">=2.10".
… and inference settings
Feature/ml uma
14 tasks
junchichen21
approved these changes
Dec 10, 2025
Collaborator
junchichen21
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me. Corresponding test codes are needed later.
…ntial with energy checks and atom swaps
… AbstractPotentials module
…tation and usage examples
Collaborator
Author
|
Just added CHGNet, I mean, why not :) |
junchichen21
approved these changes
Dec 11, 2025
junchichen21
approved these changes
Dec 11, 2025
…tion; update documentation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request adds support for Machine Learning Interatomic Potentials (MLIPs) to FreeBird.jl, enabling the use of advanced Python-based potentials (UMA, MACE, ORB, CHGNet) via ASE calculators. The changes introduce new types and interfaces for MLIPs, update documentation, and extend Monte Carlo and nested sampling routines to work with MLIP-backed walkers. The most important changes are grouped below.
MLIP Support and Integration:
MLIPAtomWalkersstruct to represent atom walkers using MLIPs, with automatic energy assignment from the MLIP potential (src/AbstractLiveSets/atomistic_livesets.jl,src/AbstractLiveSets/AbstractLiveSets.jl). [1] [2]PyMLPotentialwrapper and model-loading functions (mace_model,orb_model,uma_model,chgnet_model) for seamless ASE calculator integration (src/AbstractPotentials/ase_calculators.jl,src/AbstractPotentials/AbstractPotentials.jl). [1] [2] [3]interacting_energyandfrozen_energymethods for MLIP potentials, enabling energy evaluation via Python calculators (src/EnergyEval/atomistic_energies.jl,src/EnergyEval/atomistic_many_body.jl). [1] [2] [3]Documentation and Usability:
docs/src/MLIPs.md,docs/make.jl). [1] [2]Monte Carlo and Sampling Enhancements:
src/MonteCarloMoves/mixed_moves.jl,src/SamplingSchemes/SamplingSchemes.jl,src/SamplingSchemes/nested_sampling.jl). [1] [2] [3] [4]CI and Build Adjustments:
preinstead ofnightlyJulia version (.github/workflows/CI.yml).These changes collectively enable FreeBird.jl to leverage state-of-the-art machine learning potentials for atomistic simulations, with improved documentation and compatibility across the codebase.This pull request adds support for using machine learning interatomic potentials (MLIPs) in FreeBird.jl by integrating with ASE Python calculators. It introduces a new
MLIPAtomWalkerslive set and aPyMLPotentialwrapper for ASE-compatible MLIPs, along with documentation and example usage for UMA, MACE, and ORB models. The changes also provide the necessary infrastructure for users to add additional MLIPs and evaluate energies using these potentials.MLIP Integration and Infrastructure
PyMLPotentialtype and constructor insrc/AbstractPotentials/ase_calculators.jlto wrap ASE-compatible MLIPs (UMA, MACE, ORB) and expose them in Julia.MLIPAtomWalkerslive set insrc/AbstractLiveSets/atomistic_livesets.jlto manage walkers with MLIP potentials, and exported it for use. [1] [2]src/EnergyEval/atomistic_energies.jlandsrc/EnergyEval/atomistic_many_body.jl, including dummyfrozen_energyfor compatibility. [1] [2]Documentation
docs/src/MLIPs.mdwith detailed instructions and examples for setting up and using UMA, MACE, and ORB MLIPs, including how to add new ASE-compatible MLIPs.docs/make.jl.Package and Module Updates
PyCalculator,PyMLPotential, etc.) and included the newase_calculators.jlmodule insrc/AbstractPotentials/AbstractPotentials.jl. [1] [2]