Molecular Surface Reconstruction using Marching Cubes

Articles —> Molecular Surface Reconstruction using Marching Cubes

protein construction using surface marching cubes

A molecule is typically represented in space by 2D or 3D coordinates, accesible via the appropriate file format - in the case of a small chemical in a MDLV2000 mol file, or with a protein (the main focus here) a PDB file. Visualizing these structures can be as simple as drawing spheres for each atom of the molecule in its respective place. Yet more complex rendering is often necessary to glean as much information out of the model as possible. One way in which to view a molecule is via its 3D surface, which can be informative in asking questions such as which residues are solvent accessible, where hydrophobic or hydrophillic patches may reside, etc...

Calculating the surface of the crystal structure of protein typically involves a 'rolling ball' approach1, a technique in which a ball with a particular radius is rolled across the surface of the protein to determine the solvent accessible surface. An analogous method I describe here - technically similar but conceptually different - relies on an algorithm called marching cubes (also known as marching squares in 2-dimensions).

Marching cubes2,3 is an algorithm which can reconstruct the convex hull of a 3-dimensional object based upon a point cloud of values. The algorithm does so by constructing a 3D grid of cubes, each vertex of which is a value within the point cloud, with the rest of the vertices representing adjacent values. The algorithm can then detect gradients within the cube and determine if any of the vertices differ in their values such that some may be inside while other outside the convex hull. A list of rules - based upon which vertices are inside versus outside - specify the orientation of one or more triangles. Iterating through the entire 3-dimensional grid reconstructs the convex hull based upon the underlying cube triangles created.

To use marching cubes on a protein once can create a point clouds based upon the atoms of the protein3. Van der waals radii of each atom can account for space filling of each atom. Once a 3-D grid representing the point cloud is initialized, marching cubes can then reconstruct the surface of the molecule. Analogous to the rolling ball approach, the size of the grid used can define the radius of the ball - a larger grid results in a more defined surface, similar to a smaller ball. Alternatively a smaller grid simulates a larger ball, resulting in a less defined surface. This parameter allows one to fine tune the molecular surface detail.

As a demonstration of this approach, I implemented marching cubes based upon 3-dimensional coordinates and used the structure of a protein I worked on as a graduate student as an example. The most difficult part of this approach was creating the 3-dimensional grid relative to the molecular coordinates, the origin of which in PDB files may often be offset from 3D space origin O (x = 0, y = 0, z = 0). Ultimately the molecule was re-centered relative to the origin in which the minimum x/y/z value of the molecule is placed at the origin - allowing a grid to be constructed with all positive x/y/z values with its dimensions relative to the angstrom dimensions of the molecule.

protein construction using surface marching cubes protein construction using surface marching cubes protein construction using surface marching cubes
protein construction using surface marching cubes protein construction using surface marching cubes protein construction using surface marching cubes

Surface construction using Marching Cubes with different levels of detail.

For a smoother surface a subdivision algorithm such as the Catmull Clark Subdivision can be used. This algorithm recursively subdivides the surface, smoothing and rounding sharp corners. In the pictures and videos depicted here, at least one round of the Catmull-Clark subdivision was used.

Construction of the surface of 1R5X (CSN5) structure using Marching Cubes. All code was in java and rendering using JOGL bindings to OpenGL. Molecule was 'rocked' using the sin function to rotate about the y-axis (vertical) periodically.

Construction of the surface of half the dimer of 1R5X (CSN5) structure using Marching Cubes - charged positions are colored red (negative) and blue (positive). All code was in java and rendering using JOGL bindings to OpenGL. Molecule was 'rocked' using the sin function to rotate about the y-axis (vertical) periodically.

  1. Connolly, M. L. (1983). "Solvent-accessible surfaces of proteins and nucleic-acids". Science 221: 709–713
  2. Paul Bourke's Tutorial on Marching Cubes
  3. Source code available upon request.


There are no comments on this article.

Back to Articles


© 2008-2022 Greg Cope