Skip to content

Bond Dissociation Energy

BDE workflow - Bond Dissociation Energy calculations.

BDEEntry dataclass

BDEEntry(fragment_idxs: tuple[int, ...], energy: float | None = None)

A bond dissociation energy result.

BDEResult dataclass

BDEResult(workflow_data: dict[str, Any], workflow_type: str, workflow_uuid: str, complete: bool = True)

Bases: WorkflowResult

Result from a Bond-Dissociation Energy (BDE) workflow.

energy property

energy: float | None

Energy of the molecule (Hartree).

bdes property

bdes: list[BDEEntry]

Bond dissociation energies.

submit_bde_workflow

submit_bde_workflow(initial_molecule: StructureInput, mode: str = 'omol25_conserving_s', multistage_opt_settings: MultiStageOptSettings | None = None, fragment_indices: list[list[int]] | None = None, all_CH: bool = False, all_CX: bool = False, name: str = 'BDE Workflow', folder_uuid: str | None = None, folder: Folder | None = None, max_credits: int | None = None, webhook_url: str | None = None, is_draft: bool = False) -> Workflow[BDEResult]

Submits a Bond-Dissociation Energy (BDE) workflow to the API.

Parameters:

Name Type Description Default
initial_molecule StructureInput

molecule to calculate BDEs for

required
mode str

level of theory to run the calculation at, given as a method string: - omol25_conserving_s – neural network potential (default) - g_xtb//gfn2_xtb – semiempirical - r2scan3c//gfn2_xtb – DFT single point on a semiempirical geometry

'omol25_conserving_s'
multistage_opt_settings MultiStageOptSettings | None

explicit method sequence to use instead of the one mode would pick – the optimization stage(s) followed by a final singlepoint, given as a MultiStageOptSettings. When omitted, the sequence is built automatically from mode. When supplied, it replaces that sequence

None
fragment_indices list[list[int]] | None

1-indexed atoms of each fragment to dissociate. Each fragment must connect to the rest of the molecule by a single bond

None
all_CH bool

whether to dissociate all C-H bonds

False
all_CX bool

whether to dissociate all C-X bonds (X = halogen)

False
name str

name of the workflow

'BDE Workflow'
folder_uuid str | None

UUID of the folder to place the workflow in

None
folder Folder | None

destination folder

None
max_credits int | None

maximum credits for the workflow

None
webhook_url str | None

URL that Rowan will POST to when the workflow completes

None
is_draft bool

save as a draft without starting execution

False

Returns:

Type Description
Workflow[BDEResult]

submitted workflow

Raises:

Type Description
HTTPStatusError

request to the API fails

find_ch_bonds

find_ch_bonds(molecule: StructureInput, distance_max: float = 1.2) -> list[tuple[int, int]]

Find all C-H bonds in a molecule.

Parameters:

Name Type Description Default
molecule StructureInput

molecule to search (Molecule, stjames.Molecule, or dict)

required
distance_max float

maximum C-H distance to consider a bond (A)

1.2

Returns:

Type Description
list[tuple[int, int]]

list of (carbon_index, hydrogen_index) tuples (1-based indices)

Examples:

mol = Molecule.from_smiles("CCO")  # ethanol
bonds = find_ch_bonds(mol)
# [(1, 4), (1, 5), (1, 6), (2, 7), (2, 8)]

find_cx_bonds

find_cx_bonds(molecule: StructureInput) -> list[tuple[int, int]]

Find all C-X bonds in a molecule (X = F, Cl, Br, I, At, Ts).

Parameters:

Name Type Description Default
molecule StructureInput

molecule to search (Molecule, stjames.Molecule, or dict)

required

Returns:

Type Description
list[tuple[int, int]]

list of (carbon_index, halogen_index) tuples (1-based indices)

Examples:

mol = Molecule.from_smiles("CCCl")  # chloroethane
bonds = find_cx_bonds(mol)
# [(2, 3)]

find_bonds

find_bonds(molecule: StructureInput, element_a: int, element_b: int, distance_max: float) -> list[tuple[int, int]]

Find all bonds between two element types in a molecule.

Parameters:

Name Type Description Default
molecule StructureInput

molecule to search (Molecule, stjames.Molecule, or dict)

required
element_a int

atomic number of first element

required
element_b int

atomic number of second element

required
distance_max float

maximum distance to consider a bond (A)

required

Returns:

Type Description
list[tuple[int, int]]

list of (atom_a_index, atom_b_index) tuples (1-based indices)

Examples:

mol = Molecule.from_smiles("O")  # water
bonds = find_bonds(mol, 8, 1, 1.1)  # O-H bonds
# [(1, 2), (1, 3)]

Same-element searches return unique undirected bonds without self-pairs:

>>> peroxide = stjames.Molecule.from_smiles("OO")
>>> find_bonds(peroxide, 8, 8, 1.7)
[(1, 2)]