FAQ: What to do if rhofit does not work because there is no difference density in the binding site.

If this happens it will be necessary to rerun autobuster so that it produces a difference density map suitable for rhofit to fit.

rhofit is generally good at fitting a ligand into a patch of difference density; however, if the patch of difference density you give it is in the wrong place or is interrupted by other atoms, it may not work.

Our initial advice for producing and using difference density is the simple

refine -p input.pdb -m input.mtz -autoncs -L -d output
rhofit -l ligand.cif -p output/refine.pdb -m output/refine.mtz

which will first run several cycles of BUSTER refinement with update of waters (addition and removal), initially inserting dummy atoms to explain density not described by the input model, then removing atoms which seem not to be well-modelled as water in the hope that this will make difference density stand out.

This protocol doesn't have any bias to a particular region of the protein; if there are several patches of difference density, the rhofit clustering will produce several clusters, rhofit will attempt to fit the ligand into each cluster, and will then concentrate on the one that fits best.

If the difference density is of generally good quality but some loops in the protein haven't been built, this should work; if the program makes the wrong decision as to which cluster to use, the -allclusters option will cause it to try fitting in every cluster, at some cost in runtime. Of course, in an ideal world, all regions of the structure that might need corrections (re-modeling of loops, additions of buffer molecules and suchlike) should be cleaned up before creating the final difference map for rhofit, and we would expect that that would usually produce clearer density in the binding site, but it is difficult to incorporate this in an automated pipeline.

If you already have a structure of a similar protein (in the same crystal setting) binding a similar ligand,

refine -p input.pdb -m input.mtz -autoncs -Lpdb ligand_from_last_protein.pdb

will run the water insertion and deleting passes as with -L, but remove all waters close to the atoms in the given PDB file when it comes to producing the final refine.mtz file. You might also want to use -Lpdb with a file containing atoms filling the binding cavity, or a sphere of atoms around some residue known to be involved in the binding; as yet we don't have good tools for producing such files, but this is an area we plan to work on.

For high-resolution data, the -L option can produce a final output with water atoms occupying many of the peaks of density within the ligand, at which point the search for the ligand generally fails. In this case, I have had successful results by

egrep -v -e "HOH|WAT" refine.pdb > dry.pdb
refine -nsmall 1 -nbig 2 -p dry.pdb -m input.mtz -d drymaponly
rhofit -lp ligand.pdb -p drymaponly/refine.pdb -m drymaponly/refine.mtz

where the quick refinement in the middle doesn't have time to move atoms around enough to disrupt the geometry established in the initial run with water insertion, but does produce an Fo-Fc map in which there are guaranteed to be no waters in the ligand-binding site.

However, it is more often necessary to use the -allclusters option in this case, since there are sometimes clusters composed of water density which rhofit scores as slightly more likely to contain the ligand than the actual cluster.

We are currently (Spring 2010) working on methods to directly control both autobuster and rhofit to fit ligands to a previously identified binding site.


Page by Tom Womack original version 5 November 2009, Updated 1 April 2010. Address problems, corrections and clarifications to buster-develop@globalphasing.com