-
Notifications
You must be signed in to change notification settings - Fork 13
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
Add customized potential interface to matcalc/utils.py #34
Conversation
Signed-off-by: Runze Liu <[email protected]>
Signed-off-by: Runze Liu <[email protected]>
Signed-off-by: Runze Liu <[email protected]>
|
Already learned a lot from the comments. |
What great suggestions! Thanks for your feedback, professor. I would like to make good use of any opportunity to learn how to be an excellent developer and programmer from you. For the load_universal static method, we still need the uses to specify the uMLIP type that they're using by an argument. How about I directly add functions like load_chgnet, load_mace and load_sevennet? |
For the load universal, it is usually a pre-trained model. So for these, we can just have a load_universal method. |
Signed-off-by: Runze Liu <[email protected]>
not complicated actually, the only real requirement on their license is that you prefix derivative models as ORB-XYZ and have a prominent "Built with ORB" statement if you use it commercially. |
Okay, then I think it should be fine if we just use their models to do our own MatCalc calculations. |
One thing to point out is that while pip install "pynanoflann@git+https://github.com/dwastberg/pynanoflann#egg=af434039ae14bedcbb838a7808924d6689274168" The CI should also include this installation for testing purposes. At least until |
it's 4-5 times faster than MACE in initial testing (though at higher OOD MD force errors) which would make it a compelling addition to |
Thanks for your kind reminder Anthony. Glad to see you here and glad to see this pull request finally getting more active. I have completed the code for loading the ORBCalculator and it still needs more testing. |
No need. They can add their model if they wish. |
Also, one PR at a time. We deal with this Pr. The Orb, even if we want to add it, is another PR. |
How long do we need to wait for the unittests? |
It seems that some essential parameter files like I think this appears to occur because the package data is not correctly specified in the installation configuration of the maml package, specifically in the pyproject.toml file. The Please check whether this is the cause and try to fix it. Thank you.@zz11ss11zz |
I am so upset that the codecov decreased from 100% to 96%.😞 |
I would like to thank Prof. Ong (@shyuep) and Dr. Wang (@zz11ss11zz) for their invaluable assistance in fixing MAML. Currently, I am installing the package using |
With the emergence and continuous advancement of universal machine learning interatomic potentials (uMLIPs), the high-throughput computation of material properties directly from the potential energy surface (PES) has become increasingly efficient. However, users may sometimes want to use their own potentials, like SNAP, which are specifically tailored to the systems of interest. These potentials may not even be based on graph neural networks (GNNs), but we still want to provide flexibility for incorporating such models with MatCalc.
As suggested by Dr. Ong, I built an interface to load customized potentials to use MatCalc to do property calculations.
Specifically, I create a class called PESCalculator that included static factory methods like load_matgl, load_snap, load_ace, etc. These methods allowed users to load customized potentials from libraries such as MatGL, MAML, and PyACE.
This approach is also compatible with universal potentials. Users can load them by calling load_universal and specifying the model name, which follows a similar logic to the get_universal_calculators method.
The existing get_universal_calculator method will be deprecated in the future. When users call this method, they will receive a warning recommending they use PESCalculator.load_YOUR_MODEL() instead.
Currently, the supported potentials include:
I also plan to add support for the ORB universal potential, as well as CHGNet, MACE, etc. customized potentials in the future.
Summary
Major changes:
Todos
If this is work in progress, what else needs to be done?
Checklist
ruff
.mypy
.duecredit
@due.dcite
decorators to reference relevant papers by DOI (example)Tip: Install
pre-commit
hooks to auto-check types and linting before every commit: