Skip to content


A powerful biomacromolecular structure determination package for CryoEM applications.

RELION requires an environment module

In order to use RELION, you must first load the appropriate environment module:

module load relion

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.

Using RELION on HPC Systems#

RELION can be used both interactively via the GUI and non-interactively via a SLURM Script. Non-interactive mode is recommended for long-running jobs.

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. The RELION module automatically loads the GNU 8.5, OpenMPI 4.1.0 and CUDA 11.8 modules as these are required to run the program in parallel with GPU support.

Starting the RELION GUI#


You will need to either use Open OnDemand or start a graphical SSH connection to use the Relion GUI

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:

Relion GUI

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. 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

#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"