Skip to content

Bond dissociation energy benchmark#426

Open
gelzinyte wants to merge 9 commits intoddmms:mainfrom
gelzinyte:elena/molecules-radicals
Open

Bond dissociation energy benchmark#426
gelzinyte wants to merge 9 commits intoddmms:mainfrom
gelzinyte:elena/molecules-radicals

Conversation

@gelzinyte
Copy link
Copy Markdown

@gelzinyte gelzinyte commented Mar 12, 2026

Pre-review checklist for PR author

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

Summary

Performance in predicting C-H bond dissociation energies (BDEs) for 60 CYP3A4 drug-like substrates (CHO elements only), comprising 1117 sp3 C-H bonds across all molecules. The BDEs are computed as E_radical + E_isolated_H - E_molecule. The first metric computes the BDE error directly. The second metric compares in models' ability to predict relative BDEs. This is evaluated by comparing predicted and reference BDE ranks (lowest-highest order assignments) for each molecule and averaged across all molecules in the dataset. Direct BDE and BDE rank prediction is computed on DFT-optimised geometries and on MLFF-optimised geometries.

Linked issue

Resolves #425

Progress

  • Calculations
  • Analysis
  • Application
  • Documentation

Testing

  • MACE-OFF23
  • MACE-MatPES-r2scan
  • MACE-MPA-0
  • MACE-MP

New decorators/callbacks

A callback showing mlff-optimised structure. Currently as part of the app definition.

@gelzinyte
Copy link
Copy Markdown
Author

BDEs.zip

Structures needed for the test.

@joehart2001 joehart2001 added the new benchmark Proposals and suggestions for new benchmarks label Mar 19, 2026
bad: 50.0
unit: kcal/mol
tooltip: "Mean Absolute Error on DFT-relaxed structures"
level of theory: B3LYP-D3BJ/def2-SV(P)
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.

Suggested change
level of theory: B3LYP-D3BJ/def2-SV(P)
level_of_theory: B3LYP-D3BJ/def2-SV(P)

bad: 50.0
unit: kcal/mol
tooltip: "Mean Absolute Error on MLFF-relaxed structures"
level of theory: B3LYP-D3BJ/def2-SV(P)
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.

Suggested change
level of theory: B3LYP-D3BJ/def2-SV(P)
level_of_theory: B3LYP-D3BJ/def2-SV(P)

bad: 0.5
unit: null
tooltip: "Mean Kendal rank correlation coefficient"
level of theory: B3LYP-D3BJ/def2-SV(P)
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.

Suggested change
level of theory: B3LYP-D3BJ/def2-SV(P)
level_of_theory: B3LYP-D3BJ/def2-SV(P)

bad: 0.5
unit: null
tooltip: "Mean Kendall rank correlation coefficient on MLFF-relaxed structures"
level of theory: B3LYP-D3BJ/def2-SV(P)
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.

Suggested change
level of theory: B3LYP-D3BJ/def2-SV(P)
level_of_theory: B3LYP-D3BJ/def2-SV(P)

@joehart2001
Copy link
Copy Markdown
Collaborator

joehart2001 commented Apr 30, 2026

Hey @gelzinyte, sorry for the delay, but the PR is looking nice! Would you also be able to send the MLFF opt file so i could uplaod it as well. A few comments:

calc:

  • i think its probably best to combine the two calc files into one
  • adding tqdm to the calc could be nice to track benchmark progress
  • worth adding @pytest.mark.slow above @pytest.mark.parametrize("mlip", MODELS.items()) in the calc

app:

  • i think a lot of the custom structure visualisation functions could be replaced with utlities we've written for use in other benchmarks. so for the DFT structures, where all the structures are the same, something like this could be a good idea:
        structs_dir = DATA_PATH / MODELS[0] / "dft_opt"
        xyz_files = sorted(structs_dir.glob("*.xyz"), key=lambda p: int(p.stem))
        structs_dft = [
            f"assets/molecular/BDEs/{MODELS[0]}/dft_opt/{f.stem}.xyz"
            for f in xyz_files
        ]
  • for the opt we'd probably want to view the optimised structures for each model. This one is more fiddly so probably best to come back to it once we've got all the data uplaoded so i can properly test it

general:

  • rebase

Thanks!

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.

Add a benchmark computing bond dissociation energies

2 participants