-
Notifications
You must be signed in to change notification settings - Fork 1
/
genomel_cohort_freebayes.cwl
175 lines (159 loc) · 4.92 KB
/
genomel_cohort_freebayes.cwl
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
#!/usr/bin/env cwl-runner
cwlVersion: v1.0
class: Workflow
requirements:
- class: InlineJavascriptRequirement
- class: StepInputExpressionRequirement
- class: MultipleInputFeatureRequirement
- class: ScatterFeatureRequirement
- class: SubworkflowFeatureRequirement
inputs:
job_uuid: string
bed_files: File[]
reference:
type: File
secondaryFiles: [.fai, ^.dict]
cromwell_engine: boolean
###Freebayes
bam:
type: File
secondaryFiles: [^.bai]
freebayes_thread_count: int
number_of_chunks_for_freebayes: int
###Upload
aws_config: File
aws_shared_credentials: File
upload_s3_profile: string
upload_s3_endpoint: string
upload_s3_bucket: string
outputs:
freebayes_vcf:
type: File
outputSource: sort_freebayes/sorted_vcf
passed_bed:
type: File
outputSource: merge_passed_bed/output
time_logs:
type: File[]
outputSource: extract_time_log/output
steps:
freebayes_cohort_genotyping:
run: ./cwl/workflows/variant_calling/aws_freebayes.cwl
scatter: [bed_file, output_prefix]
scatterMethod: dotproduct
in:
job_uuid: job_uuid
bam: bam
reference: reference
bed_file: bed_files
thread_count: freebayes_thread_count
number_of_chunks: number_of_chunks_for_freebayes
output_prefix:
source: bed_files
valueFrom: $(self.nameroot)
out: [time_metrics_from_freebayes,
time_metrics_from_picard_sortvcf,
time_metrics_from_selectvariants,
log_file,
freebayes_vcf,
passed_bed]
merge_passed_bed:
run: ./cwl/tools/utils/merge_files.cwl
in:
input_files:
source: freebayes_cohort_genotyping/passed_bed
valueFrom: |
${
var bed_list = []
for (var i = 0; i < self.length; i++){
if (Array.isArray(self[i])){
for (var j = 0; j < self[i].length; j++){
bed_list.push(self[i][j])
}
} else {
bed_list.push(self[i])
}
}
return bed_list
}
output_file:
source: job_uuid
valueFrom: $(self + '.passed.bed')
out: [ output ]
sort_freebayes:
run: ./cwl/tools/variant_calling/picard_sortvcf.cwl
in:
job_uuid: job_uuid
vcf: freebayes_cohort_genotyping/freebayes_vcf
reference_dict:
source: reference
valueFrom: $(self.secondaryFiles[1])
output_prefix:
valueFrom: 'genomel_cohort.freebayes.genomel_all'
out: [sorted_vcf, time_metrics]
upload_passed_bed:
run: ./cwl/tools/utils/awscli_upload.cwl
in:
aws_config: aws_config
aws_shared_credentials: aws_shared_credentials
input: merge_passed_bed/output
s3uri:
source: [upload_s3_bucket, merge_passed_bed/output]
valueFrom: $(self[0])/$(self[1].basename)
s3_profile: upload_s3_profile
s3_endpoint: upload_s3_endpoint
out: [output, time_metrics]
upload_freebayes_vcf:
run: ./cwl/tools/utils/awscli_upload.cwl
in:
aws_config: aws_config
aws_shared_credentials: aws_shared_credentials
input: sort_freebayes/sorted_vcf
s3uri:
source: [upload_s3_bucket, sort_freebayes/sorted_vcf]
valueFrom: $(self[0])/$(self[1].basename)
s3_profile: upload_s3_profile
s3_endpoint: upload_s3_endpoint
out: [output, time_metrics]
upload_freebayes_vcf_index:
run: ./cwl/tools/utils/awscli_upload.cwl
in:
aws_config: aws_config
aws_shared_credentials: aws_shared_credentials
input:
source: sort_freebayes/sorted_vcf
valueFrom: $(self.secondaryFiles[0])
s3uri:
source: [upload_s3_bucket, sort_freebayes/sorted_vcf]
valueFrom: $(self[0])/$(self[1].secondaryFiles[0].basename)
s3_profile: upload_s3_profile
s3_endpoint: upload_s3_endpoint
out: [output, time_metrics]
extract_time_log:
run: ./cwl/tools/utils/extract_outputs.cwl
in:
file_array:
source: [freebayes_cohort_genotyping/time_metrics_from_freebayes,
freebayes_cohort_genotyping/time_metrics_from_picard_sortvcf,
freebayes_cohort_genotyping/time_metrics_from_selectvariants,
sort_freebayes/time_metrics,
upload_passed_bed/time_metrics,
upload_freebayes_vcf/time_metrics,
upload_freebayes_vcf_index/time_metrics]
valueFrom: |
${
var log_list = []
for (var i = 0; i < self.length; i++){
if (Array.isArray(self[i])){
if (Array.isArray(self[i][0])){
for (var j = 0; j < self[i][0].length; j++){
log_list.push(self[i][0][j])
}
} else { log_list.push(self[i][0]) }
} else {
log_list.push(self[i])
}
}
return log_list
}
out: [output]