-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathreferences.wdl
161 lines (138 loc) · 4.71 KB
/
references.wdl
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
version 1.0
import "wdl/subworkflows/build_bowtie_index.wdl" as fasta_for_bowtie_index
import "wdl/subworkflows/build_bwa_index.wdl" as fasta_for_bwa_index
import "wdl/subworkflows/build_fasta_index.wdl" as fasta_for_fasta_index
import "wdl/subworkflows/build_mappable_only_bed.wdl" as mappable
import "wdl/subworkflows/get_center_sites.wdl" as center
import "wdl/subworkflows/get_chrom_info.wdl" as chrom_sizes
import "wdl/subworkflows/get_chrom_sizes.wdl" as fasta_index
import "wdl/subworkflows/subtract_blacklists_from_mappable_regions.wdl" as subtract
import "wdl/structs/sizes.wdl"
workflow references {
input {
Array[File]? blacklists
BowtieIndex? bowtie_index
BwaIndex? bwa_index
File? center_sites
File? chrom_info
File? chrom_sizes
File? mappable_regions
File fasta
Int kmer_length
ReferenceMachineSizes machine_sizes
}
Machines compute = read_json("wdl/runtimes.json")
String genome_name = basename(fasta, ".fa")
if (!defined(bwa_index)) {
call fasta_for_bwa_index.build_bwa_index {
input:
fasta=fasta,
resources=compute.runtimes[machine_sizes.build_bwa_index],
}
}
BwaIndex bwa_index_output = select_first([
bwa_index,
build_bwa_index.bwa_index
])
call fasta_for_fasta_index.build_fasta_index {
input:
fasta=fasta,
resources=compute.runtimes[machine_sizes.build_fasta_index],
}
File fasta_index_output = select_first([
build_fasta_index.indexed_fasta.fai
])
if (!defined(bowtie_index)) {
call fasta_for_bowtie_index.build_bowtie_index {
input:
fasta=fasta,
resources=compute.runtimes[machine_sizes.build_bowtie_index],
}
}
BowtieIndex bowtie_index_output = select_first([
bowtie_index,
build_bowtie_index.bowtie_index
])
if (!defined(mappable_regions)) {
call mappable.build_mappable_only_bed {
input:
bowtie_index=bowtie_index_output,
kmer_length=kmer_length,
reference_genome=fasta,
resources=compute.runtimes[machine_sizes.build_mappable_only_bed],
}
}
File mappable_regions_output = select_first([
mappable_regions,
build_mappable_only_bed.mappable_regions
])
if (defined(blacklists)) {
call subtract.subtract_blacklists_from_mappable_regions {
input:
blacklists=select_first([
blacklists
]),
mappable_regions=mappable_regions_output,
resources=compute.runtimes[machine_sizes.subtract_blacklists_from_mappable_regions],
}
}
File mappable_regions_processed = select_first([
subtract_blacklists_from_mappable_regions.mappable_regions_subtracted,
mappable_regions_output
])
if (!defined(chrom_sizes)) {
call fasta_index.get_chrom_sizes {
input:
fai=select_first([
build_fasta_index.indexed_fasta.fai
]),
resources=compute.runtimes[machine_sizes.get_chrom_sizes],
}
}
File chrom_sizes_output = select_first([
chrom_sizes,
get_chrom_sizes.chrom_sizes
])
if (!defined(chrom_info)) {
call chrom_sizes.get_chrom_info {
input:
chrom_sizes=chrom_sizes_output,
resources=compute.runtimes[machine_sizes.get_chrom_info],
}
}
File chrom_info_output = select_first([
chrom_info,
get_chrom_info.chrom_info
])
if (!defined(center_sites)) {
call center.get_center_sites {
input:
chrom_sizes=chrom_sizes_output,
mappable_regions=mappable_regions_processed,
resources=compute.runtimes[machine_sizes.get_center_sites],
}
}
File center_sites_output = select_first([
center_sites,
get_center_sites.center_sites_starch
])
output {
BwaIndex bwa_index_out = bwa_index_output
HotSpot1Reference hotspot1_reference = object {
chrom_info: chrom_info_output,
mappable_regions: mappable_regions_processed
}
HotSpot2Reference hotspot2_reference = object {
chrom_sizes: chrom_sizes_output,
center_sites: center_sites_output,
mappable_regions: mappable_regions_processed
}
IndexedFasta fasta_index = object {
fai: fasta_index_output
}
}
meta {
version: "v3.0.0"
caper_docker: "encodedcc/dnase-seq-pipeline:v3.0.0"
}
}