This is an old revision of the document!
Table of Contents
EMAN2 tomography - ATP synthase in mitochondria (2026)
This tutorial uses a public in situ CryoET dataset ( EMPIAR-11830) of Chlamydomonas reinhardtii prepared using cryo-plasmaFIB milling. Here, we use 5 tilt series and target the structure and dynamics of ATP synthase inside mitochondria.
It is recommended to cross reference with previous tutorials of ribosomes and viruses .
Many of the functions here require an EMAN2 installation after 06/2026. A newer version is almost always better. A latest continuous build may work but compiling from source is preferred. For the installation guide, see here.
Initial processing
Make a new empty folder for the project and 'cd' into that folder. Make sure all EMAN2 commands you run are executed from within this folder.
Unzip the dataset, and you should have a folder called “tiltseries”, with four hdf image stacks in it, inside the project folder. To view the tilt series, run e2display.py, locate the file in the browser, and click Show2D.
Initial tomogram reconstruction
Start from one good tilt series to play with the parameters for tilt series alignment and tomogram reconstruction. After having a good set of options, we will run the program with the same parameters for all tilt series later.
e2tomogram.py tiltseries/06092023_NNPK_Arctis_WebUI_Ron_data_Position_4.hdf --tltstep=3.0 --npk=10 --tltkeep=0.9 --outsize=1k --niter=2 --bytile --pkkeep=0.9 --compressbits=8 --clipz=320 --bxsz=32 --filterres=50 --threads=12 --patchtrack=2
Handedness check by CTF
Before reconstructing all tilt series, we need to make sure the handedness of the tomogram is correct.
e2spt_tomoctf.py tiltseries/06092023_NNPK_Arctis_WebUI_Ron_data_Position_4.hdf --dfrange=2.0,7.0,0.02 --psrange=10,15,5 --tilesize=400 --voltage=300 --cs=2.7 --nref=15 --stepx=20 --stepy=40 --checkhand --threads=1 --writetmp
The handedness of the tilt series should be correct.
All tomogram reconstruction
Reconstruct all tilt series using the same parameters and the tilt axis estimated by the handedness check. Note that in the full dataset, tilt series of different sessions in EMPIAR-11830 may have different tilt step and pixel size in their header. Run the –alltiltseries command with caution when processing large datasets. The 5 tilt series in this tutorial are from the same session and have similar conditions.
e2tomogram.py --alltiltseries --tltax -83.5 --tltstep=3.0 --npk=10 --tltkeep=0.9 --outsize=1k --niter=2 --bytile --pkkeep=0.9 --compressbits=8 --clipz=320 --bxsz=32 --filterres=50 --threads=12 --patchtrack=2 --notmp
CTF estimation
Now we estimate the defocus for all tilt series. Note here we only estimate the CTF, not correct for it. The correction will happen later when extracting particles. To get to high resolution, it is often safer to use a higher than the default `–tilesize`.
e2spt_tomoctf.py --alltiltseries --dfrange=2.0,7.0,0.02 --psrange=10,15,5 --tilesize=400 --voltage=300 --cs=2.7 --nref=15 --stepx=20 --stepy=40 --threads=5
Particle picking
First, evaluate the tomograms using
e2tomo_eval.py
Here we pick a few particles manually. In this dataset, we just need ~70 particles to make a good initial model. Here we label them as atpsyn_init.
Initial model generation
Extract the manually selected particles and build set first.
e2spt_extract.py --boxsz_unbin=288 --label=atpsyn_init --threads=8 --alltomograms --shrink=4 --tltkeep=1.0 --compressbits=8 --parallel thread:5 e2spt_buildsets.py --allparticles
Now make the initial model.
e2spt_sgd_new.py sets/atpsyn_init_bin4.lst --res=60.0 --niter=50 --shrink=1 --parallel=thread:64 --ncls=3 --batch=12 --learnrate=0.2 --sym=c1
Note the structure should be c2 symmetrical. At this point, it is recommended to rotate the initial model to the symmetry axis to take advantage of the symmetry in later steps. Sometimes, this can be done automatically.
e2symsearch.py sptsgd_00/output_cls0.hdf --sym c2 --applysym
However, this program is designed for higher resolution structure. Since the resolution is low and the symmetry in situ structure is not perfect, this may fail. One solution is to rotate the volume roughly to the symmtry axis in FilterTool, using the xform processor. Here I launched the FilterTool in safe mode (hold SHIFT), and used “xform:alt=30:az=50”. The checkboxs afront unused parameters need to be unchecked. Save the processed map and rename it to sptsgd_00/output_cls0_xf.hdf. Then run e2symsearch.py in refine mode to optimize the symmetry axis.
e2symsearch.py sptsgd_00/output_cls0_xf.hdf --sym c2 --applysym --refineonly
Alternatively, it is also possible to skip this step for now and perform the initial refinement with c1. Automatic symmetry search is more likely to converge once the structure reaches higher resolution.
Template based particle picking
Pick particles using the initial model generated in the last step.
e2spt_tempmatch.py tomograms/*.hdf --reference=sptsgd_00/output_cls0_xf_sym.hdf --label=atpsyn --nptcl=1500 --dthr=60.0 --vthr=6.0 --delta=30.0 --sym=c2 --rmedge --rmgold --threads=12
The template matching should work fine inside mitochondria but leave false positives outside. Since we only have 5 tomograms here, it is easy to take a look and manually clean the particles. Lauch the manual boxer and use the Eraser tool to remove particles outside the mitochondria. Uncheck “Limit Side Boxes” will show all boxes along one axis in each view so particles on the edge across all depth can be removed with one click.
For the full dataset, using the deep learning based particle picker can reduce the manual effort of the cleaning step. Because the ATP synthase has quite distinct top vs side view, training the model can take multiple iterations of training set refinement and not efficient for a small dataset. Please refer to previous tutorials for details.
Polishing tomogram alignment
The recently made contrast base tilt series alignment refinement tool can often improve the resolution of averaged structures. This step can be done right after the initial tilt series alignment step, but when particle coordinate information exist in the tomogram, the program will specifically enhance the contrast in region with particles. This might lead to slightly better performance.
e2tomogram_refine.py tiltseries/*.hdf
Refinement of ATP synthase dimers
First extract the particles from template matching. With this tutorial dataset, we expect to get ~10Å resolution, so shrink by 2 should be sufficient.
e2spt_extract.py --boxsz_unbin=256 --label=atpsyn --threads=12 --maxtilt=100 --padtwod=2.0 --alltomograms --shrink=2.0 --tltkeep=1.0 --compressbits=8 --parallel thread:5
Now run build set and start the initial round of refinement. Note here we use the 'g' iteration introduced in 2026. It is much faster than 't' and produces higher resolution final structure in most cases. My current recommendation is alternating 'p' and 'g' iterations but ends with a 'p'. The 'g' iterations may have a slightly lower FSC curve itself sometimes but still improve the FSC of the next 'p' iteration.
e2spt_refine_new.py --ptcls=sets/atpsyn_bin2.lst --ref=sptsgd_00/output_cls0_xf_sym.hdf --startres=50.0 --goldstandard --sym=c2 --iters=p2,g,p,g,p --keep=0.95 --parallel=thread:64 --threads=64
The first refinement should bring the resolution to around 15Å.
e2spt_refine_new.py --ptcls sets/atpsyn_bin2.lst --ref=spt_00/threed_07.hdf --startres=25 --goldstandard --sym=c2 --iters=p2,g,p,g,p --keep=0.95 --parallel=thread:96 --threads=96 --mask mask_00.hdf --tophat localwiener





