Skip to content

RELION

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.

RELION can be accessed as an interactive app or through the command-line.

Accessing RELION as an Interactive App#

First, you must upload your data onto the HPC. Or, if your files are small, you can upload them directly using Open OnDemand

  1. Log into Open OnDemand
  2. In the top navigation bar, select "Interactive Apps" and then from the drop down select, "RELION".
  3. Select a Slurm Account/partition that includes GPU nodes (either backfill2, gpu_q, or an owner account/partition.).
  4. Complete the remaining sections of the job submission form.
    • Ensure that the "Amount of Memory" is at least 128 GB and that you select a minimum of one GPU.
    • Under "Path to RELION Project Directory", type the full path to the directory you plan to use for your RELION project. RELION will be launched from within this directory. If you do not specify this, the default will be your home directory.
  5. Click "Launch" to queue your job.
  6. When your interactive job has started, click "Launch RELION".
  7. A new tab will open, and the RELION GUI will launch shortly after.

Motion Correction with UCSF MotionCor2#

When performing motion correction using UCSF MotionCor2 on the HPC system, the following settings must be configured correctly:

From the top left menu. * From the I/O Tab Configuration in the top left corner: - "Write Output in float16": Set to "No". - "Save Sum of Power Spectra": Set to "No". * From the Motion Tab Configuration in the top left corner: - "Use RELION's Own Implementation": Set to "No". - "Use UCSF MotionCor2 Executable": With the previous option set to "No", you can specify the executable path. Enter the following path: /gpfs/research/software/motioncor2/MotionCor2_1.6.4_Cuda118_Mar312023.

These settings ensure that motion correction is handled effectively and without conflicts.

Accessing RELION through the Command-Line#

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#

Note

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:

1
2
3
4
cd ~/my_relion_workdir ## Change this to the path to your relion work directory
module purge
module load relion
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 shiny_2sets.star 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 "myrelionjob.sh." You can then submit it via sbatch myrelionjob.sh.

#!/bin/bash
#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
RELION="relion_refine_mpi"
T1=$(date +%s)
srun --mpi=pmix_v1 $RELION \
  --o Particles/shiny_2sets.star \  # MODIFY THIS FOR THE INPUT DATA
  --i class3d \
  --ref emd_2660.map:mrc \
  --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  \
  --j $SLURM_CPUS_PER_TASK \
  --gpu ""
T2=$(date +%s)
ELAPSED=$((T2 - T1))
echo "Elapsed Time = $ELAPSED"