nf-core/configs: Fred Hutch Cancer Center Configuration
Configuration file to run nf-core pipelines on the cluster of the Fred Hutchinson Cancer Center. Note that the default workDir will be based on your $TMPDIR if available (e.g. nextflow is launched in an interactive session). This is to avoid large tmp file buildup in hidden nextflow directories, but may prevent resuming pipelines. You can override this by setting -work-dir <your directory> at the command line when calling nextflow run.
Before running the pipeline
You need to have Nextflow and Apptainer available in your path. The easiest way to do this is through modules.
module load Nextflow
module load ApptainerQuick start
nextflow run -profile fred_hutch ...Additional resources
https://sciwiki.fredhutch.org/datascience/using_workflows/ https://sciwiki.fredhutch.org/compdemos/nextflow/
Config file
params {
config_profile_name = 'Fred Hutch'
config_profile_description = 'Fred Hutch Cancer Center HPC profile'
config_profile_contact = 'dgratz@fredhutch.org'
config_profile_url = 'https://sciwiki.fredhutch.org/'
// Same as resourceLimits, but for older pipelines
max_memory = 700.GB
max_cpus = 36
max_time = 720.h
}
scratchDir = "${System.getenv('TMPDIR')}" ? System.getenv('TMPDIR') : null
workDir = "${System.getenv('TMPDIR')}" ? System.getenv('TMPDIR') : null
process {
executor = 'slurm'
// clusterOptions = {} // If we want default slurm configs
queue = { task.time > 12.h ? 'campus-new' : 'short' }
maxRetries = 2
errorStrategy = { task.exitStatus in [12,104,137,134,139,140,141,143,151,247] ? 'retry' : 'finish' }
resourceLimits = [
memory: 700.GB,
cpus: 36,
time: 720.h
]
// Per the scicomp wiki, memory requests don't mean much on our system. Use CPUs as a proxy for mem requests
// Request 1 CPU for each 4 GB of memory
// https://sciwiki.fredhutch.org/scicomputing/compute_jobs/#memory
cpus = { 5 * task.attempt }
memory = { 20.GB * task.attempt }
time = { 24.h * task.attempt }
withLabel:process_single {
cpus = { 2 * task.attempt }
memory = { 8.GB * task.attempt }
time = { 12.h * task.attempt }
}
withLabel:process_low {
cpus = { 4 * task.attempt }
memory = { 16.GB * task.attempt }
time = { 24.h * task.attempt }
}
withLabel:process_medium {
cpus = { 16 * task.attempt }
memory = { 56.GB * task.attempt }
time = { 72.h * task.attempt }
}
withLabel:process_high {
cpus = 32
memory = { 128.GB * task.attempt }
time = { 120.h * task.attempt }
}
withLabel:process_long {
cpus = { 12 * task.attempt }
memory = { 96.GB * task.attempt }
time = { 336.h * task.attempt }
}
}
executor {
// How many jobs can be submitted at once
queueSize = 16
// Maximum jobs per second
submitRateLimit = "10/1sec"
}
apptainer {
enabled = true
// Checks if TMPDIR is defined in the environment before mounting to avoid breaks
runOptions = "--containall " + (System.getenv('TMPDIR') ? "-B \$TMPDIR" : "")
}
// clean the generated files in the working directory
// having this as true sometimes breaks things
cleanup = false