Advanced Topics

Item Relationships

The data items that can be selected (moelcule, resdiue, atom, bond, angle, distance, primitive) have a hierarchy, e. g. atoms are part of residues, and residues are parts of molecules. The hierarchy is depicted in the following figure:
Thise hierarchy has a direct effect on item selection. When selecting an item, the corresponding items higher in the hierarchy are also selected. E. g. selecting an atom will automatically select the residue and molecule that the atom is part of. On the other hand, deselecting an item does not automatically deselect items higher in the hierarchy.

When traversing the currently selected items, the program will also use this hierarchy, and only traverse deeper into selected items. Because of the automatic selection of items higher in the hierarchy, this is normally transparent to the user. However, if you e. g. first select an atom, and then deselect the corresponding residue, the atom will effectively be deselected.

One way of looking at this mechanism is that selection proceeds upwards in the hierarchy (selects items that are higher), while deselection proceeds downwards (deselects items that are lower).

The hierarchy also affects how values and properties can be accessed in expressions. When an expression is evaluated for an item, the values and properties of items higher in the hierarchy can be accessed with the syntax item.name. For bonds, distances and angles, it is also possible to access the values of the atoms involved. The following table gives a full list of which related items can be accessed from a given kind of item.

itemrelateddescription
resmol molecule of residue
atomres residue of atom
atommol molecule of atom
bondres residue of bond
bondmol molecule of bond
bondatom1 first atom of bond
bondatom2 second atom of bond
bondres1 residue of first atom of bond
bondres2 residue of second atom of bond
angleres residue of dihedral angle
anglemol molecule of dihedral angle
angleatom1 first atom of dihedral angle
angleatom2 second atom of dihedral angle
angleatom3 third atom of dihedral angle
angleatom4 fourth atom of dihedral angle
distmol molecule of distance
distatom1 first atom of distance
distatom2 second atom of distance
distres1 residue of first atom of distance
distres2 residue of second atom of distance
distmol1 molecule of first atom of distance
distmol2 molecule of second atom of distance
primmol molecule of primitive (except for title)

Predicates

The previous section explained how to access values and properties of data items that are higher in the hierarchy than the item for which the expression is evaluated (current item). It is also possible to make selections based on values and properties of items on the same level or lower in the hierarchy than the current item. Since these can be any number of items, they cannot be accessed as single values, but conditions on each of them must be combined with the all or exists predicate. These predicates are directly followed by an item type and an expression in parantheses.

If the item type after the predicate is lower in the hierarchy than the current item, the evaluation will traverse downwards in the hierarchy, and evaluate the expression in parantheses for each of the desired items. E. g. if an expression for a residue is evaluated, and exists atom(expression) is encountered, this expression will be evaluated for all atoms of the residue. It must have a boolean result, the whole expression will be true if at least one of the partial expressions evaluated for the atoms yields true.

If the item type after the predicate is higher in the hierarchy than the current item, the evaluation will traverse upwards in the hierarchy until the parent of the item is encountered. From there on, the evaluation will be performed as described in the previous chapter. E. g. if an expression for an atom is evaluated, and exists bond(expression) is encountered, this expression will be evaluated for all bonds that the atom is part of. The whole expression will be true if all of the partial expressions evaluated for the bonds yield true.

The standard macros contain a few examples of using predicates. mean_sc.mac contains the following commands:

DefPropRes 'well_def' '! exists atom(heavy & bfactor > 1.0)'
SelectAtom 'res.well_def & (ca | heavysc)'
The first command is used to define the property well_def for well defined residues, specified as residues that have no heavy atoms with B factors larger than 1.0. The second command then uses this property to select the CA and heavy side chain atoms of all these well defined residues.

The following command in pdb_charge.mac selects all ASP residues that do not have an HD2 atom:

SelectRes 'name = "ASP" & ! exists atom(name = "HD2")'

Last modified: Mon Jan 20 19:44:57 CST 2003

Reto Koradi, kor@mol.biol.ethz.ch