Skip to content
mcianfrocco edited this page Dec 8, 2014 · 15 revisions

Simulating cryo-EM images from PDB coordinates

The following is a protocol to simulate cryo-EM images from PDB coordinate files. This procedure will place a PDB model into a 373.4 x 373.4 x 373.4 Angstrom box.

All scripts listed below can be found in the Github repo.

Things you need

  • Gromacs
  • 64 bit Linux
  • PDB file
  • Multislice github repository cloned to your computer

Convert PDB to .xyz format

  1. Convert PDB (example file: 2DN2.pdb) file into Gromacs format and center in 373.4 x 373.4 x 373.4 Angstrom box:

$ editconf -f 2DN2.pdb -o 2DN2.gro -box 37.35083 37.35083 37.35083

  1. Download water01.gro from figShare

  2. Add protein to water:

$ genbox -cp 2DN2.gro -cs water01.gro -o 2DN2_water.gro

Or in gromacs 5.0:

$ gmx solvate -cp 2DN2.gro -cs water01.gro -o 2DN2_water.gro

  1. Convert file to .xyz format:

$ ./gro-xyz-H.pl 2DN2_water.gro > 2DN2_water.xyz

Simulate propagating wavefront through protein-water model

  1. Copy fparams.dat to your working directory:

$ cp Multislice/bin/fparams.dat .

  1. Then run autoslice_Q:

    $ Multislice/bin/autoslice_Q autoslice_Q version dated 2008 rjh

    Name of file with input atomic potential in x,y,z format: 2DN2_water.xyz Replicate unit cell by NCELLX,NCELLY,NCELLZ : 1 1 1 Name of file to get binary output of multislice result: 2DN2_water_image.tif Do you want to include partial coherence (y/n) : n NOTE, the program image must also be run. Do you want to start from previous result (y/n) : n Incident beam energy in kev: 300 Wavefunction size in pixels, Nx,Ny: 256 256 Crystal tilt x,y in mrad.: 0 0 Slice thickness (in Angstroms): 1 Do you want to record the (real,imag) value of selected beams vs. thickness (y/n) : n Do you want to include thermal vibrations (y/n) : n

NOTE: The wavefront size determines the pixel size according to the relationship:

Pixel size = (373.4 Angstroms) / (wavefront size)

7a) To simulate a single image:

$ Multislice/bin/image
image version dated May 2008 rjh
Name of file with input multislice result:
2DN2_water_image.tif
Type 0 for coherent real space image,
 or 1 for partially coherent real space image,
 or 2 for diffraction pattern output,
 of 3 for coherent real space including phase plate:
0
Name of file to get defocused output:
2DN2_water_image_sim.tif
Spherical aberration in mm.:
2.2
Defocus in Angstroms:
10000
Objective aperture size in mrad:
10
Magnitude and angle of two-fold astigmatism (in Angst. and degrees):
0
0
Magnitude and angle of three-fold astigmatism (in Angst. and degrees):
0
0
Objective lens and aperture center x,y in mrad
 (i.e. non-zero for dark field):
0
0

7b) Add 'noise' to wavefront before simulating cryo-EM image:

$ Multislice/bin/add_poisson 
c-poisson version dated 2008 rjh
Name of file to add poisson noise:
2DN2_water_image.tif
Name of output file:
2DN2_water_image_noise.tif
Exposure, electrons per square angstrom:
20

7c) To simulate a range of defocuses:

$ Multislice/make_stack_range_defocus.py -i 2DN2_water_image.tif -m mtf.spi 
--min=0 --max=50000 --ds=1000 --e=25 -n

NOTE: mtf.spi is the MTF of a CCD on a Tecnai F20. The MTF is applied to the simulated cryo-EM image, providing a more realistic intensity distribution of the images.

NOTE: You have the option to apply noise (Poisson noise) to the images. Right now, I don't think the Poisson noise accurately reflects the SNR of cryo-EM images, so I usually don't use it.