Run-through example for helical structure using simulated data
This is a demo to show the workflow of helical refinement.
HELICON 2015
Download this file : helicon.tar
Notes to help get started
Install a current version of EMAN2 before you begin
If you have trouble getting MPI running on your machine, edit install_mpi.py so that
- def get_mpiroot(options):
returns 'False' no matter what, and then type the command
- install_mpi.py --force
This will create a version of mpi in your own area, that has everything needed.
Micrographs should be in a subdirectory called 'mic' with filenames like micxxx.hdf (where xxx is a number)
After running sxhelixboxer.py , the 'mic' directory will have files called 'micxxx_boxes.txt'
- These files have the start and stop positions of each filament from micrograph xxx
Before creating boxed images (segments) from these filaments
determine the CTF using sxcter.py, with or without the GUI
When windowing segments using sxhelixboxer.py ,
- make sure that you only include filaments with more than 3 segments, using --minseg=4 (or larger)
Segments (boxed filaments) will be stored in the directory mic/outdir (which will be created)
What is in the mic/outdir directory:
micxxx_abox_y.hdf is a stack of boxed segments from a single filament; in this case, the y th filament from micrograph xxx micxxx_helix_ptcl_coords.txt is a list of x-y coordinates to create stacks of particles from all filaments in a single micrograph xxx
Along the way, new directories will be created, result_a and result_b; if you try to re-run some programs they will fail because these directories exist, so re-name or delete the directory to start over.
Example commands:
mpirun -np 3 sxcter.py rotationalpowerspectra ctfestimates --indir=mic --nameroot=mic --micsuffix=hdf --wn=512 --apix=1.81 --Cs=2 --voltage=200 --ac=10 --MPI
sxhelixboxer.py outdir --window --dirid='mic' --micid='mic' --micsuffix='hdf' --apix=1.81 --boxsize=128 --hcoords_suffix="_boxes.txt" --ptcl-dst=5 --rmax=45.0 --importctf=ctfestimates/partres --astigmatismerror=0.5 --invert_contrast
Astigmatismerror is implemented.
Protein must be white, so since cryo data, contrast is inverted
# To window selected helices (long-boxes) do the following:
sxhelixboxer.py testmic/mic0.hdf --db-set-hcoords=testmic/mic0_boxes.txt --helix-width=300
sxhelixboxer.py testmic/mic0.hdf --helix-images=heli0.hdf
e2bdb.py mic/outdir --makevstack=bdb:adata --filt=QT
sxheader.py bdb:adata --params=xform.align2d --zero
# Make a 2D mask to use (filename mask2d.hdf):
sxhelical_demo.py mask2d.hdf --generate_mask --masksize="128,128" --maskwidth=50
# To generate power spectrum window segments using ptcl-dst equal to half the window size used. To obtain better Layer Line pattern one may want to experiment with different box size and rmax value:
sxprocess.py bdb:adata powerspectrum.hdf mask2d.hdf --pw --wn=1024
# shift alignment of windowed segments
mpirun -np 16 sxshiftali.py bdb:adata mask2d.hdf --oneDx --search_rng=10 --maxit=20 --MPI
When done,
e2display.py tavg.hdf
- to see the average filament
sxtransform2d.py bdb:adata bdb:data
sxheader.py bdb:data --params=xform.projection --zero
# Output: A noisy cylinder written to the output file name (inivol.hdf).
sxhelical_demo.py inivol.hdf --generate_noisycyl --boxsize="128,128,128" --rad=35
# Ab initio determination of the structure. Note parameters are mainly in Angstroms. Use help (sxhelicon.py -h) for details
# Notice that wobble is constrained to be zero, since it likely does not need to vary
mpirun -np 128 sxhelicon.py bdb:data inivol.hdf result_a --apix=1.81 --searchxshift=3.62 --xwobble=0.0 --ywobble=0 --phiwobble=1.40 --delta=2.80 --maxit=10 --dp=8.88 --dphi=112.3 --psi_max=7 --rmin=3.62 --rmax=45. --fract=0.085 --function="[.,nofunc,helical3c]" --CTF --seg_ny=128
sxheader.py bdb:data --import=result_a/parameters0010.txt --params=xform.projection
mpirun -np 16 sxheliconlocal.py bdb:data result_a/volf010.hdf result_b --CTF --seg_ny=128 --ou=45. --fract=0.085 --psi_max=7.0 --delta=1.4 --maxit=10 --function="[.,nofunc,helical3c]" --xr=3.68 --txs=1.81 --an=7 --ynumber=16 --dp=8.88 --dphi=112.3 --apix=1.81 --rmin=3.62 --rmax=45.0 --initial_theta=85.0 --delta_theta=2.0 --y_restrict=4.44
sxhelicon_utils.py bdb:data --hfsc='imglist' --filament_attr=filament
mpirun -np 16 sxrecons3d_n.py bdb:data result_b/volodd.hdf --CTF --list=imglist_odd.txt --MPI
mpirun -np 16 sxrecons3d_n.py bdb:data result_b/voleven.hdf --CTF --list=imglist_even.txt --MPI
# Helicise volumes
sxhelicon_utils.py result_b/volodd.hdf result_b/voloddh.hdf --helicise --dp=8.88 --dphi=112.3 --fract=0.2 --rmax=45.0 --rmin=3.62 --apix=1.81
sxhelicon_utils.py result_b/voleven.hdf result_b/volevenh.hdf --helicise --dp=8.88 --dphi=112.3 --fract=0.2 --rmax=45.0 --rmin=3.62 --apix=1.81
|
IHRSR - Old Approach, no longer supported 8/06/2013
Download file helical_mpi.tar and unpack it using the following command:
tar -xvf helical_mpi.tar
Or see below for a New Approach
You need to copy the commands from run_through_example and paste them on your terminal to run them. For helical refinement, we only provide an MPI version. Depending on your computational environment, you need to change the mpirun command.
To generate the script for 3D structure determination of helical filaments with helical symmetry based constraints (sxhelicon), use the following command:
- sxhelical_demo.py --generate_script --filename=runhelicon --seg_ny=180 --ptcl_dist=15 --fract=0.35
This will generate a script called runhelicon containing the commands for windowing a stack of 200 by 200 segments with a distance of 15 pixels between adjacent segments windowed from the same 2D projection of a helical filament, and where the y-dimension of the segment size used in refinement is 180 pixels, with 0.35 of the volume used for applying helical symmetry during the refinement process. For additional details see sxhelicon
In addition to documentation on sxhelicon , parameters are documented for programs used in the example, including (alphabetically) sxcter , sxheader , sxhelical_demo , sxhelixboxer , sxihrsr , sxpdb2em , sxprocess , sxshiftali
There are six files in this directory. The function of some of the files are explained below:
3MFP_1SU.tar.gz contains the pdb file for one unit of helical structure.
saved_pos.tar.gz contains the coordinate file of helix box. Based on its information, we can cut the filament from the micrograph and rotate the filament to a nearly vertical position. We provide this file to help you to run the demo faster by skipping the manual boxing step. However, you still need GUI enviroment to run the pre-processing steps.
answer.tar.gz contains the result of our previous run. reuslt_a is the first run without considering the out-of-plane angle. result_b is the continuous run based on result_a but with out-of-plane angle. The logifle, parameter files and pixer file are stored in both folders.
To learn how to interactively mark filaments in micrographs and store the coordinates using sxhelixboxer.py, please watch the movie E2helixboxer.mov.
The preprocessing steps can be completed within ten minutes on a Mac workstation. The first run of helical refinement without out-of-plane angle may take half an hour on 3 or 4 CPUs. The second run that includes the out-of-plane tilt angle will take much longer time on 3 or 4 CPUs. tmp.hdf is the ideal volume generated from pdb file, but is much longer than the volume produced by our program. For comparison, you will need window and pad tmp.hdf to the same size with the volume generated by our program.
Author / Maintainer
Pawel Penczek, email: Pawel.A.Penczek@uth.tmc.edu