\subsection*{Shape Indexing}

As with VAMS\cite{VAMS}, we use a matching and packing\cite{Koes_2014} bulk-loading algorithm to initialize an efficient data structure for volumetric shape constraint searches.
  Briefly, shapes are stored in a GSS-tree\cite{keim1999} where each leaf of the tree is a single molecular shape and each internal node includes a maximum included volume (MIV) and minimum surrounding volume (MSV).  The MSV is the union of all the molecular shapes beneath the node in the tree while the MIV is the intersection.  By appropriately applying minimum and maximum shape constraints to the MIV and MSV, it can be determined if any of the shapes lower in the tree have the potential to match the constraints.  If not, the entire subtree of molecular shapes can be eliminated from consideration, resulting in a sub-linear running time.

\subsection*{Shape Similarity}
We use the shape Tanimoto \cite{RushIII2005} to compute the similarity of two voxelized shapes A and B:
$$\delta(A,B) = \frac{A \cap B}{A \cup B}$$
where a larger score indicates a greater degree of similarity. For shape similarity evaluations we consider only similarity with the query ligand.


