-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcut-and-run.wdl
174 lines (154 loc) · 5.6 KB
/
cut-and-run.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
162
163
164
165
166
167
168
169
170
171
172
173
174
version 1.0
import "tasks/cutnrun_task_trim.wdl" as cutnrun_task_trim
import "tasks/cutnrun_task_bowtie2.wdl" as cutnrun_task_align
import "tasks/cutnrun_task_bam2bed.wdl" as cutnrun_task_bam2bed
import "tasks/cutnrun_task_viz.wdl" as cutnrun_task_visualization
import "tasks/cutnrun_task_peak.wdl" as cutnrun_task_peak_calling
import "tasks/cutnrun_task_deeptools.wdl" as cutnrun_task_deeptools
workflow wf_cut_and_run {
meta {
version: 'v0.1'
author: 'Eugenio Mattei ([email protected]) @ Broad Institute of MIT and Harvard'
description: 'Broad Institute of MIT and Harvard cut-and-run pipeline.'
}
input {
Array[File] target_fastq_R1
Array[File] target_fastq_R2
Array[File] ctrl_fastq_R1
Array[File] ctrl_fastq_R2
File idx_tar
File chrom_sizes
File tss
File genes
String? normalization = "norm"
String? stringency = "relaxed"
String prefix = "cutnrun-sample"
String prefix_ctrl = "cutnrun-ctrl"
String genome_name
String? docker
}
# call cutnrun_task_trim.cutnrun_trim as trim {
# input:
# fastq_R1 = fastq_R1,
# fastq_R2 = fastq_R2,
# prefix = prefix
# }
call cutnrun_task_align.cutnrun_align as target_align {
input:
fastq_R1 = target_fastq_R1,
fastq_R2 = target_fastq_R2,
genome_index = idx_tar,
genome_name = genome_name,
prefix = prefix
}
call cutnrun_task_align.cutnrun_align as ctrl_align {
input:
fastq_R1 = ctrl_fastq_R1,
fastq_R2 = ctrl_fastq_R2,
genome_index = idx_tar,
genome_name = genome_name,
prefix = prefix_ctrl
}
call cutnrun_task_bam2bed.cutnrun_bam2bed as target_bam2bed {
input:
bam = target_align.cutnrun_alignment,
prefix = prefix
}
call cutnrun_task_bam2bed.cutnrun_bam2bed as ctrl_bam2bed {
input:
bam = ctrl_align.cutnrun_alignment,
prefix = prefix_ctrl
}
call cutnrun_task_visualization.cutnrun_viz as target_track_generation {
input:
bedpe = target_bam2bed.bedpe,
chr_sizes = chrom_sizes,
prefix = prefix
}
call cutnrun_task_visualization.cutnrun_viz as ctrl_track_generation {
input:
bedpe = ctrl_bam2bed.bedpe,
chr_sizes = chrom_sizes,
prefix = prefix_ctrl
}
call cutnrun_task_peak_calling.cutnrun_peak as peak_calling {
input:
bedgraph_input = target_track_generation.bedgraph,
bedgraph_ctrl = ctrl_track_generation.bedgraph,
chr_sizes = chrom_sizes,
normalization = normalization,
stringency = stringency,
prefix = prefix
}
call cutnrun_task_deeptools.cutnrun_deeptools as ctrl_deeptools {
input:
cleaned_bam = ctrl_bam2bed.clean_bam,
chr_sizes = chrom_sizes,
tss = tss,
genes = genes,
prefix = prefix_ctrl
}
call cutnrun_task_deeptools.cutnrun_deeptools as target_deeptools {
input:
cleaned_bam = target_bam2bed.clean_bam,
chr_sizes = chrom_sizes,
tss = tss,
genes = genes,
prefix = prefix
}
call sort as ctrl_sort{
input:
cleaned_bam = ctrl_bam2bed.clean_bam,
prefix = prefix_ctrl
}
call sort as target_sort{
input:
cleaned_bam = target_bam2bed.clean_bam,
prefix = prefix
}
output {
File target_alignment_bam = target_align.cutnrun_alignment
File target_alignment_log = target_align.cutnrun_alignment_log
File target_bedpe = target_bam2bed.bedpe
File target_cleaned_bam = target_bam2bed.clean_bam
File target_cleaned_sorted_bam = target_sort.clean_sorted_bam
File target_bedgrapgh = target_track_generation.bedgraph
File target_bigwig = target_track_generation.bigwig
File target_deeptools_heatmap_genes = target_deeptools.heatmap_genes
File target_deeptools_heatmap_tss = target_deeptools.heatmap_tss
File target_deeptools_bw = target_deeptools.cleaned_deeptools_bw
File ctrl_alignment_bam = ctrl_align.cutnrun_alignment
File ctrl_alignment_log = ctrl_align.cutnrun_alignment_log
File ctrl_bedpe = ctrl_bam2bed.bedpe
File ctrl_cleaned_bam = ctrl_bam2bed.clean_bam
File ctrl_cleaned_sorted_bam = ctrl_sort.clean_sorted_bam
File ctrl_bedgrapgh = ctrl_track_generation.bedgraph
File ctrl_bigwig = ctrl_track_generation.bigwig
File ctrl_deeptools_heatmap_genes = ctrl_deeptools.heatmap_genes
File ctrl_deeptools_heatmap_tss = ctrl_deeptools.heatmap_tss
File ctrl_deeptools_bw = ctrl_deeptools.cleaned_deeptools_bw
#File narrow_peak = peak_calling.narrow_peak
#File bedgraph_peak_norm = peak_calling.bedgraph_peak_norm
#File bw_peak_norm = peak_calling.bw_peak_norm
}
}
task sort {
input {
String prefix
File cleaned_bam
}
String outbam = '${default="cutnrun" prefix}.dedup.cleaned.sorted.bam'
command {
$(which samtools) sort -@ 8 -m 3G ${cleaned_bam} -o ${outbam}
}
output {
File clean_sorted_bam = "${outbam}"
}
runtime {
maxRetries : 0
cpu : 8
memory : '32 GB'
disks : 'local-disk 100 SSD'
docker : 'us.gcr.io/buenrostro-share-seq/share_task_star'
}
}