Software Category



RELION is a powerful hybrid parallel software package with GPU support for CryoEM structure determination. The program uses an empirical bayesian approach to determine biomacromolecular structures from 2D and 3D datasets.

Getting Started with RELION

In order to learn to use RELION itself, please refer to the RELION Single Particle Tutorial on the Official Documentation.

A great number of other RELION tutorials can be found across the internet as well including the following:

Using RELION on HPC Systems

RELION can be used both interactively via the GUI and non-interactively via a SLURM Script. SLURM scripts are recommended for long-running jobs. In order to use RELION, you only need to load the RELION module by the command module load relion. This will load the current default version of RELION into your path. From here, you can run any of the RELION programs or you can run the relion command itself to start the GUI. In the background, the RELION module loads the GNU 8.3.1, OpenMPI 4.1.0 and CUDA 11.1 modules as these are required to run the program in parallel with GPU support.

Starting the RELION GUI

In order to start the RELION GUI, from which you can submit jobs, first navigate on the login node to a RELION work directory you have created. Then run the RELION command:

cd ~/my_relion_workdir ## Change this to the path to your relion work directory

module purge
module load relion


This will start the RELION GUI as shown below:

Example Submit Script for RELION

The following submit script is an example which uses the relion_refine_mpi subprogram with data from the tutorial dataset which can be found at the RELION Tutorial Site.

This script may require significant modification for optimal performance on the HPC system and may require modification for use with other RELION subprograms other than the relion_refine_mpi program shown in the example.  However, this is a good starting point.  This test script was prepared, in part, with the assistance of UF Research Computing.

Once you have prepared your job script, be sure to save it as a filename for example You can then submit it via sbatch (replace "" with whatever name you gave your submit script).

#SBATCH --job-name=relion_refine_TEST
#SBATCH --output=relion-%j.out
#SBATCH --error=relion-%j.err
#SBATCH --partition=backfill2  ## Modify this for your queue
#SBATCH --mail-type=ALL
#SBATCH --nodes=1
#SBATCH --ntasks=9
#SBATCH --cpus-per-task=3
#SBATCH --ntasks-per-socket=5
#SBATCH --mem-per-cpu=3000mb
#SBATCH --distribution=cyclic:block
#SBATCH --gres=gpu:4
#SBATCH --time=4:00:00

module purge
module load relion


T1=$(date +%s)
srun --mpi=pmix_v1 $RELION \
  --o Particles/ \  # MODIFY THIS FOR THE INPUT DATA
  --i class3d \
  --ref \
  --firstiter_cc \
  --ini_high 40 \
  --dont_combine_weights_via_disc \
  --pool 50 \
  --ctf \
  --ctf_corrected_ref \
  --iter 1 \
  --tau2_fudge 4 \
  --particle_diameter 176 \
  --K 5 \
  --flatten_solvent \
  --zero_mask \
  --strict_highres_exp 5 \
  --oversampling 1 \
  --healpix_order 2 \
  --offset_range 5 \
  --offset_step 2 \
  --sym C2 \
  --norm \
  --scale  \
  --gpu ""

T2=$(date +%s)
ELAPSED=$((T2 - T1))
echo "Elapsed Time = $ELAPSED"