-
Notifications
You must be signed in to change notification settings - Fork 1
/
nextflow.config
127 lines (106 loc) · 5.4 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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
params {
/* Input and output */
genomes = "data/*.fa" // input genomes (FASTA format)
outdir = "./results" // output directory
/* Quality assessment */
busco_db = 'none' // BUSCO db path for offline mode. 'none': download from Internet
lineage = 'auto-euk' // 'auto', 'auto-prok', 'auto-euk', a dataset name (e.g 'fungi' or
// 'fungi_odb10') or a path (e.g. '/home/user/fungi_odb10')
/* Genomes filtering */
skip_filtering = false // skip genome filtering
min_completeness = 50 // discard sequences with less than 50% completeness
max_contamination = 10 // discard sequences with more than 10% contamination
/* Dereplication */
skip_dereplication = false // skip the dereplication step
ani_thr = 0.99 // ANI threshold for dereplication (> 0.90)
min_overlap = 0.30 // minimum aligned fraction
/* BUSCO SCG MSA */
/* '--lineage' must be different from 'auto', 'auto-prok' and 'auto-euk' */
skip_msa = false // skip BUSCO SCG MSA
/* Phylogenetic tree inference */
/* '--lineage' must be different from 'auto', 'auto-prok' and 'auto-euk' */
/* '--skip_msa' must be 'false' */
skip_tree = false // skip phylogenetic tree inference
max_ncols = 5000 // maximum number of MSA columns (taken randomly) for tree inference
seed_cols = 42 // random seed
raxml_mode = "default" // RAxML mode , "default": default RAxML tree search algorithm or
// "rbs": rapid bootstrapping full analysis
raxml_nsearch = 10 // "default" mode only: number of inferences on the original alignment using
// distinct randomized MP trees (if 10 is specified, RAxML will compute
// 10 distinct ML trees starting from 10 distinct randomized maximum parsimony
// starting trees)
raxml_nboot = "autoMRE" // "rbs" mode only: bootstrap convergence criterion or number of bootstrap
// searches (see -I and -#/-N options in RAxML)
/* Gene prediction */
skip_genepred = false // skip gene prediction using MetaEuk (see also the mmseqs_db parameter)
/* Taxonomic classification */
skip_taxonomy = false // skip taxonomy classification using MMseq2 (see also the mmseqs_db parameter)
/* MMseq2 database for gene prediction and taxonomic classification */
mmseqs_db = "none" // MMseqs2 database path. 'none': download from Internet
// see the mmseqs_db_name parameter.
mmseqs_db_name = "UniProtKB/Swiss-Prot" // used if if mmseqs_db_path = 'none'. The available
// databases are listed at
// https://github.com/soedinglab/mmseqs2/wiki#downloading-databases.
/* eggNOG options */
skip_eggnog = false // skip eggNOG annotation
eggnog_db = "none" // eggNOG v5.0 db dir. 'none': download from Internet
eggnog_db_mem = false // store the eggNOG sqlite DB into memory (~44GB memory
// required). This increase the annotation speed.
/* ITSx options */
skip_itsx = false // skip ITSx extraction (SSU, ITS1, 5.8S, ITS2 and LSU)
/* Limits */
max_cpus = 8
max_memory = 240.GB
max_time = 240.h
}
if( params.eggnog_db_mem ) {
eggnog_mapper_startmem = 48.GB
}
else {
eggnog_mapper_startmem = 12.GB
}
/* Docker options */
docker.enabled = true
docker.runOptions = '-u \$(id -u):\$(id -g)'
/* Import process configuration file*/
includeConfig 'process.config'
/* Manifest */
manifest {
homePage = 'metashot.github.io'
description = 'An Automated Workflow for Eukaryotic MAGs'
mainScript = 'main.nf'
version = '1.1.0'
}
/* Functions */
def check_max(obj, max) {
// see https://github.com/nextflow-io/nextflow/issues/640
if( obj instanceof nextflow.util.MemoryUnit ) {
try {
def max_type = max as nextflow.util.MemoryUnit
return obj.compareTo(max_type) == 1 ? max_type : obj
}
catch( all ) {
println "ERROR: invalid max memory '${max}', using default value: $obj"
return obj
}
}
if( obj instanceof nextflow.util.Duration ) {
try {
def max_type = max as nextflow.util.Duration
return obj.compareTo(max_type) == 1 ? max_type : obj
}
catch( all ) {
println "ERROR: invalid max time '${max}', using default value $obj"
return obj
}
}
if( obj instanceof Integer ) {
try {
return Math.min(obj, max as int)
}
catch( all ) {
println "ERROR: invalid max cpus '${max}', using default value $obj"
return obj
}
}
}