[PyMOL] NMR structures

Protein or nucleic acid (or even bigger complex) is dynamic, not a single steady structure existing in solution or inside the cell. NMR-based structures are calculated using extracted restraints from NMR experiments including distances (NOE, PRE), angles (coupling constants, chemical shifts, RDC) etc. Individual calculated structure is different from the others, in particular the disordered loops or the N/C-terminal tails. Therefore NMR-determined structure is an ensemble often composed of 10-20 structures with same sequences. These 20 structures are not simultaneously displayed in PyMOL. PyMOL by default displays the first one in the PDB file.

Say we have a 10-structure NMR ensemble. The 10 NMR structures in PDB format are saved as individual “models”. An example is shown below. 10 structures are saved in a single PDB file and each structure is defined by MODEL n, ENDMDL (n is 1, 2, 3, … 10) in the PDB file. Therefore 10 “MODEL / ENDMDL” are in one PDB file.

MODEL        1
 ATOM      1  N   MET     1      35.203   4.901 -12.204  1.00  0.00           N  
 ATOM      2  CA  MET     1      36.355   4.075 -11.746  1.00  0.00           C  
 ATOM      3  C   MET     1      36.661   4.396 -10.288  1.00  0.00           C  
 ATOM      4  O   MET     1      37.805   4.679  -9.931  1.00  0.00           O  
 .....
 .....
 .....
 ATOM    850  HN  GLU    56      45.018  -5.055   9.304  1.00  0.00           H  
 ATOM    851  HA  GLU    56      47.690  -6.036   8.666  1.00  0.00           H  
 ATOM    852  HB1 GLU    56      47.193  -4.773  11.291  1.00  0.00           H  
 ATOM    853  HB2 GLU    56      46.845  -3.763   9.887  1.00  0.00           H  
 ATOM    854  HG1 GLU    56      49.092  -3.319  10.049  1.00  0.00           H  
 ATOM    855  HG2 GLU    56      49.206  -4.800   9.100  1.00  0.00           H  
 TER    
 ENDMDL
 MODEL        2
 ATOM      1  N   MET     1      37.489   4.936 -12.611  1.00  0.00           N  
 ATOM      2  CA  MET     1      36.616   4.090 -11.749  1.00  0.00           C  
 ATOM      3  C   MET     1      36.925   4.373 -10.283  1.00  0.00           C  
 ATOM      4  O   MET     1      38.082   4.562  -9.908  1.00  0.00           O  
 .....
 .....
 .....

PyMOL screenshot below has 10 GB1 protein structures calculated using Xplor-NIH provided example restraints. They are very similar with each other and PyMOL shows separate colors for each one. By now, they are 10 separate objects and PyMOL can use a command called “join_states” to put all 10 objects (10 PDB files) into one object and save it as a single PDB file.

d

PyMOL>join_states ?
Usage: join_states name [, selection [, mode [, zoom [, quiet ]]]]
example:
join_states ensemble, *, -1 (note:  * means all objects in current PyMOL session)

Image above has one new object called “ensemble” generated by “join_states” (see example command above). Now PyMOL only displays the first model from the ensemble. This is same as what we download from RCSB-Protein Data Bank.

What if we want to see all 10 structures in one object?

We can use “all_states” in PyMOL to display all in one time.

PyMOL>set all_states, on
on will display for all models
off will only display the first model

The 10 models are now shown at the same time. In order to show the differences more strikingly, I turn on “stick” to show the sidechains. The backbone structures are well superimposed but the sidechains are not. An output using “ray” to render shadows is on the right side.

On the contrary to “join_states”, PyMOL has “split_states” to split the NMR ensembles into separate objects (then users save the desired one). The command is provided below.

PyMOL>split_states ?
Usage: split_states object [, first [, last [, prefix ]]]

Alternatively, “set all_states” and “split_states” can be executed in GUI

–> click “Action (A)” –> “state” –> freeze/all states/thaw/split.

All examples were tested using MacOS 10.14, PyMOL 2.3.5

references: