-
Notifications
You must be signed in to change notification settings - Fork 1
/
CharONT2.conf
184 lines (159 loc) · 7.03 KB
/
CharONT2.conf
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
/*
* -------------------------------------------------
* MaestSi/CharONT2 Nextflow config file
* -------------------------------------------------
*/
params {
// Path to fastq files, use wildcards to select multiple samples
fastq_files = "/path/to/samples*fastq"
// Path to a folder where to store results
results_dir = "/path/to/results_dir"
//PCRThr is the identity threshold for in-silico PCR
PCRThr = 0.8
//primerSeqOne and primerSeqTwo are sequences of primers used for in-silico PCR
primerSeqOne = "sequence of interest"
primerSeqTwo = "sequence of interest"
//scripts_dir is the directory containing all scripts
scripts_dir = "/path/to/scripts_dir"
//target_reads_consensus defines the maximum number of reads used for consensus calling
target_reads_consensus = 200
//target_reads_polishing defines the maximum number of reads used for consensus polishing
target_reads_polishing = 200
//max_reads_preliminary defines the maximum number of reads used for preliminary clustering and consensus calling
max_reads_preliminary = 100
//identity threshold for clustering preliminary allele assembly
clustering_id_threshold=0.85
//MAFFT plurality value: minimum fraction of aligned reads supporting a basis for including it in the preliminary consensus
plurality=0.15
//minimum minor allele frequency; if less than min_maf*100% of reads are assigned to Allele //2, the sample is assumed homozygous
min_maf=0.2
//num_alleles represents the number of expected alleles; use num_alleles="auto" for automatic num_alleles detection based on Silhouette coefficient
num_alleles=2
//label as candidate outliers reads with score > 3rd_QR + IQR_outliers_coef_precl*IQR or score < 1st_QR - IQR_outliers_coef_precl*IQR
IQR_outliers_coef_precl=3
//label as outliers reads with score > 3rd_QR + IQR_outliers_coef*IQR or score < 1st_QR - IQR_outliers_coef*IQR; IQR is computed within each cluster
IQR_outliers_coef=3
//set fast_alignment_flag=1 if you want to perform fast multiple sequence alignment; otherwise set fast_alignment_flag=0
fast_alignment_flag=1
//minimum number of soft-clipped bases to be considered as a DEL or INS
min_clipped_len=50
//sd_noise_score is the standard deviation of gaussian-distributed noise with zero mean added to score
sd_noise_score=0.2
//primers_length defines how many bases are trimmed from consensus sequences
primers_length=0
//medaka model
medaka_model="r941_min_sup_g507"
help = false
// Flags to select which process to run
inSilicoPCR = true
preliminaryConsensusCalling = true
readsAssignment = true
draftConsensusCalling = true
consensusPolishing = true
trfAnnotate = true
}
profiles {
singularity {
singularity.enabled = true
singularity.autoMounts = false
//singularity.cacheDir = "/path/to/singularity/cacheDir" // if commented, work dir is going to be used
process {
cpus = 1
executor = 'pbspro' // set to 'local' if you are not using a queue management system
queue = 'workq'
perJobMemLimit = true
queueStatInterval = '1 ms'
pollInterval = '1 ms'
container = 'maestsi/charont:latest'
containerOptions = '--bind /home:/home' // adjust according to which directory you wish to make accessible to singularity
withName:inSilicoPCR {
cpus = { params.inSilicoPCR ? 1 : 1 }
memory = { params.inSilicoPCR ? 10.GB + (5.GB * (task.attempt-1)) : 1.GB }
errorStrategy = { task.exitStatus == 137 ? 'retry' : 'terminate' }
maxRetries = 3
}
withName:preliminaryConsensusCalling {
cpus = { params.preliminaryConsensusCalling ? 1 : 1 }
memory = { params.preliminaryConsensusCalling ? 30.GB + (5.GB * (task.attempt-1)) : 1.GB }
errorStrategy = { task.exitStatus == 137 ? 'retry' : 'terminate' }
maxRetries = 3
}
withName:readsAssignment {
cpus = { params.readsAssignment ? 4 : 1 }
memory = { params.readsAssignment ? 30.GB + (5.GB * (task.attempt-1)) : 1.GB }
errorStrategy = { task.exitStatus == 137 ? 'retry' : 'terminate' }
maxRetries = 3
}
withName:draftConsensusCalling {
cpus = { params.draftConsensusCalling ? 4 : 1 }
memory = { params.draftConsensusCalling ? 30.GB + (5.GB * (task.attempt-1)) : 1.GB }
errorStrategy = { task.exitStatus == 137 ? 'retry' : 'terminate' }
maxRetries = 3
}
withName:consensusPolishing {
cpus = { params.consensusPolishing ? 4 : 1 }
memory = { params.consensusPolishing ? 20.GB + (2.GB * (task.attempt-1)) : 1.GB }
errorStrategy = { task.exitStatus == 137 ? 'retry' : 'terminate' }
maxRetries = 3
}
withName:trfAnnotate {
cpus = { params.trfAnnotate ? 4 : 1 }
memory = { params.trfAnnotate ? 20.GB + (5.GB * (task.attempt-1)) : 1.GB }
errorStrategy = { task.exitStatus == 137 ? 'retry' : 'terminate' }
maxRetries = 3
}
}
}
docker {
docker.enabled = true
docker.autoMounts = false
//docker.cacheDir = "/path/to/docker/cacheDir" // if commented, work dir is going to be used
process {
cpus = 1
executor = 'local'
container = 'maestsi/charont:latest'
containerOptions = '-v /Users/:/Users' // adjust according to which directory you wish to make accessible to docker
withName:inSilicoPCR {
cpus = { params.inSilicoPCR ? 1 : 1 }
memory = { params.inSilicoPCR ? 15.GB + (5.GB * (task.attempt-1)) : 1.GB }
errorStrategy = { task.exitStatus == 137 ? 'retry' : 'terminate' }
maxRetries = 3
}
withName:preliminaryConsensusCalling {
cpus = { params.preliminaryConsensusCalling ? 4 : 1 }
memory = { params.preliminaryConsensusCalling ? 15.GB + (5.GB * (task.attempt-1)) : 1.GB }
errorStrategy = { task.exitStatus == 137 ? 'retry' : 'terminate' }
maxRetries = 3
}
withName:readsAssignment {
cpus = { params.readsAssignment ? 4 : 1 }
memory = { params.readsAssignment ? 15.GB + (5.GB * (task.attempt-1)) : 1.GB }
errorStrategy = { task.exitStatus == 137 ? 'retry' : 'terminate' }
maxRetries = 3
}
withName:draftConsensusCalling {
cpus = { params.draftConsensusCalling ? 4 : 1 }
memory = { params.draftConsensusCalling ? 15.GB + (5.GB * (task.attempt-1)) : 1.GB }
errorStrategy = { task.exitStatus == 137 ? 'retry' : 'terminate' }
maxRetries = 3
}
withName:consensusPolishing {
cpus = { params.consensusPolishing ? 4 : 1 }
memory = { params.consensusPolishing ? 15.GB + (2.GB * (task.attempt-1)) : 1.GB }
errorStrategy = { task.exitStatus == 137 ? 'retry' : 'terminate' }
maxRetries = 3
}
withName:trfAnnotate {
cpus = { params.trfAnnotate ? 1 : 1 }
memory = { params.trfAnnotate ? 15.GB + (5.GB * (task.attempt-1)) : 1.GB }
errorStrategy = { task.exitStatus == 137 ? 'retry' : 'terminate' }
maxRetries = 3
}
}
}
}
tower {
enabled = false
endpoint = '-'
accessToken = 'insert access token'
}