Localized reconstruction

Jump to: navigation, search


Required software

Please note that Localized reconstruction has moved to Github: https://github.com/OPIC-Oxford/localrec

It also requires the following software:

  • Scipion
  • Relion

Instructions for using the old version

The earlier localized reconstruction script (relion_localized_reconstruction.py) is still available from our Downloads page. It also requires:

  • pyRelion, our Python library for reading, modifying, and writing Relion STAR files, see Downloads

Normally we simply place the script (and scripts from the pyRelion package) to the Relion bin/ directory.

These instructions are provided as reference and are still largely valid for using the newer versions (1.1.0 and newer).


If localized recsontruction is useful in your work, please cite:

Ilca et al. (2015) Localized reconstruction of subunits from electron cryomicroscopy images of macromolecular complexes. Nature Communications 6. doi:10.1038/ncomms9843.

General considerations

The inputs for the localized reconstruction using RELION are the particle stacks and the final STAR file from a 3D refinement of particle orientations and origins. If particles have been extracted into a very tight box, it may be beneficial to re-extract them from the original micrographs using relion_preprocess and a larger box size, to avoid sub-particle boxes from sticking out from the particle box.

Test data

If you would like to test the commands given below, you can download a data set from Empiar

The test data consists of particles of phi6 polymerase complexes. These data can be used together with the command lines below to calculate a localized reconstruction of the density under the icosahedral three-fold vertex (the site of the RNA polymerase).

Localized reconstruction of subunits

To see a list of available parameters, simply run the script without any arguments.


An example command line is given below. Only one input file is required (particles_data.star). This can be an output either from Relion 3D classification or 3D refinement.

relion_localized_reconstruction.py \
--split_stacks \
--create_star \
--extract_subparticles \
--angpix 1.35 --sym I1 \
--particle_size 480 --subparticle_size 100 \
--vector 0.382,0,1 \
--length 100 \
--align_subparticles \
--unique 1 \
--j 8 --np 4 \
--output subparticles \

The most important parameters are explained below.

  • --split_stacks : needs to be run once to split particle stacks into individual files (for extracting subparticle boxes later)
  • --create_star : needs to be run after every time when subparticle locations are changed (for extracting subparticle boxes later)
  • --extract_subparticles : runs relion_preprocess to extract subparticle iamges from the particle images
  • --sym : give the symmetry of the particle. It is important to use the same symmetry definition as for your earlier Relion runs
  • --vector : defines the location of the subparticle relative to the particle 3D reconstruction. Alternatively a Chimera marker file defining the vector can be given (for this use option --cmm instead).
  • --length : length of the subparticle vector. Adjust the length to adjust the position of the subparticle box relative to the particle centre
  • --align_subparticles : aligns subparticle vector on the Z-axis. E.g. if subparticles are on an icosahedral five-fold vertex, the five-fold symmetry axis will be aligned on Z-axis
  • --output : output rootname. For example if "--output subparticles" is given, subparticles will be written into folder "subparticles/" and parameters to "subparticles.star"

After creating and extracting sub-particles, they can be reconstructed to create a starting model for 3D classification and refinement.

relion_reconstruct --i subparticles.star --o subparticle_3D.mrc --angpix 1.35 --j 8 --ctf --maxres 12

Estimating resolution after localized reconstruction

To calculate a resolution of the localized reconstruction in a particular class after 3D classification, follow these steps:

# Select all particles that belong to class 1 with awk (assumes that class number is stored in the 22nd column)
awk '{if (NF<=2) {print} else {if ($22 == 1) {print}}}' < subparticles_run1_ite025_data.star > subparticles_run1_ite025_data_class01.star

# Split subparticles to half1 and half2 (assumes the half set is stored in the 24th column)
awk '{if (NF<=2) {print} else {if ($24 == 1) {print}}}' < subparticles_run1_ite025_data_class01.star > subparticles_run1_ite025_data_class01_half1.star
awk '{if (NF<=2) {print} else {if ($24 == 2) {print}}}' < subparticles_run1_ite025_data_class01.star > subparticles_run1_ite025_data_class01_half2.star

# Reconstruct both half-maps
relion_reconstruct --ctf --i subparticles_run1_ite025_data_class01_half1.star --o subparticles_run1_ite025_data_class01_half1_class001_unfil.mrc
relion_reconstruct --ctf --i subparticles_run1_ite025_data_class01_half2.star --o subparticles_run1_ite025_data_class01_half2_class001_unfil.mrc

# Run Relion post-processing normally
relion_postprocess --i subparticles_run1_ite025_data_class01 --o subparticles_class01_postprocess --auto_bfac

Localized reconstruction of subunits with subtraction of bulk particle density

In many cases, it is beneficial to subtract bulk of the particle density (everything except the subunit of interest) from the particle images. First, calculate a 3D reconstruction of the particle in RELION. It is important to do CTF correction, however, this reconstruction should not be B-factor sharpened.

relion_reconstruct --i particles_data.star --o particle_3D.mrc --angpix 1.35 --j 8 --ctf --sym I1

Create a soft mask that defines the bulk density of the particle (value 1) but excludes the density for the subunit(s) of interest (value 0). This mask can be created in Bsoft using command beditimg or by filtering a PDB file to low resolution using EMAN2 command e2pdb2mrc.py followed by relion_create_mask. Exactly what is the best way for creating a mask depends largely on the structure of the particle and sub-particle. The mask can then be symmetrized using Bsoft command bsym if the particle is symmetrical.

Then multiply the 3D reconstruction with a mask, to remove the contribution of the subunits.

bop -multiply 1,0 particle_3D.mrc particle_3D_masked.mrc particle_mask.mrc

Next, run the localized reconstruction script. The only difference to the example command line given in the previous example above is that now "--masked_map" parameter is given in addition.

relion_localized_reconstruction.py \
--split_stacks \
--masked_map particle_3D_masked.mrc \
--create_star \
--extract_subparticles \
--angpix 1.35 --sym I1 \
--particle_size 480 --subparticle_size 100 \
--vector 0.382,0,1 \
--align_subparticles \
--length 100 \
--unique 1 \
--j 8 --np 4 \
--output subparticles \

Finally, reconstruct a starting model for 3D classification and refinement as earlier.

relion_reconstruct --i subparticles_subtracted.star --o subparticle_subtracted_3D.mrc --angpix 1.35 --j 8 --ctf --maxres 12

Using sub-particles in Relion

Now you are ready to process the sub-particles as 'single particles' in Relion using standard procedures for 3D classification and/or 3D refinement. Some tips:

  • It may be necessary to include '--dont_check_norm' option in relion_refine
  • If you want to test for partial occupancy and/or alternative conformations of the sub-units, try running 3D classification without alignments (option '--skip_align')
  • Furthermore, it may be be useful to limit the resolution with '--strict_highres_exp' to resolution around 10 A
  • For refinement of subparticle orientations and origins, use local refinements (give the same "--healpix_order" and "--auto_local_healpix_order") and limit the rotations with '--sigma_ang' and offsets with '--offset_range

If you are testing the approach with the test data provided, you can run the following 3D classification to solve the symmetry mismatch between the capsid (icosahedral 3-fold) and the polymerase (no symmetry).

mpirun -np 8 relion_refine_mpi --o Class3D/run1 --i subparticles_subtracted.star --particle_diameter 80 --angpix 1.35 \
--ref subparticle_subtracted_3D.mrc --firstiter_cc --ini_high 20 --iter 25 --tau2_fudge 2 --flatten_solvent --zero_mask \
--ctf --sym C1 --K 5 --skip_align --norm --only_flip_phases --perturb 0 --strict_highres_exp 12 --j 4 > Class3D/run1.log &

After classification, select the class or classes of interest (here _rlnClassNumber is in column 22 and class number 1 is chosen).

cat Class3D/run1_it025_data.star | awk '{if (NF<2) { print } else { if ($22 == "1") { print } } }' > Class3D/run1_it025_data_class01.star

Notice that if you select more than one class in this example, you would need to apply 120 or 240 degrees to _rlnAngleRot to align all subparticles the same way.

Afterward, a map can be calculated from the original data by creating a STAR file pointing to the original (non-subtracted) sub-particle stacks. Use the same resolution as indicated by Relion.

sed s/subparticles_subtracted/subparticles/ < Class3D/run1_it025_data_class01.star > subparticles2.star 
relion_reconstruct --i subparticles2.star --o subparticle2_3D.mrc --angpix 1.35 --j 8 --ctf --maxres 8

Reconstructing sub-units from icosahedral symmetry axis

To create sub-particles for subunits at icosahedral symmetry axis, use these vectors (assumes I1 orientation):

  • all 2-folds, use --vector 0.000,0.000,1.000
  • all 3-folds, use --vector 0.382,0.000,1.000
  • all 5-folds, use --vector 0.000,0.618,1.000

To create only one sub-particle for each position, use "--unique 1". Otherwise all 60 sub-particles will be created.

Personal tools