Jmol/Storymorph
This is a draft documentation for File:Storymorph.spt, a suite of Jmol functions to help with superimposing and morphing between two structures representing different conformations of a molecule or molecular assembly. For more general information, see Jmol/superposition and Morphs. If you load storymorph.spt into a Jmol session where no structures have loaded, it will run a demonstration superposition and morph based on calmodulin strutures. Most examples in this documentation are from this demo.
Loading the two structuresLoading the two structures
You can directly load two structures from the PDB into Jmol using the "load files" command, e.g. load files "=1prw" "=1cll"
In many cases, a single structure already contains two conformations, such as the two subunits of a dimer, mulitple models in an NMR structure, or multiple copies in the asymmetric unit. You can also assemble multiple structures into a single PDB file, designating them as different models (with the MODEL n and ENDMDL tags).
Defining the two structuresDefining the two structures
You need to define a variable (called "structures" in the examples) to select the two conformations. Structures is a list of two selections. The selections are enclosed in braces ("curly parentheses"), e.g. structures = [{1.1}, {2.1}]
Here, the selection is the first and the second structure loaded. For models in a single-structure file, you would use "1.1" and "1.2" instead. For subunits with different conformation, you would select by chain name, e.g. "chain=A" and "chain=B". More complicated cases are possible (chain B of the second model vs. chain A of the third model) but probably rare.
Defining the domainsDefining the domains
Often, conformational changes preserve the fold of entire domains but show differences in inter-domain orientation. Classical examples are the conformation states of hemoglobin or the flexible linker connecting domains of antibodies. For superpositions and morphs, it helps to identify these domains. In storymorph, the domains are collected in a list. Each list contains another list of three selections. The first of these describes the entire domain. The second selection defines the anchor for the morph (explained below). The last one is used for superpositions. Here is an example: domains = [ [{78-147},{78-147}, {(78-138)}], // morph 78-147 as unit, use 78-138 for superposition [{4-77}, {78}], // morph 4-77 as unit, anchored at 78 ] Again, selections are enclosed in braces. If you omit the third selection, or the second and third selection, the first selection will be used (in fact, the functions that require a domain definition will fill in the missing selections).
SuperpositionSuperposition
The superimpose function works the same way as the Jmol compare function, but it first verifies the required atom selections to prevent Jmol from crashing or freezing. The superimpose function takes two or three parameters. The first paramenter always defines the two structures (see above). The second parameter is either a single domain selection (when calling with two parameters), or it is the list of list describing all domains, with the third parameter an integer designating which domain is to be used in the superposition. The superposition leaves the first structure in its original orientation and moves the second structure to minimize the distances between corresponding atoms (defined by the domain selection). Different from the morph function, the superposition function alters coordinates for the remainder of the session.
Two-phase Morph: rigid body followed by linear interpolationTwo-phase Morph: rigid body followed by linear interpolation
The morph algorithm is done domain by domain. For each domain, the domains in the two structures are superimposed. and the two domains are gradually moved from the initial to the final orientation. Then, in the second phase, coordinates are interpolated through a linear interpolation. The result is a smooth change in orientation and in conformation. Because there is a rigid body movement in the first phase, positions of a given atom are on curved rather than straight trajectories. To maintain connectivity of covalently linked domains, anchors are used (see below).