Short Circuiting

The boolean logic in VMD does
short circuit evaluation on an
element-wise basis. For instance, given one atom, if X is true
then X or Y will be true regradless of the value of Y, so there
is no need to evaluate it. Similarly, if X is false, then X and Y will also be false, so Y again need not be evaluated.

Knowing how short circuit selections work can speed up several types
of selections. Consider a system with a large number of waters and a
protein. The expression protein and segname < 10 is faster
than segname < 10 and protein since in the first selection only the
atoms which are proteins have the segname converted to a number,
while in the second selection, all the segment names are converted.

The within selection has its own form of short circuiting. The
command can be interpreted as ``find the atoms of A which are withing
a given distance from B,'' and if A isn't given, search all the atoms.
The search done in VMD takes a time roughly proportional to the
number of atoms in A multiplied by the number of atoms in B, so
reducing the number of atoms in A (i.e., by not testing every atoms)
make the search faster.

Using the system with a lot of water and a protein, compare the
selection
protein within 5 of resid 1
to
(within 5 of resid 1) and protein.
The first is very fast as it
does a distance search between all the protein atoms and all the atoms
in resid 1. However, the second selection searches through all the
atoms for those which are within 5 Å of resid and then finds which
of those are protein atoms.