Surfaces for Continuum Modeling
One of the goal of our research group is to develop methods for the computation of the Molecular Surface with particular attention on the consequences of its definition on the electrostatics component of the solvation free energy. To this end, we developed NanoShaper, a tool to build, triangulate and analyze the Molecular Surface according to several definitions and that can build a Finite Differences grid to solve a PDE, for instance the Poisson-Boltzmann equation.
NanoShaper: Ray-Casting for Molecular Surfaces triangulation, dielectric map computation and analysis
NanoShaper employs ray-casting [4,5] to treat Molecular, and in general, arbitrary manifold surfaces. Provided that a Surface-Ray intersection routine is given one can:
1) Accurately estimate the volume.
2) Detect cavities and fill them using a threshold volume.
3) Triangulate the surface consistently with respect to the cavity detection/removal process.
4) Produce an in/out (dielectric) map for a finite difference solver
NanoShaper is highly flexible in that all the exposed features are agnostic with respect to the underlying surface: NanoShaper can be also used as a, albeit grid based, universal surface triangulator in which only the ray-surface intersection routine is required. Ray-tracing here is used as a tool to inspect and to sample, in a grid based world, the surface. This allows to build an in/out map by which one can perform floodfill to identify cavities, estimate their volume, and fill them if requested [4]. Volume is estimated by a triple ray-casting process [5] using as starting points of the ray the x,y,z sides of the cube that contains the molecule; the three obtained values of the volume are averaged thus getting an highly accurate result. In order to estimate the surface area an ad hoc marching cubes algorithm has been developed in order to triangulate the surface [5]; moreover if voids are removed the triangulation is consistent with cavities removal.
All the framework is developed in portable and parallel C++, has a binding to Python and achieves robustness by employing the CGAL library for computing the Alpha Shape and the Regular Delaunay Triangulation. In this version one can load a .off/.ply triangulated mesh, a MSMS file [3] and internally build the Skin[2], Blobby[1] and the Connolly molecular surfaces; in future versions NanoShaper will be interfaced to DelPhi Poisson-Boltzmann equation solver. The output mesh in .off format can contain small triangles because it is the output of the marching cubes for this reason you can enable mesh smoothing. NanoShaper for the Skin and Connolly surfaces can write a PovRay file for a high quality rendering of the analytical surfaces. NanoShaper is shipped together with some scripts: it is, for instance possible, embedding the triangulated surface interactively into a pdf (try it!).
NanoShaper saves the mesh files in .off format and this is always the starting point for further processing. Cavities info are saved in text ASCII files. Some scripts and NanoShaper can be obtained from the download section, in particular NSgui.py is a minimal gui to see the surface triangulated by NanoShaper; a brief registration is required to dowload NanoShaper and the scripts.
[1] Y. Zhang G. Xu C. Bajaj. Quality meshing of implicit solvation models of biomolecular structures. Computer Aided Geometric Design, 23:510530, 2006.
[2] H. Edelsbrunner. Deformable smooth surface design. Discrete and Computational Geometry, 21(1):87{115, 1999.
[3] M. F. Sanner A. J. Olson and J.C. Spehner. Reduced surface: An efficient way to compute molecular surfaces. Biopolymers, 38:305320, 1996.
[4] M. Phillips, I. Georgiev, A.K. Dehof, S. Nickels, L. Marsalek, H.-P. Lenhof, A. Hildebrandt, and P. Slusallek. Measuring properties of molecular surfaces using ray casting. In Parallel Distributed Processing, Workshops and Phd Forum (IPDPSW), 2010 IEEE International Symposium on,april 2010.
[5] S. Decherchi, W. Rocchia. A general and robust ray casting based algorithm for triangulating surfaces at the nanoscale. submitted.