Source code for skchem.forcefields.uff
#! /usr/bin/env python
#
# Copyright (C) 2016 Rich Lewis <rl403@cam.ac.uk>
# License: 3-clause BSD
"""
## skchem.forcefields.uff
Module specifying the universal force field.
"""
from rdkit.Chem.rdForceFieldHelpers import UFFOptimizeMolecule
from .base import ForceField
[docs]class UFF(ForceField):
""" Universal Force Field transformer. """
def __init__(self, preembed=True, warn_on_fail=True, error_on_fail=False,
add_hs=True, n_jobs=1, verbose=True):
""" Initialize a UFF object.
Args:
preembed (bool):
Whether to embed before optimizing.
warn_on_fail (bool):
Whether to warn if a molecule fails to optimise.
error_on_fail (bool):
Whether to raise an error if a molecule fails to optimise.
add_hs (bool):
Whether to automatically add hydrogens.
"""
super(UFF, self).__init__(preembed=preembed, warn_on_fail=warn_on_fail,
error_on_fail=error_on_fail, add_hs=add_hs,
verbose=verbose, n_jobs=n_jobs)
def _optimize(self, mol):
try:
return UFFOptimizeMolecule(mol)
except RuntimeError:
return None