-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.nf
More file actions
135 lines (105 loc) · 3.04 KB
/
main.nf
File metadata and controls
135 lines (105 loc) · 3.04 KB
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
nextflow.enable.dsl = 2
def resolveManifestPath(String commandLine) {
if (!commandLine) {
return null
}
def matcher = commandLine =~ /(?:^|\s)-params-file(?:=|\s+)(?:"([^"]+)"|'([^']+)'|(\S+))/
if (!matcher.find()) {
return null
}
return matcher.group(1) ?: matcher.group(2) ?: matcher.group(3)
}
def manifestPath = params.run_manifest ?: resolveManifestPath(workflow.commandLine)
if (!manifestPath) {
error "Run the pipeline with -params-file manifests/<sample>.yaml"
}
def manifestFile = file(manifestPath, checkIfExists: true)
workflow {
Channel.of(manifestFile).set { manifest_ch }
VALIDATE_MANIFEST(manifest_ch)
PREPARE_CONTEXT(VALIDATE_MANIFEST.out.validated_manifest)
RUN_MONOGENIC_STAGE(PREPARE_CONTEXT.out.context)
RUN_PRS_STAGE(PREPARE_CONTEXT.out.context)
RENDER_REPORT(PREPARE_CONTEXT.out.context, RUN_MONOGENIC_STAGE.out.monogenic_stage, RUN_PRS_STAGE.out.prs_stage)
ENFORCE_OUTCOME(RENDER_REPORT.out.pipeline_summary)
}
process VALIDATE_MANIFEST {
tag "validate-manifest"
input:
path manifest
output:
path "validated_manifest.json", emit: validated_manifest
script:
"""
PYTHONPATH="${projectDir}" python3 -m workflow.core.manifest validate \
--manifest "$manifest" \
--schema "${projectDir}/manifests/schema/run_manifest.schema.json" \
--output validated_manifest.json
"""
}
process PREPARE_CONTEXT {
tag "prepare-context"
input:
path validated_manifest
output:
path "prepared_context.json", emit: context
script:
"""
PYTHONPATH="${projectDir}" python3 -m workflow.core.reference prepare-context \
--validated-manifest "$validated_manifest" \
--output prepared_context.json
"""
}
process RUN_MONOGENIC_STAGE {
tag "monogenic"
input:
path context_json
output:
path "monogenic_stage.json", emit: monogenic_stage
script:
"""
PYTHONPATH="${projectDir}" python3 -m workflow.stages.monogenic \
--context "$context_json" \
--output monogenic_stage.json
"""
}
process RUN_PRS_STAGE {
tag "prs"
input:
path context_json
output:
path "prs_stage.json", emit: prs_stage
script:
"""
PYTHONPATH="${projectDir}" python3 -m workflow.stages.prs \
--context "$context_json" \
--output prs_stage.json
"""
}
process RENDER_REPORT {
tag "report"
input:
path context_json
path monogenic_stage_json
path prs_stage_json
output:
path "pipeline_summary.json", emit: pipeline_summary
script:
"""
PYTHONPATH="${projectDir}" python3 -m workflow.reporting.report render \
--context "$context_json" \
--monogenic-stage "$monogenic_stage_json" \
--prs-stage "$prs_stage_json" \
--output pipeline_summary.json
"""
}
process ENFORCE_OUTCOME {
tag "enforce-outcome"
input:
path pipeline_summary_json
script:
"""
PYTHONPATH="${projectDir}" python3 -m workflow.reporting.report enforce \
--summary "$pipeline_summary_json"
"""
}