nf-core/configs: UNSW Katana HPC Configuration
nf-core pipelines have been successfully configured for use on the UNSW Katana at the University of New South Wales, Sydney, Australia.
To run an nf-core pipeline at UNSW Katana, run the pipeline with -profile singularity,unsw_katana
. This will download and launch the unsw_katana.config
which has been pre-configured with a setup suitable for the unsw katana HPC cluster. Using this profile, a Singularity image containing all of the required software will be used for the pipeline.
Launch an nf-core pipeline on Katana
Prerequisites
Before running the pipeline you will need to load Nextflow and Java, both of which are globally installed modules on Katana. You can do this by running the commands below:
module purge
module load nextflow java
Execution command
nextflow run <nf-core_pipeline>/main.nf \
-profile singularity,unsw_katana \
<additional flags>
# Replace `<nf-core_pipeline>` with the name of the nf-core pipeline you want to run, e.g., `nf-core/proteinfold`.
### Queue limits
This config is defined in line with the [UNSW Katana queue limits](https://docs.restech.unsw.edu.au/using_katana/running_jobs/#job-queue-limits-summary).
Config file
// UNSW Katana nf-core configuration profile
params {
config_profile_name = 'unsw_katana'
config_profile_description = 'UNSW Katana HPC profile provided by nf-core/configs.'
config_profile_contact = '@jscgh'
config_profile_url = 'https://docs.restech.unsw.edu.au/'
}
process {
executor = 'pbspro'
// Load required modules for running Nextflow
beforeScript = 'module load nextflow java'
resourceLimits = [
memory: 248.GB,
cpus: 24,
time: 100.h
]
// Basic GPU node allocation
withLabel:process_gpu {
accelerator = 1
clusterOptions = { "-l select=1:ngpus=1:ncpus=6:mem=125gb" }
containerOptions = '--nv'
}
withLabel:process_single {
cpus = { 1 }
memory = { 4.GB * task.attempt }
time = { 2.h * task.attempt }
}
withLabel:process_low {
cpus = { 2 * task.attempt }
memory = { 12.GB * task.attempt }
time = { 2.h * task.attempt }
}
withLabel:process_medium {
cpus = { 6 * task.attempt }
memory = { 46.GB * task.attempt }
time = { 12.h * task.attempt }
}
withLabel:process_high {
cpus = { 12 * task.attempt }
memory = { 124.GB * task.attempt }
time = { 48.h * task.attempt }
}
withLabel:process_long {
time = { 100.h * task.attempt }
}
withLabel:process_high_memory {
memory = { 248.GB * task.attempt }
}
withLabel:error_ignore {
errorStrategy = 'ignore'
}
withLabel:error_retry {
errorStrategy = 'retry'
maxRetries = 1
}
}
// Set the cache directory for Singularity and Apptainer
singularity {
autoMounts = true
cacheDir = "/srv/scratch/${USER}/.images"
}
apptainer {
enabled = true
autoMounts = true
cacheDir = "/srv/scratch/${USER}/.images"
}
// Docker is not supported on this cluster
docker {
enabled = false
}
Pipeline configs
profiles {
unsw_katana {
params {
config_profile_name = 'proteinfold/unsw_katana'
config_profile_contact = '@jscgh'
config_profile_description = 'nf-core/proteinfold UNSW Katana profile provided by nf-core/configs'
}
// The proteinfold images are predownloaded and stored in the singularity library directory
apptainer.libraryDir = "/srv/scratch/sbf-pipelines/proteinfold/singularity"
singularity.libraryDir = "/srv/scratch/sbf-pipelines/proteinfold/singularity"
cleanup = true
process {
executor = 'pbspro'
withName: 'RUN_HELIXFOLD3' {
clusterOptions = { "-l select=1:ngpus=1:ncpus=6:mem=62gb:gpu_model=A100" } // Using A100 GPU for compatibility
}
withName: 'RUN_ESMFOLD' {
clusterOptions = { "-l select=1:ngpus=1:ncpus=6:mem=62gb:gpu_model=A100" } // Using A100 GPU for compatibility
}
withName: 'RUN_ALPHAFOLD2_PRED|RUN_ALPHAFOLD2' {
clusterOptions = { "-l select=1:ngpus=1:ncpus=8:mem=250gb:gpu_model=H200" } // Using H200 GPU for highest performance
}
}
}
}