This is an old revision of the document!
ISAC (Iterative Stable Alignment and Clustering) is a 2D classification algorithm. It sorts a given stack of cryo-EM particles into different classes that share the same view of a target protein. ISAC is based around iterations of alternating equal size k-means clustering and repeated 2D alignment routines.
Yang, Z., Fang, J., Chittuluru, J., Asturias, F. J. and Penczek, P. A. (2012) Iterative stable alignment and clustering of 2D transmission electron microscope images. Structure 20, 237–247.
nvcc --version
in your terminal; the resulting output should list the version of your installed CUDA compilation tools.which sphire
in your terminal; the resulting output should give you the path to your SPHIRE installation (the path should indicate a version number of 1.3 or higher).Before you start, make sure your SPHIRE environment is activated.
How to activate your SPHIRE environment:
How to activate your SPHIRE environment:
conda env list
conda activate NAME_OF_YOUR_ENVIRONMENT
or
source activate NAME_OF_YOUR_ENVIRONMENT
It will depend on your system and Anaconda installation which one of these you will have to use.
GPU ISAC comes with a handy installation script that can be used as follows:
./install.sh
All done!
An example call to use GPU ISAC looks as follows:
mpirun /path/to/sxisac2_gpu.py bdb:path/to/stack path/to/output --CTF -–radius=160 --target_radius=29 --target_nx=76 --img_per_grp=100 --minimum_grp_size=60 --thld_err=0.7 --center_method=0 --gpu_devices=0,1
Using the following mix of both mandatory and optional parameters (see below to learn which is which):
mpirun /path/to/sxisac2_gpu.py bdb:path/to/stack path/to/output --CTF -–radius=160 --target_radius=29 --target_nx=76 --img_per_grp=100 --minimum_grp_size=60 --thld_err=0.7 --center_method=0 --gpu_devices=0,1
[ ! ] - Mandatory parameters in the GPU ISAC call:
mpirun
is not a GPU ISAC parameter, but is required to launch GPU ISAC using MPI parallelization (GPU ISAC uses both CPU/MPI and GPU/CUDA parallelization)./path/to/sxisac2_gpu.py
is the path to your sxisac2_gpu.py file. If you followed these instructions it should be your/installation/path/gpu_isac_2.2/bin/sxisac2_gpu.py
.path/to/stack
is the path to your input .bdb stack. If you prefer to use an .hdf stack, simply remove the bdb:
prefix.path/to/output
is the path to your preferred output directory.--radius=160
is the radius of your target particle (in pixels) and has to be set accordingly.[?] - Optional parameters in the GPU ISAC call:
--gpu_devices
you can set what GPUs to use. This example uses two GPUs with id values 0 and 1, respectively. You can check the id values of your available GPUs by executing nvidia-smi
in your terminal (GPUs are sorted by capability, with 0 being your strongest GPU).--img_per_grp
to limit the maximum size of individual classes. Empirically, a class size of 100-200 (30-50 for negative stain) particles has been proven successful when dealing with around 100,000 particles.--minimum_grp_size
to limit the minimum size of individual classes. In general, this value should be around 50-60% of your maximum class size.GPU ISAC produces a multitude of output files that can be used to analyze the success of running the program, even while it is still ongoing. These include the following:
path/to/output/mainXXX/generationYYY
for the .hdf
files to that contain any newly produced class averages.processed_images.txt
files. These contain the indices of all processed particles and can be used to determine how many particles GPU ISAC did account for during classification.path/to/output/ordered_class_averages.hdf
.