next up previous contents index
Next: Quoting with Single Quotes Up: VMD Atom Selection Language Previous: Boolean Keywords

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.

Justin Gullingsrud
Tue Apr 6 09:22:39 CDT 1999