From: John Stone (
Date: Tue Oct 09 2007 - 14:38:06 CDT

  Isosurfaces are extracted using a variation of the marching cubes
method. This is a very fast display-oriented surface extraction method
and would not be sufficiently bulletproof to use in an analytical computation,
since the marching cubes method can generate triangle sets with "T"
intersections and holes, neither of which would be desirable for your
purpose. If I was in the position of wanting to perform an integration
like you describe, I would probably operate directly on the volume data
rather than first extracting bounding isosurfaces. One simple method for
determining whether a point is in the interior or exterior of an isosurface
is to count the isovalue crossings along a line from the edge of the volume
to the point in question. If the number of crossings is odd, then the
point is in the interior, if the number is even, then the point is exterior.
You could probably come up with a scheme based on that without explicitly
computing an isosurface that bounds the region you're integrating.

  John Stone

On Tue, Oct 09, 2007 at 02:10:35PM -0500, Jay Shore wrote:
> Axel,
> Thank you for your comments and the copy of trimcube. They were very
> helpful.
> I guess I did not explain my mapping idea well enough. I want to take the
> isosurfaces as produced by VMD and then integrate the volume to determine
> what percent of the electron density is contained inside. I will have to
> decide how many surfaces to do this to. I can then write a new cube file
> with values based on what percent of electron density is composed in each
> surface.
> I have started to look at the VMD code to try to see how surfaces are
> defined. I will try to use trimcube for the integration part.
> Thanks again.
> Jay
> > On Sun, 7 Oct 2007, Jay Shore wrote:
> >
> > JS> Howdy,
> >
> > hi jay,
> >
> > JS> I am creating movies using VMD to incorporate into my General Chemistry
> > and
> > JS> physical chemistry lectures. I want to show the students electron density
> > JS> surfaces colored according to the electrostatic potential, but I am not
> > sure
> > JS> what is the most appropriate Isovalue to choose for the surface. It would
> > be
> >
> > the main purpose for mapping the electrostatic potential on the
> > electron density is to show the "polarity" of a molecule and how
> > it is perceived by other molecules. that means you want to pick an
> > isovalue that shows the "outside" of a molecule, i.e. a very low one.
> > i usually pick a value that is just large enough to still show a smooth
> > surface and the general shape of the molecule. you will notice, that
> > the colorization will not change significantly for as long as your
> > isovalue is small (no big surprise, there is little electron density
> > left).
> >
> > JS> nice to know what percent of the electron density was encompassed by a
> > JS> surface. To do this I think that I would have to write a program to
> > JS> integrate the volume inside the surfaces.
> >
> > to illustrate those porportions, you are probably better off using
> > a hydrogen molecule and a two dimensional graph. for most of the
> > time meaningful iso-surfaces will contain almost all electron density.
> > most of the electron density is contained in the inner shell electrons
> > anyways for almost all atoms/molecules.
> >
> > [...]
> >
> > JS> So, my questions:
> > JS>
> > JS> Am I missing an application that already exists that will convert my cube
> > JS> files into something resembling percent of electron density? I have done
> > a
> > JS> lot of searching (googling) but to no avail.
> >
> > i am not aware of any code to do what you need, but you may find the
> > attached code useful. it purpose is to trim away empty parts of a cube
> > file (and thus reduce memory consumption), but also allows to normalize
> > electrostatic potential maps from pseudopotential calculations.
> > it uses simple summing over the grid points as integration, which proved
> > to be accurate enough for visualization purposes. it should be
> > straightforward to modify it to your needs.
> >
> >
> > JS> If I do convert the value of the cube file to percent electron density
> > JS> contained (by integrating the volume of the surface) can I still use VMD
> > to
> > JS> draw the surfaces. I don't see why not, but maybe I am missing something.
> >
> i don't quite see how this mapping would work. to get the percentage of
> contained electron density you'll have to integrate and that will change
> the shape of the isosurface. particularly, if you compare multiple
> molecules.
> >
> > JS> What is the most meaningful way of representing an electron density
> > surface?
> > JS> Percent electron density contained or the atoms in molecules approach
> > (e.g.
> > JS> Bader). I know that it depends on exactly what I want to show, but is one
> > JS> method preferred over another?
> >
> > bader analyis is something different, since it computes the
> > _partitioning_ of the electron density. the integration of the
> > partitions and comparison to core charge leads numbers of how
> > atoms are polarized.
> >
> > JS> If I decide to write the code to do the integration and conversion, is
> > there
> > JS> a good starting point? I assume that I should do it in C or Fortran
> > because
> > JS> of the size of the cube files and a script would take too long.
> >
> > if you want to write anything, that could potentially be integrated into
> > VMD, i recommend writing in C/C++. that will make it easier. there are
> > some recent efforts to improve support for volumetric data sets akin
> > to what you need, but i have not followed that development closely, so
> > i cannot tell you how much is already available in current test release
> > of VMD.
> >
> > hope this helps.
> >
> > cheers,
> > axel.
> >
> > JS>
> > JS> I would appreciate any comments or suggestions.
> > JS> Thanks,
> > JS> Jay
> > JS>
> > JS>
> > JS>
> > JS>

NIH Resource for Macromolecular Modeling and Bioinformatics
Beckman Institute for Advanced Science and Technology
University of Illinois, 405 N. Mathews Ave, Urbana, IL 61801
Email:                 Phone: 217-244-3349
  WWW:      Fax: 217-244-6078