Guppy

From UFRC
Jump to navigation Jump to search

Description

guppy website  

Guppy is a data processing toolkit that contains the Oxford Nanopore Technologies' basecalling algorithms, and several bioinformatic post-processing features.

Early downstream analysis components such as barcoding/demultiplexing, adapter trimming and alignment are contained within Guppy. Furthermore, Guppy now performs modified basecalling (5mC, 6mA and CpG) from the raw signal data, producing an additional FAST5 file of modified base probabilities.

Environment Modules

Run module spider guppy to find out what environment modules are available for this application.

System Variables

  • HPC_GUPPY_DIR - installation directory

Additional Information

Warning: Guppy can be orders of magnitude faster when using GPUs for basecalling compared to pure CPU runs. See GPU Access for more details on how to request GPUs on HiPerGator. Here's a sample Guppy GPU script you might want to use as a starting point:

GPU Job Example

Expand to view GPU script sample.

#!/bin/bash
#SBATCH --job-name=guppy
#SBATCH --output=guppy_%j.out
#SBATCH --time=12:00:00
#SBATCH --ntasks=1
#SBATCH --mem=10GB
#SBATCH --mail-type=END,FAIL
#SBATCH --mail-user=MYEMAIL@ufl.edu
#SBATCH --partition=gpu
#SBATCH --gpus=geforce:1
date;hostname;pwd

module purge
module load cuda guppy

guppy_basecaller \
    --recursive \
        --input_path cool_project/minion_input/fast5 \
        --save_path cool_project/minion_output/basecalls \
        --flowcell FLO-MIN107 --kit SQK-LSK109 \
        --device "auto"

date

Use jobnvtop and jobhtop tools from the UFRC environment module for a real-time look at GPU and CPU processes on the job node.

CPU Job Example

If you don't have access to GPUs then set

#SBATCH --ntasks=1
#SBATCH --cpus-per-task=X

in the resources request section and use the corresponding guppy_basecaller arguments to set the number of basecallers and threads to use CPUs:

--cpu_threads_per_caller X --num_callers 1

where X is the same numbers in both sections. You can parallelize callers if appropriate.