-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathnextflow.config
107 lines (94 loc) · 2.47 KB
/
nextflow.config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
profiles {
standard {
process.executor = 'local'
}
cleanup {
cleanup = true
}
cluster_old {
process {
executor = 'slurm'
queue = 'queue0'
errorStrategy = { task.exitStatus == 143 ? 'retry' : 'terminate' }
//errorStrategy 'retry'
maxRetries = 3
memory = { 8.GB * task.attempt }
scratch = true
withLabel: 'low_mem' {
memory = { 1.GB * task.attempt }
}
withLabel: 'high_mem' {
memory = { 32.GB * (2**(task.attempt - 1)) }
}
// clusterOptions: "--nodeList hpcA04,hpcA05,hpcA08,hpcA09,hpcA10,hpcA11"
clusterOptions: "--exclude hpcz-0007"
}
}
cluster {
process {
executor = 'slurm'
queue = 'hpcz-2'
errorStrategy = { task.exitStatus in [137, 143] ? 'retry' : 'terminate' }
//errorStrategy = { task.exitStatus in [137, 143] ? 'retry' : 'finish' }
//errorStrategy 'retry'
maxRetries = 4
memory = { 8.GB * task.attempt }
scratch = true
//clusterOptions: "--exclude hpcz-0009"
//clusterOptions: "--exclude hpcz-0041,hpcz-0042"
// Hopefully causes nextflow to spread jobs out more
// Unclear if this actually anything though, the way we're using it
//clusterOptions: "--distribution=cyclic --exclude=hpcz-0032"
withLabel: 'low_mem' {
memory = { 1.GB * task.attempt }
}
withLabel: 'high_mem' {
// Doubles each time
memory = { 48.GB * (2**(task.attempt - 1)) }
}
//clusterOptions: "--exclude hpcz-0035,hpcz-0040"
}
}
ignore_process_failures {
//process.errorStrategy = { task.exitStatus == 143 ? 'retry' : 'ignore' }
process.errorStrategy = 'ignore'
}
pipefail {
// Untested, but should give better resiliency to shell scripts we run
// The risk is that we have some 'allowable' pipe failures that will cause our jobs to fail when they shouldn't
// (e.g: `process1 | head | ...` may cause process1 to exit with error code)
process.shell = ['/bin/bash', '-ueo','pipefail' ]
}
debug {
process.scratch = false
}
singularity {
singularity.enabled = true
}
docker {
process.container = "fwip/stampipes:latest"
docker {
enabled = true
fixOwnership = true
temp = 'auto'
docker.runOptions = '-u $(id -u):$(id -g)'
}
}
apptainer {
singularity {
enabled = true
}
}
}
report {
enabled = true
}
trace {
enabled = true
}
timeline {
enabled = true
}
dag {
enabled = true
}