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 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
shiny_2sets.star 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
myrelionjob.sh. You can then submit it via
sbatch myrelionjob.sh (replace "myrelionjob.sh" with whatever name you gave your submit script).
#!/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"