Force field/xtb helpers for BUSTER
Introduction
BUSTER has supported the Direct use of weighted Quantum Chemical or Force Field Energy for ligand refinement, since 2011 as explained at https://www.globalphasing.com/buster/wiki/index.cgi?AutobusterLigandQM
The weighted-QM energy restraint function provides a second opinion compared to conventional geometrical restraints. It is handy in situations where it is suspected that a particular conformation observed in a complex structure is due to the restraints used.
From May 2025, BUSTER includes additional helper applications that re-use Grade2 code, as described below.
grade2_rdkit_force_field_helper
The helper grade2_rdkit_force_field_helper
allows the use of the force fields
supplied as part of RDKit. The helper will be used by default
if the
BUSTER -forcefield
command line option is used (from the May 2025 BUSTER release). T
The helper grade2_rdkit_force_field_helper
will by default use
the MMFF94s force field
(Halgren, 1999)
implemented as part of RDKit by
Tosco, Stiefl and Landrum (2014).
As an alternative, the RDKit implementation of the UFF force field
(Rappe et al., 1992)
can be used.
For the helper to work it is (currently) necessary to set an environment variable
BDG_TEMP_RESTRAINT_CIF_xyz
, where xyz
is the
PDB chemical component ID (aka residue name or 3-letter code) for the
ligand to the full path of CIF restraint dictionary.
For example, for a ligand with the three-letter residue code LIG
and
a Grade2 restraint directory LIG.restraints.cif
in the current directory,
then BUSTER refine can be run:
$ export BDG_TEMP_RESTRAINT_CIF_LIG=`pwd`/LIG.restraints.cif
$ refine -p model.pdb -m data.mtz -d 01 -l $BDG_TEMP_RESTRAINT_CIF_LIG -forcefield LIG > 01.log
Here the pwd command is used to obtain the current working directory.
The structure being refined must include hydrogen atoms for the ligand for the force field to work properly.
For a charged ligand there is no need to specify the total charge of the ligand as part of the force field. Atom charges are taken from CIF dictionary.
Options for grade2_rdkit_force_field_helper
By default, the helper will use the MMFF94s force field, but it is possible to use another force field:
To use the UFF force field (that supports a broader range of elements) instead, specify the
refine
option-qm_method UFF
.To use the MMFF94 instead of the MMFF94s variant, specify the
refine
option-qm_method MMFF94
.
By default, the MMFF94s and MMFF94 force fields are run with the electrostatics
term disabled, using
SetMMFFEleTerm(state=False).,
as for isolated molecules, electrostatics are unlikely to be helpful.
To turn on the use of electrostatics, then set the environment variable
BDG_GRADE2_RDKIT_FORCE_FIELD_MMFF94_DIELECTRIC
. For example, to turn
on full in vacuo electrostatics/ then set a dielectric constant of 1:
$ export BDG_GRADE2_RDKIT_FORCE_FIELD_MMFF94_DIELECTRIC=1.0
Note
Setting the environment variable BDG_TEMP_RESTRAINT_CIF_xyz
is a rather ugly workaround, as it is tricky to get refine
to supply the restraint dictionary location to the helper directly.
If you find the helper useful, it should be possible
to eliminate the need to set the environment variable.
Please send a request to buster-develop@GlobalPhasing.com if you
would find this helpful.
xtb_qm_helper
The xtb_qm_helper
is included as part of the BUSTER package together with Grade2.
The helper uses the xtb program https://github.com/grimme-lab/xtb
via the tblite Python API.
The helper allows ligands to be represented using the GFN2-xTB
quantum chemical method
(Bannwarth, Ehlert and Grimme, 2019).
GFN2-xTB is a accurate semiempirical method that gives good results for
all elements up to radon.
To use the xtb helper then specify the refine option
-qm_helper "${BDG_home}/scripts/qm-mm-helpers/xtb_qm_helper.sh"
.
For example, for the QM advanced tutorial example:
raloxifene bound to 2qxs:
$ refine -p 2qsx_aB_hydrogenate.pdb -m pdb/r2qxssf.mtz -d xtb_refine \
-l RAL.restraints.cif
-qm RAL+1 -qm_helper "${BDG_home}/scripts/qm-mm-helpers/xtb_qm_helper.sh" \
-autoncs -M TLSbasic -M HydrogenHybridModel \
> xtb_refine.log
Note here as raloxifene RAL
carries a charge of +1 the -qm
option is specified as RAL+1
.