From: Axel Kohlmeyer (
Date: Sun Oct 07 2007 - 18:14:00 CDT

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

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> 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

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.


JS> I would appreciate any comments or suggestions.
JS> Thanks,
JS> Jay

Axel Kohlmeyer
   Center for Molecular Modeling   --   University of Pennsylvania
Department of Chemistry, 231 S.34th Street, Philadelphia, PA 19104-6323
tel: 1-215-898-1582,  fax: 1-215-573-6233,  office-tel: 1-215-898-5425
If you make something idiot-proof, the universe creates a better idiot.