Skip to content

NEB surface reaction#350

Open
jungsdao wants to merge 30 commits intoddmms:mainfrom
jungsdao:neb_surf_reaction
Open

NEB surface reaction#350
jungsdao wants to merge 30 commits intoddmms:mainfrom
jungsdao:neb_surf_reaction

Conversation

@jungsdao
Copy link
Copy Markdown

@jungsdao jungsdao commented Feb 6, 2026

Pre-review checklist for PR author

PR author must check the checkboxes below when creating the PR.

Summary

Add NEB benchmark for three surface reactions from OC20NEB dataset comparing barrier height errors.

Linked issue

Resolves #293

Progress

  • Calculations
  • Analysis
  • Application
  • Documentation

Testing

Test on GPU with

  • mace-mp-0a
  • mace-mp-0b3
  • mace-mpa-0
  • mace-omat-0
  • mace-matpes-r2scan
  • orb-v3-consv-inf-omat
  • pet-mad

New decorators/callbacks

None

@ElliottKasoar ElliottKasoar added the new benchmark Proposals and suggestions for new benchmarks label Feb 6, 2026
@jungsdao
Copy link
Copy Markdown
Author

jungsdao commented Feb 6, 2026

PET-MAD seems to fail sometimes. It failed in one run but if I run it again with the same setting it runs without problem.

Copy link
Copy Markdown
Collaborator

@ElliottKasoar ElliottKasoar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this, @jungsdao!

Apologies for the slow review.

I'd be inclined to rename the test something slightly more specific e.g. OC20NEB, since this name can't clash with any other test.

I'd also like to explore replacing a lot of the calculation with janus-core's NEB calculation, as it's a lot of duplication, and I think the only thing missing is a way of checking convergence/continuing, both of which should be minor additions.

Comment thread docs/source/user_guide/benchmarks/nebs.rst Outdated
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please send these as a zip file ([benchmark_name].zip) to me and/or @joehart2001 so we can upload them to the S3 bucket, and then update your calculation to download them?

Comment thread ml_peg/calcs/nebs/surface_reaction/calc_surface_reaction.py Outdated
Comment thread ml_peg/calcs/nebs/surface_reaction/calc_surface_reaction.py Outdated
Comment thread ml_peg/calcs/nebs/surface_reaction/calc_surface_reaction.py Outdated
Comment thread ml_peg/calcs/nebs/surface_reaction/calc_surface_reaction.py Outdated
Comment thread ml_peg/analysis/nebs/surface_reaction/metrics.yml Outdated
Comment thread ml_peg/app/nebs/surface_reaction/app_surface_reaction.py Outdated
@jungsdao
Copy link
Copy Markdown
Author

jungsdao commented Mar 8, 2026

Actually from the last drop-in meeting, there was discussion that we can modify this benchmark similar to bulk-crystal Phonon. So I can add more reactions from OC20NEB and make a scatter plot. (I'm not sure yet how many reactions are feasible yet.)

I'll try to incorporate janus interface as well.

@ElliottKasoar
Copy link
Copy Markdown
Collaborator

ElliottKasoar commented Mar 11, 2026

Actually from the last drop-in meeting, there was discussion that we can modify this benchmark similar to bulk-crystal Phonon. So I can add more reactions from OC20NEB and make a scatter plot. (I'm not sure yet how many reactions are feasible yet.)

I'll try to incorporate janus interface as well.

Great! Please let us know if there any issues.

I've recently proposed some changes to janus-core somewhat inspired by your use-case here: stfc/janus-core#685, which I hope could prove useful.

Also just to note you may need to rebase/merge the latest main, as there is a conflict due to us merging a different NEB PR.

Comment on lines +140 to +142
with open(neb.results_file, "w", encoding="utf8") as out:
print("#Barrier [eV] | delta E [eV] | Max force [eV/Å] ", file=out)
print(*neb.results.values(), file=out)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be written already by NEB?

Copy link
Copy Markdown
Author

@jungsdao jungsdao Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi, thanks for comments. As you might notice, it's still not complete but I'll keep working.
The reason it's writing again this is because when I use method="eb", I realized that the fmax printed from NEBtool is different from the log. In NEBtool it initiates new NEB instance with method="aseneb" as default but it gives different fmax compared to method="eb" that I used here. From the "minimal" examples that I tried so far, method="eb" seemed to converge better than the other method like method="improvedtangent" which led to failure to converge within current max steps.

Comment thread ml_peg/calcs/nebs/surface_reaction/calc_surface_reaction.py Outdated
Comment thread ml_peg/calcs/nebs/surface_reaction/calc_surface_reaction.py Outdated
Comment thread ml_peg/analysis/nebs/oc20neb/analyse_oc20neb.py Outdated
Comment thread ml_peg/app/nebs/surface_reaction/app_surface_reaction.py Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new benchmark Proposals and suggestions for new benchmarks

Projects

None yet

Development

Successfully merging this pull request may close these issues.

NEB for surface reactions with OC20NEB Dataset

2 participants