Jmol/Superposition
From Proteopedia
Contents |
Introduction
This page is a tutorial on how to superimpose two structures in Jmol and show them in Proteopedia. Superpositions (or overlays) are a way to compare two structures by moving them on top of one another so the "equivalent atoms" are close to one another. Because the two structures are different, not all equivalent atoms can match at the same time. Instead, you minimize the root-mean-square of the distances (RMSD) to achieve a compromise. If you want to see superpositions in the context of a Proteopedia page (and look at the underlying Jmol scripts), take a look at Garman lab: Interconversion of lysosomal enzyme specificities and Schubert lab: bacterial InIC disrupts human Tuba complexes.
Loading two structures
Before you can superimpose two structures in Jmol, they have to be loaded at the same time. The "load files" command accomplishes that. In the following, the related structures with the PDB IDs 3HG5 and 3H54 are loaded:
load files "=3HG5" "=3H54" model 0
Once they are loaded, you refer to them as "1.1" and "2.1". The number before the decimal point refers to the two structures, while the "1" after the decimal point refers to the first model in the respective coordinate set. (If you want to superimpose different parts of a single structure, for example the two subunits in a dimer, you just load one structure, and access the subunits via the chain identifier - examples will follow). The model command determines which model will be displayed (0 means all).
Equivalent atoms
You have to choose which sets of atoms should be superimposed, i.e. the distances of which pairs of atoms should be minimized. In this example, we choose the alpha carbons of the respective active sites, but other choices are possible. In Jmol, you need two atom selection expressions, one for each structure. Because you want pairs of equivalent atoms, the number of atoms selected in the first structure should be equal to the number of atoms selected in the second set. In our example, we first define two atom selections, and then use these later.
# define active site C-alpha atoms define ~actgal 1.1 and (47,92,93,134,142,168,170,172,203,206,207,227,231) and *:A.CA define ~actnagal 2.1 and (33,78,79,119,127,154,156,158,188,191,192,213,217) and *:A.CA
If you don't know which atoms to superimpose, or if you don't even know which other structure is similar to the one of interest, you can do a structural alignment first. The output will tell you which structures show similarity to the one of interest, and it will show a list of equivalent atoms (usually it just considers C-alpha atoms for protein structures). Historically, Jane Richardson's beautiful ribbon diagrams played an important role in detecting structural similarities through human pattern recognition ("This cartoon looks similar to another structure I saw previously").
If you know which residues you want to target for superposition because you have a multiple sequence alignment, you can go to here, press a `launch binder` badge to launch an active Jupyter session in your browser and then select from the index of notebooks 'Determine residues that match to a reference from multiple sequence alignment and use to construct fit commands' to work through a Jupyter notebook that steps process of using a multiple sequence alignment to determine residues that are expected to be equivalents and then at the bottom of the section generates Jmol commands. You can substitute your own alignment and structure of interest once you follow how it works.
Compare command
The Jmol command to superimpose structures is called "compare", and it has a lot of parameters. Here is an example:
compare {2.1} {1.1} ATOMS {~actnagal} {~actgal} ROTATE TRANSLATE
The first two parameters "{2.1}{1.1}" define which atoms will be affected by the superposition. Here, we choose all of the atoms in the two structures. Next, the atom selections after the "ATOMS" keyword define which equivalent pairs of atoms. Here, we are using the atoms selections previously defined, but you can also use atom selections on the fly. Within these selections, atoms will be paired up in order (first atom in first selection pairs with first atom in second selection, ..., N-th atom in first selection pairs with N-th atom in second selection). If this is not the pairing you want, you can split up the selection and add more selection statements, i.e. something like "{selection A of structure 1}{selection A of structure 2}{selection B of structure 1}{selection B of structure 2}...".
Finally, the "ROTATE TRANSLATE" keywords do the actual superposition, i.e. change the coordinates of the first structure (in our case all coordinates of the single model in the second structure because we specified this with the first parameter "2.1"). This change of parameters is permanent, so for all following commands displaying structures, the coordinates will be superimposed.
If the superposition is successful, the root mean square distance (RMSD) of matching atoms will be displayed in the console. If there is no output, the superposition failed (e.g. if less than 3 atoms are selected).
Displaying the superposed structures
Once the structures are superimposed, you can show them using the usual selection and drawing commands. To avoid selecting atoms from the second structure by accident when you just want atoms from the first structure, the easiest is to add a "and 1.1" to your selections. Here is an example of two separate sets of commands to draw a cartoon of the first structure in green and the second in blue.
model 0 select protein and 1.1; cartoon; color palegreen; center selected select protein and 2.1; cartoon; color cornflowerblue;
Troubleshooting
Jmol does not alert you if your sets of equivalent atoms used in a superposition contain different number of atoms. Let's say you made a mistake in your selection and the first atom set contains 50 atoms and the second contains 51. Jmol will just ignore the last atom in the second set. However, your mistake might have messed up the pairing of atoms you intended. The only feedback Jmol gives is the so-called RMSD (the root-mean-square distance of equivalent atom pairs). You can also check if your superposition makes sense by displaying both structures, and checking if equivalent atoms are close to each other.
If something did go awry, an efficient way of troubleshooting is to list the selected atoms. Whenever you select atoms, Jmol tells you how many atoms are selected. The command "show selection" shows a list of all the selected atoms. If you put both lists side by side, the intended equivalent atom pairs should line up.
define ~actgal 1.1 and (47,92,93,134,142,168,170,172,203,206,207,227,231) and *:A.CA define ~actnagal 2.1 and (33,78,79,119,127,154,156,158,188,191,192,213,217) and *:A.CA select ~actgal show selected select ~actnagal show selected
Here is the output:
structure 1 structure 2 13 atoms selected 13 atoms selected [TRP]47:A.CA/1.1 #119 [TRP]33:A.CA/2.1 #115 [ASP]92:A.CA/1.1 #489 [ASP]78:A.CA/2.1 #496 [ASP]93:A.CA/1.1 #497 [ASP]79:A.CA/2.1 #504 [TYR]134:A.CA/1.1 #826 [TYR]119:A.CA/2.1 #814 [CYS]142:A.CA/1.1 #886 [CYS]127:A.CA/2.1 #877 [LYS]168:A.CA/1.1 #1086 [LYS]154:A.CA/2.1 #1088 [ASP]170:A.CA/1.1 #1106 [ASP]156:A.CA/2.1 #1105 [CYS]172:A.CA/1.1 #1118 [CYS]158:A.CA/2.1 #1117 [GLU]203:A.CA/1.1 #1358 [SER]188:A.CA/2.1 #1338 [LEU]206:A.CA/1.1 #1388 [ALA]191:A.CA/2.1 #1365 [TYR]207:A.CA/1.1 #1396 [TYR]192:A.CA/2.1 #1370 [ARG]227:A.CA/1.1 #1587 [ARG]213:A.CA/2.1 #1550 [ASP]231:A.CA/1.1 #1622 [ASP]217:A.CA/2.1 #1589
It shows that even though the residue numbers are different within the pairs, most pairs have matching residue types, supporting the notion that atoms are indeed equivalent. (Exceptions are Glu203 vs Ser188, and Leu206 vs Ala 191, which do occupy equivalent positions in the active site but are responsible for different substrate specificities of the two enzymes). This method is excellent for spotting problems like typos, problems related to missing residues in one or the other structure, alternate conformations (i.e. selecting two C-alpha atoms for a single residue), etc.
The Image:Storymorph.spt suite of functions has two ways to check selections. "atom_order(sel1, sel2)" prints the selected atoms in the two sets side-by-side. The function "matched_residues(sel1, sel2)" goes through all residue numbers and says whether both selections contain the same number of atoms of a given residue number.
The Storymorph scripts contain helper functions mathed_residues and atom_order that make troubleshooting easier.
Demonstration
|
If you need a console: