Voronoia calculates atomic volumes by applying the Voronoi Cell algorithm. The volume calculated for each atom is split into two portions, both of which are represented in the .vol files produced by the server. The first is the vdW volume (the volume inside an atoms' van der Waals sphere), the second is the solvent excluded volume (within a 1.4 Angstrom layer around the vdW sphere). The space is allocated among atoms using hyperboloid surfaces. The calculation is performed by applying a cubic lattice of 0.1 Angstrom grid width.
Cavities are found by applying a Delaunay triangulation and looking for edges above a cutoff length in the resulting graph corresponding to a 1.4 Angstrom probe radius. Their locations are approximated by the center of mass of all neighboring atoms.
The core algorithm of Voronoia has been implemented in Delphi and an intermediate layer in Python. The core algorithm calculates atomic volumes and cavities from PDB structures, prefiltered for modifications. It produces modified PDB files from which packing densities, cavity positions, and tabular reports containing average volumes and densities are calculated.