sxfind_struct - use the "common line" algorithm to assign initial values of phi, theta, psi to 2D average projections.
Usage
Usage in command lines:
sxfind_struct.py prj_stack outdir --delta=delat_angle --rand_seed=random_seed --trials=number_of_trials --refine --MPI
Usage in python programing:
sxfind_struct(prj_stack, delta, outdir, random_seed, trials, refine, MPI)
Note: the 2D input images have to be centered. The program does not determine translation parameters, it only finds the Eulerian angles.
To use MPI || version:
- 1. set the flag --MPI in command line
- 2. mpirun -np 32 sxfind_struct.py and the remaining parameters
- The above example is for mympi.
Input
- prj_stack
- projection stack file with parameters phi, theta and psi set to zero
- outdir
- output directory
Output
- outdir/result.hdf
- it is the copy of the input stack file with the parameters (phi, theta and psi) set for each projection according the orientation found
- outdir/progress
- this file is updated for each iteration of the algorithm, it can be use to watch the progression
- outdir/angle.txt
- this file contain a summarize of the orientation found for each projection
- outdir/plot_agls.hdf
- this image in the hdf format, displays the orientation found for each projection on a 2D map (top view) locate on the hemisphere
Options
- random_seed
- seed for random assignment
- delta
- angle step to generate evenly distributed angles, default is 10.0
- refine
- to refine the angles with simplex method, default is False
- trials
- number of trials, repeat many times find_struct with different random_seed and accept the 'best' solution, default is 1
- MPI
- to use the MPI version
Description
Method
As described in the reference paper below, with modification of a full 2D Voronoi diagram on a sphere.
How to use the function sxfind_struct:
Firstly, the parameters of the stack, phi, theta and psi must be set to zero:
- sxheader.py stack.hdf --params="phi theta psi" --zero
Select a value for the angle step, delta. More delta is low and more the list of angles (candidates to perform the search) is large.
- delta=20 list of 52 angles evenly distributed
- delta=10 list of 211 angles evenly distributed
- delta=5 list of 848 angles evenly distributed
- delta=2 list of 5306 angles evenly distributed
If the speed of the algorithm is too long, you can try to decrease the number of angles and used the option refine to perform a local refinement on each angle after research by the simplex method ex.:
- sxfind_struct.py stack.hdf Test1 --delta=5 --rand_seed=10 --refine
To get a quick view of the structure found, use this function to reconstruct the volume:
- sxrecons3d_n.py result.hdf myvol.spi
The structure found depend of the random assignment for each projection, controled by the option value random_seed. To improve the structure use the option trials in order to repeat many times the algorithm with different seed value. The structure selected is the best according a criterion. In the logfile or in the file angle.txt you can found the criterion, named Discrepancy which defined the 'quality' of the structure found. A lower criterion mean a better structure.
- sxfind_struct.py stack.hdf Test1 --delta=10 --rand_seed=10 --refine --trials=10
Reference
Penczek, P., Zhu, J. and Frank, J.: A common-lines based method for determining orientations for N>3 particle projections simultaneously. Ultramicroscopy 63:205-218, 1996.
Author / Maintainer
Julien Bert
Keywords
- category 1
- APPLICATIONS
Files
applications.py
See also
Maturity
- stable
- works for most people, has been tested; test cases/examples available.
