A receptor is an integral part of a Design Unit (see Spruce Introduction) and contains information about the location and characteristics of the binding pocket. Receptors are used by every program in the OEDocking suite of programs.

A receptor always contains:

A receptor may contain:

Contents of a Receptor

Target Mask

The target mask defines the subset of design unit components that should be included in defining the protein structure for docking or pose prediction.

The protein structure includes all molecules that a ligand being docked or scored interacts with. This generally only includes the protein, but may also include key cofactors or solvent molecules (e.g. a crystallographic water). All parts of the receptor structure are static during both docking and scoring and any cofactors or solvent molecules in the receptor structure are not displaceable.

Negative Image

The negative image describes the shape of the active site. It is stored as a potential grid surrounding the active site. The negative image has high potentials where ligand atoms make many contacts with atoms of the active site without clashing and in positions some ligand atoms are likely to occupy when other atoms of the ligand make good contacts with the receptor (e.g. bridging positions ligand atoms will likely occupy when a ligand is stretched between two pockets).

During docking two shapes are created by contouring the negative image potential grid. The two shapes control the docking process as follows:

Outer Contour Shape

During docking any pose examined by the exhaustive search that does not fit within this shape will be rejected. A pose is considered to fit if the center of every heavy atom is within this shape. The volume of this shape is typically between 500 and 2000 cubic Ångströms.

Inner Contour Shape

During docking any pose examined by the exhaustive search that does not touch this shape is rejected. A pose is considered to touch if the center of at least one heavy atom falls within this shape. The volume of this shape is typically 50 to 100 cubic Ångströms.

The negative image of the receptor is setup when the receptor is created. When a receptor is made the contour levels are automatically set for both the inner contour and outer contour, however the inner contour will be disabled. The receptor inner contour can be enabled using the ReceptorToolbox program, which will slightly improve docking speed at the expense of some sampling.


Constraints define key interactions ligands are required to make when docking into the active site. They are optional and user defined.

Constraints do not affect how a given pose scores, however they do affect how the docking algorithm chooses poses to score during the docking process. Any pose that does not match the docking constraints will be rejected and replaced by the next best scoring pose. If no poses of a ligand match the docking constraints the ligand will not be docked. If multiple constraints are specified every constraint must be satisfied or the pose will be rejected.


The docking process used by both FRED and HYBRID has a resolution of approximately 1 Ångström, and thus the constraints have a similar resolution. Therefore it is possible that poses docked with a constraint may have small violations of the constraint distance, up to approximately 1 Ångström.

Receptors support two general classes of constraints; protein constraints and custom constraints. There may be any number of either class of constraint.


Each individual custom or protein constraint has an enabled flag. A disabled constraint is ignored during the docking process.

Protein Constraints

A protein constraint specifies an interaction that must be made with a heavy atom of the protein structure (i.e. protein constraints cannot be placed on hydrogen atoms). There are five types of protein constraints.


A contact constraint is satisfied when any ligand heavy atom is within 4 Ångströms of the protein heavy atom.


A lipophilic constraint is satisfied when any non-polar heavy atom on the protein is within 4 Ångströms of the protein heavy atom.


A donor constraint is satisfied when a donor on the ligand makes a hydrogen bond interaction with the protein heavy atom.


An acceptor constraint is satisfied when an acceptor on the ligand makes a hydrogen bond interaction with the protein heavy atom. Acceptor constraints must be placed on the protein heavy atom the donor hydrogen is interacting with.


A chelator constraint is satisfied when a chelator on the ligand makes a metal-chelator interaction with the protein heavy atom.

Only one protein constraint is allowed per protein heavy atom. If a protein constraint is set on a protein atom that already has a protein constraint the original protein constraint will be discarded and replaced by the new constraint.

Custom Constraints

A custom constraint requires that docked poses have at least one atom within a sphere (or set of spheres). Any heavy atom on the docked pose can satisfy the constraint, unless the constraints has SMARTS patterns with it, in which case on atoms matching one of the smarts patterns can satisfy the constraint.

A custom constraint always has at least one sphere. If it has multiple spheres then a matching atom within any of the spheres will satisfy the constraints.

If the custom constraint has no associated SMARTS patterns then any heavy atom on the ligand will satisfy the constraint if it is in one of the constraints associated spheres. If one SMARTS pattern is specified then only an atom matching the SMARTS pattern will be able to satisfy the constraint. If multiple SMARTS patterns are specified then an atom matching any of the SMARTS patterns will be able to satisfy the constraint.

Score Cache

A receptor may optionally contain a score cache. A score cache is scoring setup information usable by either FRED, HYBRID or ScorePose to speed up the initialization process prior to docking and scoring. Using a score cache will not change the docking or scoring results.

A score cache is most useful when FRED, HYBRID or ScorePose are started and stopped often to dock one or a small number of ligands as the initialization cost must be paid each time the program is started, and using a score cache can substantially reduce this time.