Animating Remdesivir and SARS-CoV-2 Polymerase with ChimeraX

Tom Goddard
May 15, 2020

Here is an explanation of how the following animation was made that shows how drug remdesivir is believed to block the SARS-CoV-2 RNA polymerase. With thorough knowledge of ChimeraX it took about 4 hours to make the movie. Tweet.


  1. Starting structure.
    I used cryoEM structure PDB 7bv2 of the SARS-CoV-2 RNA polymerase with remdesivir bound.
  2. Drug mechanism article.
    This article says that remdesivir is incorporated into the RNA as an adenine analog and then 3 more bases are added before a clash with serine 861 of the polymerase blocks further transcription. See Figure 5.
    Remdesivir is a direct-acting antiviral that inhibits RNA-dependent RNA polymerase from severe acute respiratory syndrome coronavirus 2 with high potency.
    Gordon CJ, Tchesnokov EP, Woolner E, Perry JK, Feng JY, Porter DP, Götte M.
    J Biol Chem. 2020 May 15;295(20):6785-6797. doi: 10.1074/jbc.RA120.013679. Epub 2020 Apr 13.
  3. Modeling.
    There are no experimental structures of the polymerase with remdesivir with 1, 2, or 3 additional bases added to the copied RNA so we have to make models of those states from the one available structure. The strategy is to shift the template and copy RNA strands preserving the backbone and sugar conformation and aligning each nucleic acid base to the next base. We will add 3 more bases that follow the remdesivir in the copy strand.
  4. Extend RNA strands.
    The template strand beyond the remdesivir position has two U bases, so I want to add two A bases to the copy strand that will pair with those. I open a copy of 7bv2 and just cut out a segment of bases with AA from the original structure. To do this delete all atoms except chain P ("delete #2 & ~/P"), show the sequence of chain P (link in log panel), selected AAGUUAU on sequence and delete everything else ("delete #2 & ~sel"). I cut out 7 bases when all I really need is 3 in case I later want to show remdesivir passing the obstruction. I do the same procedure loading another 7bv2 copy and extract AUAAC from the template strand T that I will use to extend the template strand. I use the move selected model mouse mode to position these two extra RNA segments at the ends of the existing P and T chains. The extended P strand will clash with the polymerase but in the movie those nucleotides will be hidden until each reaches the active site.
  5. Extended RNA model.
    I want to join the two extra RNA segments by bonds to the template and copy strands and I want them to be part of the same model as the original polymerase structure. This is done with the Chimera "combine" command. I also need to renumber the extra segment residues so they don't conflict with the original structure using the "resrenumber" command. Those two commands are in Chimera but not yet in ChimeraX. So I write out my two extra segments as PDB files, load 7bv2 and the two segments in Chimera, renumber the residues, combine into one model and write out a PDB file, that I load back into ChimeraX.
  6. Connect RNA segments.
    In ChimeraX I add a bond to connect the RNA copy strand to its extra segment by selecting the phosphor and oxygen atoms and using the "bond" command, and I do the same for the template strand and its extension.
  7. Change remdesivir atom names.
    My method for sliding the RNA by one base relies on the backbone and sugar atoms of remdesivir matching the names used for standard RNA nucleotides. The remdesivir uses all different atom names, so I change them with the setattr commands rename.cxc.
  8. Shift the RNA.
    To shift the template and copy RNA strands keeping sugar and backbone atoms in the same position as the experimental structure and aligning each nucleic acid base to the next in the sequence I wrote a Python script Opening this Python in ChimeraX defines the "shiftrna" command. I save a copy of the extended RNA polymerase model as poly1.pdb, then use command "shift /T offset -1 ; shift /P offset 1" and save poly0.pdb which is shifting backwards allowing the movie to show a state before the remdesivir gets added. Then reopen poly1.pdb and shift forward "shift /T offset 1 ; shift /P offset -1" four times saving poly2.pdb, poly3.pdb, poly4.pdb, poly5.pdb.
  9. Morph.
    The movie could just jump shifting the nucleotides one step at a time abruptly. But I thought a smooth motion would be nicer, so command "morph #1-6" to morph from poly0.pdb through poly5.pdb where the clash happens.
  10. Show surface, set colors, ....
    Set the display style and colors for the movie. I showed surfaces, set surface colors, set RNA colors, colored remdesivir to standout, showed remdesivir as ball and stick and other nucleotides with slab style, set camera field of view to 60 degrees, set high quality shadows, white background, silhouette edges, color serine 861 surface patch red....
  11. View angle.
    There is no good view direction that shows the active site where the remdesivir is added and the clash site where the remdesivir hits serine 861. I tried clip planes to reveal both in one view but did not like it. So I decided to change the camera view during the movie. I set the starting view to show the whole polymerase and active site and saved that view point with command "view name start". Then I chose a view of the serine 861 clash and named it "view name clash". Now save this ChimeraX session remdesivir.cxs so I can later remake the movie.
  12. Make movie.
    To record the movie I made a command script movie.cxc that advances the morph one nucleotide at a time pausing a second between each and moving from the start view to the clash view near the end. I tested these commands interactively before I put them in the script. To make the movie I open the session remdesivir.cxs created in the previous steps, then open the movie script to animate and record.