To run the program (it requires MPI installation):

mpirun -np 32 bdb:stack ref_vol.hdf result --ou=152 --xr=1.0 --txs=0.5 --ynumber=8 --delta=1.5 --an=-1 --maxit=20 --snr=1 --nise=0 --dp=5.026 --ndp=4 --dp_step=0.0005 --dphi=-106.65 --ndphi=4 --dphi_step=0.005 --psi_max=7 --rmin=0 --rmax=34 --fract=0.67 --npad=2 --datasym=symdoc.dat --function=[.,nofunc,helical] --CTF

Depending on the dimension of ref_vol, the program will use different reconstruction and projection methods. If the ref_vol is cubic, the cubic reconstruction and projection method will be used. Otherwise, the rectangular reconstruction and projection method will be used. In order to reduce the computational time and save the memory, we recommended that user give rectangular volume as reference.

The attributes xform.projection (Transform object containing the projection orientation parameters of an image: three Euler angles and two in-plane shifts) have to be set in the header of each image in the input stack. If the projection orientations are not known, then set them to zero. For more information on how to set projection orientation parameters, see I_O and Euler_angles.

Guidelines to determine the alignment related parameters.

For effective alignment, the step sizes chosen for directional search in x and y (--txs and --ynumber, respectively) as well as the radial resolution (--delta) should match each other:

1) --txs should be determined first (based on whether filaments were pre-centered or not).

2) the step size chosen for y direction should be set to a similar setting as for --txs. However, y search range is dependent of helical symmetry parameters and y direction cannot be set directly. Instead, y step size corresponds to: tys = dp( Angstroms) /Pixel_size/ynumber. By selecting a proper even ynumber, we can make tys approach txs.

Example of a typical user function.

# this user function simply applies low pass filteration to the input volume
# Note that the volume is symmetrized and helicised both prior and and after call to this function, which is meant to reduce filtration artifacts.
from EMAN2_cppwrap import *
from global_def import *
def helical3( ref_data ):
        from utilities      import print_msg
        from filter         import fit_tanh, filt_tanl
        from morphology     import threshold
        from utilities import sym_vol
        #  Input: list ref_data
        #   0 - raw volume
        #  Output: filtered, and masked reference image
        stat = Util.infomask(ref_data[0], None, True)
        volf = ref_data[0] - stat[0]
        fl = 0.3
        aa = 0.2
        volf = filt_tanl(volf, fl, aa)
        return  volf