MPSA


Instructions for running MPSA



Step 1: Copy supporting files from MPSA directory

Step 2: Prepare raw particle images

Step 3: Generate random initial model and make initial 2D references

Step 4: 2D orientation search

The program accepts both raw images and references with different image size and pixel size, and can set them to the right scale during alignments.

Step 5: 3D reconstruction

The program accepts input particles with different image size and pixel size.

Output 3D map can have user specified volume and pixel sizes.

Step 6: Post data processing and make new 2D references

Iterate from Step 4 to 6 until the 3D model is converged


Step 1: Copy supporting files to your current directory

Run command: mp-copyfiles2local for copying the some change-required files from MPSA directory to your working directory

The files include mp-configure.ini, mp-2dalignment, mp-3dreconstruction and mpsa*pbs

These files can also be manually copied from previous working directory for the purpose of keeping your previous setting


Step 2: Data preparation

Copy all raw particle image files (prefer Imagic formation) into a subfolder (i.g. "data").

Set the ctf parameters into the header of the particle images

mp-setCTF.py "data/*.hed" (needs eman1 ctfparm.txt file)

If eman2's ctf is in header, manually fit an eman1 ctf parameters as a default in ctfparm.txt file; then apply mp-setSameCTF.py "data/*.hed"

Generate a list file with random orientation for all raw particle images, which can also be used for generating random initial 3D model in Step3.

mp-particle2list.py "data/*.img" all-particles.lst


Step 3: Generate random initial model and make initial 2D references

Submit PBS job: mpsa-ini-model.pbs

The pbs script needs to be modified according to different queue system.

The input is the particle list file with random orientations generated in step 2 (i.g. all-particles.lst)

The finished job will output the random 3D initial model: ini-model.mrc

Make initial 2D references from the initial model

project3d ini-model.mrc grid=# randomall out=ini-ref.img

The square of grid# decides the number of 2D projections to be generated; generally set grid to 6 as default.


Step 4: 2D orientation search

Set parameters for 2D alignment by editing mp-config.ini file

Partial of the parameters of the configure file are list as the follows.

[iter1-options] ;section name must include the interationName

resultBaseDir = result ;final result will be

sym=icos ; set particle symmetry: icos, oct, tet, c#, d# [icos]

rawimage = all-particle.lst, listfile

refimage = ini-ref.img ; 2D ref images

numOfRefImages= 7 ; # of reference images

apixRaw = 2.6 ; this option is only for experimental purposes

apixRef = 1.5 ; this option is only for experimental purposes

......More details are described in the last part of the instruction

The raw images can have different pixel size and image size with reference images

Run command: mp-2dalignment to search the orientations and centers of the raw particle images. The shell script, mp-2dalignment will perform two major functions (for non bash shell, the script may need to be modified).

Generate a command file (iter*.cmd) containing a set of command for each particle image

mp-gen2daligncommand.py iter1

Distribute each of the commands to the allocated nodes using client-server model for parallel computing.

mpirun -machinefile machine_nodes2d -np ## python-mpi mp=runcommands.py iter1-coarse.cmd

mpirun, python-mpi and mp-runcommands.py need be specified in full path

The job distribution command, mp-runcommands.py, is implemented through mpi and python-mpi. As a result of this requirement, the provided dependencies: mpich and python-mpi are required.

The executed commands will be saved to iter*.save, and the result will be saved under directory: result/iter*. The script, iter*.mrg can merge all individual result files of the particles of a CCD frame/micrograph into single files.

Run command: mp-checkprogress result/iter1 for checking the progress and the results of orientations and centers of the raw particle images.


Step 5: 3D reconstruction

Generate a list file, iter1-coarse.lst, from the result of 2D alignment

The first part of the shell script, mp-3dreconstruction (if non-bash shell, it may need to be modified accordingly), extracts all particles' centers and orientations from the result of current iteration and save them as a list, iter1-coarse.lst


Run 3D reconstruction command to build 3D density map from the list file, iter1-coarse.lst.

Edit the second part of shell script, mp-3dreconstruction, to set the reconstruction parameters properly.

mpirun -machinefile machine_nodes3d -np ## mp-3dbuilder iter1-coarse.lst out=iter1-coarse.mrc,2.6,700 apix=3.1 sym=icos mask=700A mpipkgsize=3000000 usecenter flipphase wiener3d=scattering.sf > log-3dbuilder.log

mpirun and mp-3dbuilder need be specified in full path

If no CTF parameter was set in image's headers, apix needs be specified; otherwise, the pixel size will be set to 1Å/pixel. If CTF has been set in headers, the program will ignore the apix and read the values from the headers.

Particle images can have different defocus and apix values, which can be specified in the input file, iter1-coarse.lst.

Format: particle# filename alt az phi centerX centerY defocus=xxx apix=yyy

Once defocus and apix are given in the input list file, the corresponding defocus and apix of the CTF parameters in a header will take no effect, but the CTF will be automatically adjusted to fit the new apix.

Output map's volume and pixel sizes can be specified by users.

out=iter1-coarse.mrc,2.6,700. Here, the pixel and volume sizes of the output map are specified as 2.6Å and 700 pixels.

mask=700A indicates the input particle images will be applied a soft circle mask with radius 700Å. The unit can also be specified as 'P' or 'p' for pixel. If neither P or A is specified, the default unit will be pixel.

The reconstruction command, mp-3dbuilder, is implemented with mpi. The provided dependencies: mpich is required.


The 2D alignment and 3D reconstruction commands have been integrated in a pbs script file, mpsa.pbs. It may need to be modified according to different queue system.


The finished job will output the reconstructed 3D map: iter1-coarse.mrc, which will be the reference for the next iteration after post processing in Step 6.


Step 6: Post data processing and make new 2D references

Filter and sharpening, and mask can be applied for post processing the reconstructed 3D map . Sample operations are listed as the follows.

Lowpass filter and set structural factor: proc3d iter1-coarse.mrc iter1-coarse-setsflp30.mrc apix=2.6 setsf=scattering.sf lp=30

Mask: proc3d iter1-coarse-setsflp30.mrc iter1-coarse-setsflp30-mask.mrc apix=2.6 automask2=300,1.3,20 imask=230,20

......

Generate new 2D reference images for next iteration

project3d iter1-coarse-setsflp30-mask.mrc grid=# randomall out=iter1-ref.img


The next iteration

Edit the configure file, mp-config.ini, for 2nd iteration

[iter2-options];

refimage = iter1-ref.img ; update the reference to iter1-ref.img

radialStartPoint=3 ; can be increased as the map's resolution improving

radialEndPoint=20 ; can be increased as the map's resolution improving

(Only updated parameters are listed here)

Run mp-2dalignment for orientation search of iter2

Run mp-3dreconstruction for iter2

Post data processing and generate 2D references for the 3rd iteration


Ready for the 3rd iteration, ......


The reconstructed 3D density map should be converged in several iterations for viruses/protein complexes with coarse surface (feature rich) . For smooth surface, it may take more iterations.




Detailed description in setting up the configure file, mp-config.ini

[iter1-options] ;section name must include the interationName

resultBaseDir = result ;final result will be [resultBaseDir/iterationName/]

baseFileName = coarse ;3 file names will be generated .cmd .mrg .save

sym=icos ; set particle symmetry: icos, oct, tet, c#, d# [icos]

rawimage = all-particle.lst, listfile

refimage = ini-ref.img ; 2D ref images

numOfRefImages= 7 ; # of reference images (3 to 12 for icos symmetry)

;apixRaw = 2.59 ; this option is only for experimental purposes

;apixRef = 2.55 ; this option is only for experimental purposes

;overSample=2 ; this option is only for experimental purposes

rMask=120 ; mask radius for raw image in pixel [half image size]; mask center is the particle's physical center. It should be larger than the radii of the particle and smaller than half box size.

phasecorrected= ;if True, the particles phase has been flipped, [False]

scatteringFactorFile=scattering.sf

iniCenterOrientationMode=random ;[random], iniparmfile, headerfile

iniParameterFile= ;if iniparmfile is choosed as an option above, specify the file name here

; The following 4 options are used for the internal control of mpsa optimization algorithm

numOfStartConfigurations=7 ; number of paths/configurations

maxIteration= 2500 ; # of total iterations for this search

numOfRandomJump= 800 ; # of iterations for random jump

numOfFastShrink= 700 ; # of iterations for converging all paths/configurations to the best local minimal state/configuration

orientationSearchRange=35 ; in degree

centerSearchRange=20 ; in pixel

radialStepSize=1.0 ; Sampling space for extracting common line points (in pixel)

radialStartPoint=3 ; search range (in pixel) from lower-end resolution (apix*imagesize/radialStartPoint)

radialEndPoint= 20 ; search range (in pixel) to higher-end resolution (apix*imagesize/radialEndPoint). EndPoint should be gradually increased for later iterations when model converges and resolution improves

searchMode=0 ; 0-->coarse/global search, 1-->refinement, other modes only for experimental purposes

residualMode=2 ; (1-cos(diffPhase))/2, other modes only for experimental purposes

maxNumOfRun=7 ; # of repeating search for the purpose of consistency check

solutionCenterDiffCriterion=2.0 ; consistency criterion for center (in pixel)

solutionOrientationDiffCriterion=2.0 ; consistency criterion for orientation (in degree)

verbose=2 ; screen output level

updateHeader=0 ; update header or not. No need to update header file for using MPSA