Skip to content

feat: add tautobase - #658

Open
lwehrhan wants to merge 8 commits into
ddmms:mainfrom
lwehrhan:feat/add-tautobase
Open

feat: add tautobase#658
lwehrhan wants to merge 8 commits into
ddmms:mainfrom
lwehrhan:feat/add-tautobase

Conversation

@lwehrhan

@lwehrhan lwehrhan commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Pre-review checklist for PR author

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

Summary

The tautobase is a dataset of 1,391 tautomer pairs of organic small molecules. The geometries were refined at xtb level of theory. QM single point energies (reference for this benchmark) were re-computed by InstaDeep in-house at ωB97M-D3(BJ)/def2-TZVPPD level of theory.

Linked issue

Resolves #641

Progress

  • Calculations
  • Analysis
  • Application
  • Documentation

Testing

New decorators/callbacks

@ElliottKasoar ElliottKasoar added the new benchmark Proposals and suggestions for new benchmarks label Jul 8, 2026
Comment thread docs/source/user_guide/benchmarks/molecular_reactions.rst
@joehart2001

joehart2001 commented Jul 9, 2026

Copy link
Copy Markdown
Collaborator

Hey @lwehrhan thanks for the pr! can you attach the data for us to upload please?

  • have a look at the element filtering?

docs: https://ddmms.github.io/ml-peg/developer_guide/filter.html

Comment thread ml_peg/analysis/molecular_reactions/tautomers/metrics.yml Outdated
@joehart2001

Copy link
Copy Markdown
Collaborator

I've added similar changes to the folmsbee benchmark, and apart from the comments/conflicts i think we're basically good to go. @ElliottKasoar could you take a look?

@ElliottKasoar ElliottKasoar left a comment

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 looks great! Just a couple of minor suggestions/questions, plus if you could rebase/resolve conflicts with due to merging #429?

Comment thread ml_peg/analysis/molecular_reactions/tautomers/analyse_tautomers.py Outdated
Comment thread ml_peg/calcs/molecular_reactions/tautomers/calc_tautomers.py Outdated
Comment thread ml_peg/analysis/molecular_reactions/tautomers/analyse_tautomers.py Outdated
Comment thread ml_peg/analysis/molecular_reactions/tautomers/analyse_tautomers.py
Comment thread ml_peg/analysis/molecular_reactions/tautomers/analyse_tautomers.py
Comment thread docs/source/user_guide/benchmarks/molecular_reactions.rst Outdated
@ElliottKasoar

Copy link
Copy Markdown
Collaborator

Thanks for the quick changes, @lwehrhan!

I've rebase and resolved a couple of conflicts, but nothing else should be changed. Just to note that for this benchmark, the list saved is (I think) the union of all of the elements in all pairs , not a set per structure.

As we discussed, this is fine, but if we wanted to try implementing the "full" filtering in future, we'd need to change the construction very slightly, e.g.

elements = [
    sorted(
        {
            symbol
            for symbols in pair.atom_symbols
            for symbol in symbols
        }
    )
    for pair in benchmark._tautomers_data.values()
]

This would need to match the sorting of the data/labels, which is why the example for Folmsbee looks a bit more complicated, with a zip etc.

@joehart2001 I think I'm happy with this, so if you can do a final check, we can probably merge. I'll wait for @lwehrhan to be back before making any data live, but we can start collecting it at least.

@joehart2001

Copy link
Copy Markdown
Collaborator

Thanks for the quick changes, @lwehrhan!

I've rebase and resolved a couple of conflicts, but nothing else should be changed. Just to note that for this benchmark, the list saved is (I think) the union of all of the elements in all pairs , not a set per structure.

As we discussed, this is fine, but if we wanted to try implementing the "full" filtering in future, we'd need to change the construction very slightly, e.g.

elements = [
    sorted(
        {
            symbol
            for symbols in pair.atom_symbols
            for symbol in symbols
        }
    )
    for pair in benchmark._tautomers_data.values()
]

This would need to match the sorting of the data/labels, which is why the example for Folmsbee looks a bit more complicated, with a zip etc.

@joehart2001 I think I'm happy with this, so if you can do a final check, we can probably merge. I'll wait for @lwehrhan to be back before making any data live, but we can start collecting it at least.

tested and all good from my side!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

external Contribution from external framework new benchmark Proposals and suggestions for new benchmarks

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: new benchmark tautobase reaction energies

4 participants