Surfaces in Jmol v.11

There is a testing / demo page including a Jmol applet to see results.

This documentation does not detail all the options, but aims to collect the different ways to render surfaces, and clarify their differences. For details, go to the official interactive scripting documentation for each command.

Syntax used: a command in the script language; a parameter description that must be filled in with a value. The mix of lower- and uppercase in the commands is for better readability, but Jmol is not case-sensitive.

Abbreviation: vdW = van der Waals.

Definition: probe (solvent probe) is a sphere that approximates the effective size of the solvent molecule. Jmol, as Rasmol, uses a sphere with 1.2 Å radius for water; Chime uses 1.2 Å for dots and 1.4 Å for surfaces. Other programs/authors use 1.4 Å. The probe radius can be defined using the set radius command.


Surfaces based on molecule:

Surfaces depicting orbitals:

Surfaces not based on molecule:

Saving and loading surface data

Coloring surfaces

1) Solvent-accessible surfaces (or Lee-Richards surfaces)

How to obtain them in Jmol:

(images of dots 100% and spacefill 100% shown as a reference)

a) Solid spheres

spacefill +1.2

b) Dotted surfaces

dots +1.2

set solvent on; dots on  

To hide the dots: dots off
(note: geoSurface off will also hide the dots).

c) Solid surfaces, crude and quick

geoSurface +1.2  

set solvent on; geoSurface on  

To hide the surface: geoSurface off
(note: dots off will also hide the geoSurface).

d) Solid surfaces, fine and slow

isoSurface id saSurface radius

To hide the surface: isoSurface id off

Rasmol note: for the record, Rasmol 2.7.3 has surface solvent radius for this.

2) Molecular surfaces (or solvent-excluded surfaces, or Connolly surfaces)

Here, we only have an option for solid surfaces, fine and very slow:

isoSurface id solvent radius
isoSurface id molecular

To hide the surface: isoSurface id off

Rasmol note: for the record, Rasmol 2.7.3 has surface molecule radius for this.

Effect of probe radius: (click to enlarge)

Summarizing and comparing different isosurface options: (click to enlarge)

3) Partial or open surfaces

All the above, as usual with Jmol script commands, applies to the currently selected set of atoms. A closed surface can be generated around the selected set of atoms, but another possibility is to get an open or fragmented surface, that does not close where there are unselected atoms.

For dots and geoSurface

If set dotsSelectedOnly off or false is used (the default), the dots or geoSurface will be fragmented, interrupted at the areas where they would contact with the surface for nonselected neighbours. You can first use set dotsSelectedOnly on or true, meaning that the dots or geoSurface will close around the currently selected atoms.

set dotsSelectedOnly off;
select _H; geoSurface +1.2

set dotsSelectedOnly on;
select _H; geoSurface +1.2

In addition, dots can be turned on and off selectively (unlike isoSurface or geoSurface).

For isoSurface

a) By default, it will be built upon previously selected atoms, and will be interrupted at the areas where they would contact with the surface for nonselected neighbours, except that isoSurface saSurface and isoSurface solvent apply an implicit ignore(solvent). To override that, use ignore(none) explicitly (ignore is explained below).

b) You can use
    isoSurface select(
atom expression) saSurface
    isoSurface select(atom expression) solvent
    isoSurface select(atom expression) molecular
to make a temporary selection to which this surface will apply --without affecting the overall set of selected atoms--. The surface will be interrumpted as before, if applicable.

c) If you don't want the nonselected atoms to affect or interrupt the surface, use
    isoSurface ignore(atom expression) saSurface
    isoSurface ignore(atom expression) solvent
    isoSurface ignore(atom expression) molecular
This turns out to be critically important; for example, you don't want to include solvent molecules inside the "solvent surface". It may also be needed where there are close contacts with other parts of the molecule (e.g., other chain or an hetero group); otherwise, the surface will have "holes".

Options (b) and (c) can be combined together, as in
   isoSurface surf1 select(*:A) ignore(hetero) solvent 1.3

To have a closed surface around a certain selected set of atoms, one can do:
   define temp atom expression; isoSurface surf1 select(temp) ignore(not temp) molecular

4) Atomic and molecular orbitals

Using lcaoCartoon
Using MO
Using isoSurface atomicOrbital

Using isoSurface lcaoCartoon , isoSurface lobe , isoSurface MO

   (someone else can write about these)

5) Mathematical, geometrical, non-molecular surfaces

This means surfaces that do not depend on molecule geometry, but are based on a mathematical formula (although they can be located relative to atoms of the molecule).

draw id  size plane {x y z} {x y z} {x y z}
draw id  size plane (atom expression) (atom expression) (atom expression)


isoSurface id center {x y z} sphere radius
isoSurface id center (atom expression) sphere radius

isoSurface id center {x y z} ellipsoid {cx cy cz e}
isoSurface id center (atom expression) ellipsoid {cx cy cz e}

Other options, more advanced (see the interactive scripting documentation):

isoSurface plane
isoSurface functionXY

6) Saving and loading surface data

Surface output to and input from JVXL (Jmol Voxel) format file

Saving surface data into a JVXL file:

Loading data from a JVXL file:

Surface input from open DX format file

Surface input from Gaussian Cube format file

7) Coloring surfaces

Use color dots , color geoSurface , color isoSurface , color pMesh , etc.

If the isosurface was assigned an id, then use color $id  color specification.

Remember you can use translucent or opaque in addition to the color.

Isosurfaces can also be colored in gradients according to a "map", including by distance, by molecular electrostatic potential, etc. Seek more information on the official Interactive Scripting Documentation.




Last updated:

This page was written by Angel Herráez, Universidad de Alcalá, in Spain. Information was obtained through testing, from jmol-users and jmol-developers e-mail distribution list, and from Bob Hanson's Interactive Scripting Documentation and example pages. Images generated by Angel Herráez or Bob Hanson. Contributions are welcome.

Some bibliography (used and potential):