Getting a Structure from Multiple Tomograms of HIV Capsids (walkthrough)

From Dynamo
Revision as of 15:30, 3 September 2018 by Stefano Scaramuzza (talk | contribs)
Jump to navigation Jump to search

In this walkthrough you will get familiar with managing multiple tomograms through the Dynamo catalogue and developing strategies for alignment projects to reach a reasonable structure from a set of tomograms. You will make use of the knowledge that you acquired during the workshop and apply it to a more realistic case. It is recommended to get familiar with at the advanced starters guide and the walkthrough for lattices on vesicles before starting this walkthrough.


We prepared a set of 6 tomograms, each containing one Immature HIV-1 virus like particle (VLP) with a layer formed by a lattice of capsid proteins. The capsid proteins have a C6 symmetry and have a diameter of roughly 15nm and a molecular weight of about 150kDa. The pixelsize of the tomograms is 2.7 angstrom. You can find the tomograms in:


The tomograms are part of the data that was used in the publication An atomic model of HIV-1 capsid-SP1 reveals structures regulating assembly and maturation by Schur FK, Obr M, Hagen WJ, Wan W, Jakobi AJ, Kirkpatrick JM, Sachse C, Kräusslich HG and Briggs JA. (2016). The full dataset can be found on the Electron Microscopy Public Image Archive (EMPIAR) under EMPIAR-10164. The 6 tomograms were extracted from the tilt series TS_03 and TS_43.


From the data given you should be able to get a final average in which you start seeing hints of alpha helices, i.e., it should be possible to reach a resolution close to roughly 10 angstroms.


Set up a catalogue

Create a new catalogue

dcm -create catVLP

and open it in the catalogue manager

dcm catVLP

You can add each volume manually to the catalogue under Catalogue -> Browse for new volume or you can make use of a volume file and add all tomograms at once under Catalogue -> Input list of tomograms -> Browse for text file (.vll file). The volume file should be created beforehand by opening a blank text file named for example VLPtomograms.vll and copy the paths of all tomograms into it:


In case you imported the tomograms using a volume file you have to click the button list volumes to refresh the tomogram list in the catalogue manager. Now you should see the 6 tomograms in the catalogue manager. Prebin the tomograms once (1x) under Catalogue -> Create binned versions -> with factor 1. You can now look at single tomograms in tomoslice by selecting a tomogram of choice in the catalogue manager and then go under View volume -> Load full prebinned Volume [if available] -> open in tomoslice. If needed, adjust the lowpass level and contrast to improve the depiction.

Annotate tomograms

To know where we want to later extract the subvolumes we have to first annotate the surfaces of the VLPs inside the tomograms. We do this by opening a tomogram inside tomoslice where a so called dipole Set model is defined. How to do that is described in detail in the section DipoleSet models, Corrections during picking and Corrections after picking of the walkthrough for lattices on vesicles. A new dipole set model has to be made for each tomogram. Save each model before closing tomoslice and when opening a new tomogram in tomoslice select Delete from memory if asked. In case you see markers of the previously defined dipole set inside the newly opened tomogram make sure the model pool is empty and click on reset scene before defining the new dipole set. Once you went through all tomograms click on the button list volumes inside the catalogue manager to refresh the list of tomograms. In the column model files of the tomogram list of the catalogue manager you should now see that you have one defined model per tomogram.

Define crop points

To extract subvolumes (crop particles) we need to first define the crop points on the surface of the VLPs using the previously defined models. The crop points are then stored in a table. This is all done with the following script.

% read dipole from catalogue into workspace
dcmodels catVLP -tc dipoleSet -ws o -gm 1

c=1; % counter for table
for tomo = 1:6 % loop over tomograms
    ds = o.models{tomo};                  % read models
    NDipoles = length(ds.dipoles);
    for i=1:NDipoles                      % loop over models (in our case just one per tomogram)
        v = dmodels.vesicle();            % create empty vesicle model = ds.dipoles{i}.center;  % add center from dipole to vesicle model
        v.radius = norm( ds.dipoles{i}.north - ds.dipoles{i}.center); % add radius
        v.separation = 60;                % separation of crop points (in px)
        v.crop_distance_from_surface =0;
        v.updateCrop();                   % update vesicle model

        tv{c} = v.grepTable(); % create crop table from using vesicle model
        tv{c}(:,22) = i;       % add model number to table
        tv{c}(:,20) = tomo;    % add tomogram number to table

In the standalone version you need to proceed as follows:

1.) Open a text file named commands.m and copy the following into the file (avoid commenting with % or #):

o =dcmodels('catVLP','type','dipoleSet','gm',1);
for tomo = 1:6 % loop over tomograms
    ds = o.models{tomo};
    NDipoles = length(ds.dipoles);
    for i=1:NDipoles
        v = dmodels.vesicle(); = ds.dipoles{i}.center;
        v.radius = norm( ds.dipoles{i}.north - ds.dipoles{i}.center);
        v.separation = 60;
        v.crop_distance_from_surface =0;
        tv{c} = v.grepTable();
        tv{c}(:,22) = i;
        tv{c}(:,20) = tomo;
        disp(sprintf('Dipole %d will provide %d crop points',i,size(v.crop_points,2)));

2.) Execute the text file named commands.m in a system shell or in the Dynamoconsole:

dynamo commands.m

3.) When you are back in the Dynamoconsole, you can read the results from the script with

tv = dread('cellOfTables.mat'); 

Write table with crop points

Merge all tables into one with the command

tAll = dynamo_table_merge(tv,'linear_tags',1); 

and visualize the table to see the crop points and their orientations

dtplot(tAll,'pf','oriented_positions'); axis equal

You should get something like:

File:Result table vlp.jpg
Crop points in table.

Extract subvolumes

  • Do not crop particles with a sidelength larger than 128px.
  • Before using any C6 symmetries in the alignment projects, make sure to properly center the particles and template.
  • Without any postprocessing or elaborate refinement your final average may look similar to the one shown below:
Possible outcome of the exercise.