The Kabsch and Sander [8] secondary structure definition algorithm
follows a strict hierarchy of structural sub-types. However, the ks
clauses store only the summary of the structure thus loosing the underlying
information that goes to make up the defined secondary structure. For example,
to define an - helix, the DSSP algorithm first finds all main chain hydrogen
bonds between residues
and
. These residues are then said to form a
four turn. A minimal helix is then defined in terms of two
overlapping four turns, finally a helix is defined as at least two overlapping
minimal helices. When the secondary structural state of a residue is
simplified to a single character such as `H', the reason for that residue being
defined as `H' (i.e. hydrogen bonds, turns and minimal helices) is lost.
Similarly, the possibility of a residue belonging to more than one structural
class, for example both
- and
- helix, is not allowed by the ks
summary.
Prolog is a rule based language and the Kabsch and Sander definitions are a set of simple hierarchical rules. Accordingly, it is a relatively straightforward matter to implement the secondary structure definition rules in Prolog. Having the structure definitions expressed as Prolog rules enables queries to be formulated at each level of the definition hierarchy.