(Distribution version)
Last time synchronized with upstream repository on 2023-Jan-19.
SUSAN
is a low-level/mid-level framework for fast Subtomogram Averaging (StA) for CryoEM. It uses susbtacks instead of subtomograms that are cropped on-the-fly from the aligned stacks to reduce the computational complexity and to increase the overall performace of the StA pipeline.
SUSAN
was designed to be modular, flexible and fast. It is conformed by two layers:
- Low-level layer: Set of executables that perform the demanding computations. They were written in
C++
using a minimal set of dependencies:Eigen
, as a header-only mathemetical engine,CUDA
for GPU acceleration, andPThreads
for lightweight multi-threading. Optionally, they can be built withMPI
support to run in multi-node environments. - Mid-level layer: Set of wrappers to the previous layer that simplify its use and provides a set of non time-critical operations. It is used to create the workflows or pipelines as scripts with wrappers for
Matlab
and forPython
. TheMatlab
one was designed to complement DYNAMO, while thePython
one is provided to enable integration to other pipelines based on this language.
This is a fork of the SUSAN
original repository which was developed by Ricardo Miguel Sanchez Loyaza in the Independent Research Group (Sofja Kovaleskaja) of Dr. Misha Kudryashev at the Department of Structural Biology at MPIBP (Max Planck Institute of Biophysics) in Frankfurt am Main, Germany. Currently, he is an ARISE fellow at the Kreshuk group at the European Molecular Biology Laboratory (EMBL) in Heidelberg, Germany.
This fork repository was created for SUSAN
usage support by members of the established in August 2021
In situ Structural Biology Group of Dr. Misha Kudryashev at the MDCMM (Max Delbrück Center of Molecular Medicine) in Berlin, Germany.
SUSAN
is an Open Source project (AGPLv3.0)
Repository branches are:
main
- updated with upstream repository version;main_last
- the version before the latest update with upstream repository had been made;- other branches - development, synchronization with upstream repository, etc.
(see the latest update date in the top of this page for the current branch)
CUDA
.Eigen
: As this is needed at compilation time only, there is no need to install it in the system. If not provided by the building environment, it can be installed locally following this instructions.gcc
.cmake
.git
.
OpenMPI
, or equivalent, for multi-node supportMatlab
We assume that SUSAN
will be installed in the LOCAL_SUSAN_PATH
folder (LOCAL_SUSAN_PATH
can be /home/user/Software/
, for example)
- Install the desired dependencies.
- Clone
SUSAN
toLOCAL_SUSAN_PATH
:cd LOCAL_SUSAN_PATH git clone https://github.com/KudryashevLab/SUSAN.git
- (Optional) Install
Eigen
:cd LOCAL_SUSAN_PATH/SUSAN/extern git clone https://gitlab.com/libeigen/eigen.git eigen cd eigen mkdir build cd build cmake ../ -DCMAKE_INSTALL_PREFIX=../../eigen_lib make install
- (Optional) Install
- Compile
SUSAN
:Note: Thecd LOCAL_SUSAN_PATH/SUSAN mkdir bin cd bin cmake ../ make -j
cmake
procedure detects the availabilty ofOpenMPI
andMatlab
and compiles their functionalities accordingly.
- (Optional) To be able to install
SUSAN
as aPython
package:This will install the compiled binaries in themake prepare_python
bin
folder of thePython
package.
Besides the standard libraries, the SUSAN
module for Python
has only two dependencies: NumPy
and Numba
. Install them if needed:
LOCAL_SUSAN_PATH
must be added to path first and then the susan
module can be imported. On the Python
command line, or on a Python
script:
import sys
sys.path.insert(1,'LOCAL_SUSAN_PATH')
import susan
After executing the optional steps for the Python
module, it can be installed using pip
and the provided setup.py file. In the LOCAL_SUSAN_PATH
execute:
pip install .
After this step, the module susan
should be available to be imported.
LOCAL_SUSAN_PATH
must be added to path. On the Matlab
command line, or on a Matlab
script:
addpath LOCAL_SUSAN_PATH/SUSAN
SUSAN
can be built and installed inside a conda
environment:
- (Optional) Create a new
conda
environment:conda create -n susan_env
- Activate the working environment, for this example we will use
susan_env
conda activate susan_env
- Install the packages needed for building
SUSAN
conda install -c conda-forge git cmake make cxx-compiler eigen cudatoolkit-dev
- (Optional) Install
openmpi
:conda install openmpi
- Clone
SUSAN
toLOCAL_SUSAN_PATH
(For example,LOCAL_SUSAN_PATH
can be~/Software/
), compile it and prepare it for thePython
installation:cd LOCAL_SUSAN_PATH git clone https://github.com/KudryashevLab/SUSAN.git mkdir SUSAN/bin cd SUSAN/bin cmake ../ make -j make prepare_python cd ..
- Install the packages in the current environment
pip install .
After these step the module susan
should be available.
A tutorial is available for Python
and Matlab
for the mixedCTEM
dataset from the EMPIAR-10064. It is assumed that the wget
and gunzip
commands and the IMOD
framework are installed in the system.
- Download the dataset (uses
wget
):cd LOCAL_SUSAN_PATH/SUSAN/tutorials/empiar_10064/data ./download_data.sh
- Create the aligned stacks (uses
IMOD
):./create_binned_aligned_stacks.sh
- Uncompress the initial reference (uses
gunzip
):cd LOCAL_SUSAN_PATH/SUSAN/tutorials/empiar_10064 gunzip emd_3420_b4.mrc.gz
Depending on the system setup:
- For
Matlab
use workflow.m. - For
Python
use workflow.ipynb (as a Jupyter Notebook).