MolecularDiffusion.utils.smilify

Attributes

Exceptions

TimeoutException

Common base class for all non-exit exceptions.

Classes

Functions

check_connected(am[, tol])

check_symmetric(am[, tol])

cov_radius(→ float)

Return covalent radius (Å) for a chemical symbol (via ASE).

get_cutoffs(z[, radii, mult])

guess_bond_matrix(→ torch.LongTensor)

Return an (n, n) bond‐order matrix, using Open Babel if available.

read_xyz_ob(→ Tuple[List[str], torch.Tensor])

simple_idx_match_check(mol, ase_atoms)

simple_idx_match_check(mol, ase_atoms)

smilfy_xtb(filename)

Assume neutral molecule

smilify_cell2mol(filename[, z, coordinates, timeout, ...])

Convert XYZ to mol using cell2mol with optional timeout.

smilify_openbabel(filename)

Module Contents

exception MolecularDiffusion.utils.smilify.TimeoutException

Bases: Exception

Common base class for all non-exit exceptions.

Initialize self. See help(type(self)) for accurate signature.

class MolecularDiffusion.utils.smilify.Molecule(symbols: List[str], positions: torch.Tensor, *, scale: float = 1.2, total_charge: int = 0)
bond_matrix
num_atoms
positions
rdkit_mol
symbols
total_charge = 0
MolecularDiffusion.utils.smilify.check_connected(am, tol=1e-08)
MolecularDiffusion.utils.smilify.check_symmetric(am, tol=1e-08)
MolecularDiffusion.utils.smilify.cov_radius(symbol: str) float

Return covalent radius (Å) for a chemical symbol (via ASE).

MolecularDiffusion.utils.smilify.get_cutoffs(z, radii=ase.data.covalent_radii, mult=1)
MolecularDiffusion.utils.smilify.guess_bond_matrix(symbols: List[str], positions: torch.Tensor, *, scale: float = 1.2, total_charge: int | None = None) torch.LongTensor

Return an (n, n) bond‐order matrix, using Open Babel if available. If total_charge is given, we tell OBMol about it so it can distribute formal charges when perceiving bond orders.

MolecularDiffusion.utils.smilify.read_xyz_ob(path: os.PathLike | str) Tuple[List[str], torch.Tensor]
MolecularDiffusion.utils.smilify.simple_idx_match_check(rdkit_mol, ase_symbols)

Check that RDKit atom order matches the ASE symbol list exactly.

MolecularDiffusion.utils.smilify.simple_idx_match_check(mol, ase_atoms)
MolecularDiffusion.utils.smilify.smilfy_xtb(filename)

Assume neutral molecule If fails, change charge to +1 (there could be a better method to detect charge as either +1 or-1)

Then if fails again, loosen the critaria to not sanitize the molecule.

MolecularDiffusion.utils.smilify.smilify_cell2mol(filename, z=None, coordinates=None, timeout=30, total_charge=0)

Convert XYZ to mol using cell2mol with optional timeout.

MolecularDiffusion.utils.smilify.smilify_openbabel(filename)
MolecularDiffusion.utils.smilify.TIMEOUT = 300
MolecularDiffusion.utils.smilify.bond_dict
MolecularDiffusion.utils.smilify.lg