Filthy_Phyllis is the name given to a parallel energy landscape searching
algorithm which I have coded. It is based on a serial algorithm known as
Fair_Phyllis, which was coded by Dr.
Mark Miller. It is used in conjunction with the program OPTIM2,
which locates minima and transition states on a PES, and is described below.
Filthy_Phyllis is written in FORTRAN90.
1. Starting from an initial conformation, minimise the
energy, i.e. take it to the nearest local minimum on the PES.
2. Search for a transition state along a specified direction. Methods for finding transition states are discussed on the OPTIM2 page. I will discuss below the various ways of choosing search "directions", with particular reference to my own work with biomolecules. 3. Having found a transition state (a stationary point on the PES with exactly one negative Hessian eigenvalue), search for the two minima it connects. 4. The next step depends on the results from step 3: (a) If either of the minima connected by the transition state is the original minimum, we add the transition state and new minimum (a "pathway") to the database. We then decide whether or not to "move" to the new minimum, according to a Metropolis criterion. It is also possible to tell the algorithm to either accept or reject all moves. If the move is accepted then we move to the new minimum and return to step 2, otherwise we choose a new search direction and return to step 2.5. Once a specified number of "directions" have been searched from a particular minimum, we move to the next one in the database. This can be defined simply by the order in which they were discovered, or in order of increasing energy. 6. If all directions from all minima have been searched then the algorithm terminates. This only happens for very small systems, and usually the algorithm terminates when a specified number of minima or transition states have been found. |
The algorithm is ideally suited for parallelisation, as the results of any one search do not depend on any previous results, so it is possible (in theory!) to have as many searches as one wishes running simultaneously. In practice there is a slight drop off in efficiency as the number of processors increases as the system has to spend more time on the "book-keeping" aspects of the algorithm.
Choosing search directions carefully can greatly increase the efficiency of the algorithm. In my work on biomolecules I have mainly used Hessian eigenvectors as search directions, starting with the softest (the one with the smallest eigenvalue) and working upwards. Recently I have been rotating dihedral angles by small amounts and then searching along the softest eigenvector from this new position, and this has been much more effective.