Bond Dissociation Energy Skill

SkillDev tools

Calculate homolytic and heterolytic bond dissociation energies (BDEs) for all single bonds in a molecule using MLIPs with RDKit fragmentation.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Bond Dissociation Energy Skill skill

What this skill tells your AI

The instructions your AI receives, as published by learningmatter-mit/atomisticskills in .agents/skills/chem-bond-dissociation/SKILL.md and read by ahel’s review.

Goal

Calculate the homolytic and/or heterolytic bond dissociation energy (BDE) for each single bond in a molecule using Machine Learning Interatomic Potentials (MLIPs).

Homolytic BDE (radical fragments): $$\text{BDE}_\text{homo}(A{-}B) = E(A\bullet) + E(B\bullet) - E(A{-}B)$$

Heterolytic BDE (ionic fragments, minimum over both polarity variants): $$\text{BDE}_\text{hetero}(A{-}B) = \min!\bigl(E(A^+)+E(B^-),; E(A^-)+E(B^+)\bigr) - E(A{-}B)$$

[!IMPORTANT] This skill computes BDEs by relaxing both the intact molecule and fragments with an MLIP. For purpose-trained GNN models that predict BDE directly from SMILES (MAE ~0.6 kcal/mol), consider ALFABET or BonDNet instead.

Background

BDE is a fundamental thermodynamic quantity that determines:

  • Drug metabolism: CYP450 enzymes abstract H from the weakest C–H bond
  • Electrolyte stability: Which bonds break first under electrochemical voltage
  • Combustion chemistry: Rate-determining bond-breaking steps in fuel oxidation
  • Polymer degradation: Weakest links in polymer backbone chains

A 2024 study (Zubatyuk et al., JCTC) demonstrated that MACE potentials achieve BDE RMSE of 1.37 kcal/mol for aliphatic C–H bonds in drug-like molecules, outperforming semi-empirical methods and ALFABET for BDE ranking.

1. Prerequisites

  • Conda Environment: mace-agent (includes RDKit, ASE, and MACE)
  • Input: SMILES string or structure file (.sdf, .mol2)
  • RDKit: Required for bond identification and molecular fragmentation

2. Choosing a Foundation Potential

Refer to the foundation-potentials skill for model selection.

[!IMPORTANT] Model requirements by cleavage mode:

ModeRecommended modelsupports_charge_spinValidated?
homolyticMACE-OFF23-small/medium/largeNot required
heterolytic or bothMACE-OMOL-extra-large (env: mace-agent)✅ Required
heterolytic or bothMACE-MH-1 with omol head (env: mace-agent)✅ Required
heterolytic or bothFairChem uma-s-1p1 with --task_name omol (env: fairchem-agent)✅ Required

Setting charge/spin on MACE models: use atoms.info["charge"] and atoms.info["spin"] (the calculator's default info_keys maps "charge"total_charge / "spin"total_spin). Both MACE-OMOL and MACE-MH use joint_embedding to condition the network on these scalars.

If you request --cleavage both with a model that does not support charge/spin, the skill will log a warning and silently fall back to homolytic-only. Using --cleavage heterolytic with an unsupported model raises an error.

Note on single-atom fragments: When a bond produces a bare H (or other single atom), heterolytic BDE is automatically skipped — neither MACE nor FairChem UMA has signed single-atom energies (only neutral H, C, N, O… are in the reference tables).

3. Calculation Workflow

Step 1: Provide a molecule

# SMILES input (most common)
--smiles "CCO"

# Or from a structure file
--structure molecule.sdf

Step 2: Run BDE calculation

Homolytic only (default, no charge/spin needed):

# Env: mace-agent
python .agents/skills/chem-bond-dissociation/scripts/calculate_bde.py \
    --smiles CCO \
    --all_bonds \
    --cleavage homolytic \
    --model_type mace \
    --model_name MACE-OFF23-small \
    --output_dir research/my_folder/bde_results

Both homolytic and heterolytic (MACE-OMOL):

# Env: mace-agent
python .agents/skills/chem-bond-dissociation/scripts/calculate_bde.py \
    --smiles CCO \
    --all_bonds \
    --cleavage both \
    --model_type mace \
    --model_name MACE-OMOL-extra-large \
    --output_dir research/my_folder/bde_results_both

Both homolytic and heterolytic (FairChem UMA omol):

# Env: fairchem-agent
python .agents/skills/chem-bond-dissociation/scripts/calculate_bde.py \
    --smiles CCO \
    --all_bonds \
    --cleavage both \
    --model_type fairchem \
    --model_name uma-s-1p1 \
    --task_name omol \
    --output_dir research/my_folder/bde_results_both

Heterolytic only with FairChem UMA:

# Env: fairchem-agent
python .agents/skills/chem-bond-dissociation/scripts/calculate_bde.py \
    --smiles CCO \
    --all_bonds \
    --cleavage heterolytic \
    --model_type fairchem \
    --model_name uma-s-1p1 \
    --task_name omol \
    --output_dir research/my_folder/bde_hetero

Key Parameters

ArgumentDefaultDescription
--smilesSMILES string of the molecule
--structurePath to structure file (.sdf, .mol2)
--bondSpecific bond as atom indices "i-j" (0-indexed)
--all_bondsTrueCompute BDE for all single bonds
--include_h_bondsFalseInclude X–H bonds
--cleavagehomolytichomolytic, heterolytic, or both
--model_typemaceMLIP backend (mace, fairchem)
--model_nameautoModel checkpoint (default: MACE-OFF23-small for homolytic; uma-s-1p1 for hetero/both)
--task_nameTask head for multi-task models (e.g. omol for FairChem UMA)
--fmax0.01Force convergence for relaxation (eV/Å)
--output_dirrequiredOutput directory

4. Output Files

  • bde_results.json — Full results including:

    • metadata: model name, cleavage mode, supports_charge_spin, SMILES, etc.
    • intact_energy_eV: Energy of the relaxed intact molecule
    • bonds: List of per-bond results:
      • bde_eV, bde_kJ_mol, bde_kcal_mol: Homolytic BDE (if computed)
      • heterolytic_bde_eV, heterolytic_bde_kJ_mol, heterolytic_bde_kcal_mol: Best heterolytic BDE (if computed)
      • heterolytic_best_variant: Which polarity won ("frag1+ / frag2-" or "frag1- / frag2+")
      • heterolytic_variants: Raw results for both polarity variants
    • weakest_bond_homolytic, weakest_bond_heterolytic: Summary of weakest bonds
    • bonds_ranked_by_homolytic_bde, bonds_ranked_by_heterolytic_bde: Sorted tables
  • intact_relaxed.xyz: Relaxed intact molecule

  • frag_bond{N}_homo_{1,2}.xyz: Homolytic radical fragments

  • frag_bond{N}_hetero_pos_neg_{1,2}.xyz: Heterolytic cation/anion fragments (variant A)

  • frag_bond{N}_hetero_neg_pos_{1,2}.xyz: Heterolytic anion/cation fragments (variant B)

5. Examples

ExampleModelCleavageNotes
examples/ethanol_mace_off23_small/MACE-OFF23-smallhomolyticStandard homolytic BDE for ethanol; includes H bonds
examples/methanol_mace_omol_both/MACE-OMOL-extra-largebothHomo + heterolytic for methanol; C–O hetero = 90 vs homo = 143 kcal/mol
examples/methanol_uma_omol_both/FairChem UMA omolbothHomo + heterolytic for methanol; C–O hetero = 157 vs homo = 126 kcal/mol

Ethanol — Homolytic BDE (MACE-OFF23)

# Env: mace-agent
python .agents/skills/chem-bond-dissociation/scripts/calculate_bde.py \
    --smiles CCO \
    --all_bonds \
    --include_h_bonds \
    --cleavage homolytic \
    --model_type mace \
    --model_name MACE-OFF23-small \
    --output_dir .agents/skills/chem-bond-dissociation/examples/ethanol_mace_off23_small

Methanol — Both Homo and Heterolytic BDE (FairChem UMA omol)

# Env: fairchem-agent
python .agents/skills/chem-bond-dissociation/scripts/calculate_bde.py \
    --smiles CO \
    --all_bonds \
    --include_h_bonds \
    --cleavage both \
    --model_type fairchem \
    --model_name uma-s-1p1 \
    --task_name omol \
    --output_dir .agents/skills/chem-bond-dissociation/examples/methanol_uma_omol_both

Experimental BDEs for ethanol (Blanksby & Ellison, 2003):

BondExperimental BDE (kcal/mol)
O–H~104
C–H (methyl)~101
C–H (methylene)~95
C–C~85
C–O~92

6. Constraints

  • Radical spin states: For homolytic BDE, MLIPs are generally "electron-agnostic" and treat fragments as neutral regardless of spin state. BDE ranking is typically more reliable than absolute values.
  • Ionic states: Heterolytic BDE requires a charge/spin-aware model (supports_charge_spin=True). Validated: MACE-OMOL, MACE-MH (omol head), and FairChem UMA omol. These models use atoms.info["charge"] and atoms.info["spin"] to condition on the ionic state. Models without this flag raise an error for --cleavage heterolytic.
  • Ring bonds: Breaking bonds in rings produces a single open-chain diradical. The script will warn and skip ring bonds.
  • Accuracy: Expect ~2–5 kcal/mol error for homolytic BDEs with MACE-OFF23. Heterolytic accuracy is less benchmarked with current MLIPs.
  • Environments:
    • mace-agent for MACE models
    • fairchem-agent for FairChem/UMA models

References

  • Blanksby & Ellison, "Bond Dissociation Energies of Organic Molecules", Acc. Chem. Res. 2003, 36, 255.
  • St. John et al., "Prediction of organic homolytic bond dissociation enthalpies at near chemical accuracy with sub-second computational cost", Nat. Commun. 2020, 11, 2328. (ALFABET)
  • Zubatyuk et al., "A Transferable MACE Potential for Open- and Closed-Shell Drug-Like Molecules", J. Chem. Theory Comput. 2024.

Author: Bowen Deng Contact: GitHub @learningmatter-mit

Signals

GitHub stars
164
Forks
24
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
chem-bond-dissociation
Source
github.com/learningmatter-mit/atomisticskills