forked from jrflab/modules
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathwgs_metrics.mk
More file actions
161 lines (132 loc) · 6.94 KB
/
wgs_metrics.mk
File metadata and controls
161 lines (132 loc) · 6.94 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
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
include modules/Makefile.inc
LOGDIR ?= log/wgs_metrics.$(NOW)
METRICS_JAVA ?= $(JAVA8)
METRICS_PICARD_JAR ?= $(JARDIR)/picard-2.8.2.jar
METRICS_COMMON_OPTS ?= $(PICARD_OPTS) TMP_DIR=$(TMPDIR)
DEFAULT_METRICS_SWAP ?= 12G
DEFAULT_METRICS_MEM ?= 24G
DEFAULT_METRICS_WALLTIME ?= 24:00:00
DEFAULT_METRICS_HEAP ?= 10G
OXOG_METRICS_SWAP ?= $(DEFAULT_METRICS_SWAP)
OXOG_METRICS_MEM ?= $(DEFAULT_METRICS_MEM)
OXOG_METRICS_WALLTIME ?= 48:00:00
OXOG_METRICS_HEAP ?= $(DEFAULT_METRICS_HEAP)
WGS_METRICS_SWAP ?= $(DEFAULT_METRICS_SWAP)
WGS_METRICS_MEM ?= $(DEFAULT_METRICS_MEM)
WGS_METRICS_WALLTIME ?= 72:00:00
WGS_METRICS_HEAP ?= $(DEFAULT_METRICS_HEAP)
DUPLICATE_METRICS_SWAP ?= 16G
DUPLICATE_METRICS_MEM ?= 32G
DUPLICATE_METRICS_WALLTIME ?= 72:00:00
DUPLICATE_METRICS_HEAP ?= 12G
ENABLE_OXOG_METRICS ?= true
# Keep duplicate metrics enabled by default for WGS QC. When alignment has
# already produced metrics/<sample>.dup_metrics.txt (or an archived copy under
# metrics/_previous/), reuse that file directly; only fall back to a fresh
# MarkDuplicates metrics pass when no prior duplicate metrics are available.
ENABLE_DUPLICATE_METRICS ?= true
WGS_METRICS_DEPS = $(foreach sample,$(SAMPLES),metrics/$(sample).idx_stats.txt) \
$(foreach sample,$(SAMPLES),metrics/$(sample).aln_metrics.txt) \
$(foreach sample,$(SAMPLES),metrics/$(sample).insert_metrics.txt) \
$(foreach sample,$(SAMPLES),metrics/$(sample).gc_metrics_summary.txt) \
$(foreach sample,$(SAMPLES),metrics/$(sample).wgs_metrics.txt) \
summary/idx_metrics.txt \
summary/aln_metrics.txt \
summary/insert_metrics.txt \
summary/gc_metrics.txt \
summary/wgs_metrics.txt
ifeq ($(filter false FALSE no NO 0,$(ENABLE_OXOG_METRICS)),)
WGS_METRICS_DEPS += $(foreach sample,$(SAMPLES),metrics/$(sample).oxog_metrics.txt) \
summary/oxog_metrics.txt
endif
ifeq ($(filter false FALSE no NO 0,$(ENABLE_DUPLICATE_METRICS)),)
WGS_METRICS_DEPS += $(foreach sample,$(SAMPLES),metrics/$(sample).duplicate_metrics.txt) \
summary/duplicate_metrics.txt
endif
wgs_metrics : $(WGS_METRICS_DEPS)
SAMTOOLS_THREADS = 4
SAMTOOLS_MEM_THREAD = 1G
GATK_THREADS = 4
GATK_MEM_THREAD = 2G
define picard-metrics
metrics/$1.idx_stats.txt : bam/$1.bam
$$(call RUN, -c -n 1 -s $(DEFAULT_METRICS_SWAP) -m $(DEFAULT_METRICS_MEM) -w $(DEFAULT_METRICS_WALLTIME),"set -o pipefail && \
$(METRICS_JAVA) -Xmx$(DEFAULT_METRICS_HEAP) -jar $(METRICS_PICARD_JAR) BamIndexStats \
$(METRICS_COMMON_OPTS) \
INPUT=$$(<) \
> $$(@)")
metrics/$1.aln_metrics.txt : bam/$1.bam
$$(call RUN, -c -n 1 -s $(DEFAULT_METRICS_SWAP) -m $(DEFAULT_METRICS_MEM) -w $(DEFAULT_METRICS_WALLTIME),"set -o pipefail && \
$(METRICS_JAVA) -Xmx$(DEFAULT_METRICS_HEAP) -jar $(METRICS_PICARD_JAR) CollectAlignmentSummaryMetrics \
$(METRICS_COMMON_OPTS) \
REFERENCE_SEQUENCE=$$(REF_FASTA) \
INPUT=$$(<) \
OUTPUT=$$(@)")
metrics/$1.insert_metrics.txt : bam/$1.bam
$$(call RUN, -c -n 1 -s $(DEFAULT_METRICS_SWAP) -m $(DEFAULT_METRICS_MEM) -w $(DEFAULT_METRICS_WALLTIME),"set -o pipefail && \
$(METRICS_JAVA) -Xmx$(DEFAULT_METRICS_HEAP) -jar $(METRICS_PICARD_JAR) CollectInsertSizeMetrics \
$(METRICS_COMMON_OPTS) \
INPUT=$$(<) \
OUTPUT=$$(@) \
HISTOGRAM_FILE=metrics/$1.insert_metrics.pdf \
MINIMUM_PCT=0.05")
metrics/$1.oxog_metrics.txt : bam/$1.bam
$$(call RUN, -c -n 1 -s $(OXOG_METRICS_SWAP) -m $(OXOG_METRICS_MEM) -w $(OXOG_METRICS_WALLTIME),"set -o pipefail && \
$(METRICS_JAVA) -Xmx$(OXOG_METRICS_HEAP) -jar $(METRICS_PICARD_JAR) CollectOxoGMetrics \
$(METRICS_COMMON_OPTS) \
REFERENCE_SEQUENCE=$$(REF_FASTA) \
INPUT=$$(<) \
OUTPUT=$$(@)")
metrics/$1.gc_metrics_summary.txt : bam/$1.bam
$$(call RUN, -c -n 1 -s $(DEFAULT_METRICS_SWAP) -m $(DEFAULT_METRICS_MEM) -w $(DEFAULT_METRICS_WALLTIME),"set -o pipefail && \
$(METRICS_JAVA) -Xmx$(DEFAULT_METRICS_HEAP) -jar $(METRICS_PICARD_JAR) CollectGcBiasMetrics \
$(METRICS_COMMON_OPTS) \
INPUT=$$(<) \
OUTPUT=metrics/$1.gc_metrics.txt \
CHART_OUTPUT=metrics/$1.gc_metrics.pdf \
REFERENCE_SEQUENCE=$$(REF_FASTA) \
SUMMARY_OUTPUT=$$(@)")
metrics/$1.wgs_metrics.txt : bam/$1.bam
$$(call RUN, -c -n 1 -s $(WGS_METRICS_SWAP) -m $(WGS_METRICS_MEM) -w $(WGS_METRICS_WALLTIME),"set -o pipefail && \
$(METRICS_JAVA) -Xmx$(WGS_METRICS_HEAP) -jar $(METRICS_PICARD_JAR) CollectWgsMetrics \
$(METRICS_COMMON_OPTS) \
INPUT=$$(<) \
OUTPUT=$$(@) \
REFERENCE_SEQUENCE=$$(REF_FASTA)")
metrics/$1.duplicate_metrics.txt : $$(or $$(wildcard metrics/$1.dup_metrics.txt),$$(wildcard metrics/_previous/$1.dup_metrics.txt),bam/$1.bam)
$$(if $$(filter bam/$1.bam,$$(<)), \
$$(call RUN, -c -n 1 -s $(DUPLICATE_METRICS_SWAP) -m $(DUPLICATE_METRICS_MEM) -w $(DUPLICATE_METRICS_WALLTIME),"set -o pipefail && \
$(METRICS_JAVA) -Xmx$(DUPLICATE_METRICS_HEAP) -jar $(METRICS_PICARD_JAR) MarkDuplicates \
$(METRICS_COMMON_OPTS) \
INPUT=$$(<) \
ASSUME_SORT_ORDER=coordinate \
OUTPUT=/dev/null \
CREATE_INDEX=false \
METRICS_FILE=$$(@)"), \
$$(INIT) cp $$(<) $$(@))
endef
$(foreach sample,$(SAMPLES), $(eval $(call picard-metrics,$(sample))))
summary/idx_metrics.txt : $(foreach sample,$(SAMPLES),metrics/$(sample).idx_stats.txt)
$(call RUN, -c -n 1 -s 8G -m 12G,"set -o pipefail && \
$(RSCRIPT) $(SCRIPTS_DIR)/wgs_metrics.R --option 1 --sample_names '$(SAMPLES)'")
summary/aln_metrics.txt : $(foreach sample,$(SAMPLES),metrics/$(sample).aln_metrics.txt)
$(call RUN, -c -n 1 -s 8G -m 12G,"set -o pipefail && \
$(RSCRIPT) $(SCRIPTS_DIR)/wgs_metrics.R --option 2 --sample_names '$(SAMPLES)'")
summary/insert_metrics.txt : $(foreach sample,$(SAMPLES),metrics/$(sample).insert_metrics.txt)
$(call RUN, -c -n 1 -s 8G -m 12G,"set -o pipefail && \
$(RSCRIPT) $(SCRIPTS_DIR)/wgs_metrics.R --option 3 --sample_names '$(SAMPLES)'")
summary/oxog_metrics.txt : $(foreach sample,$(SAMPLES),metrics/$(sample).oxog_metrics.txt)
$(call RUN, -c -n 1 -s 8G -m 12G,"set -o pipefail && \
$(RSCRIPT) $(SCRIPTS_DIR)/wgs_metrics.R --option 4 --sample_names '$(SAMPLES)'")
summary/gc_metrics.txt : $(foreach sample,$(SAMPLES),metrics/$(sample).gc_metrics_summary.txt)
$(call RUN, -c -n 1 -s 8G -m 12G,"set -o pipefail && \
$(RSCRIPT) $(SCRIPTS_DIR)/wgs_metrics.R --option 5 --sample_names '$(SAMPLES)'")
summary/wgs_metrics.txt : $(foreach sample,$(SAMPLES),metrics/$(sample).wgs_metrics.txt)
$(call RUN, -c -n 1 -s 8G -m 12G,"set -o pipefail && \
$(RSCRIPT) $(SCRIPTS_DIR)/wgs_metrics.R --option 6 --sample_names '$(SAMPLES)'")
summary/duplicate_metrics.txt : $(foreach sample,$(SAMPLES),metrics/$(sample).duplicate_metrics.txt)
$(call RUN, -c -n 1 -s 8G -m 12G,"set -o pipefail && \
$(RSCRIPT) $(SCRIPTS_DIR)/wgs_metrics.R --option 7 --sample_names '$(SAMPLES)'")
.SECONDARY:
.DELETE_ON_ERROR:
.PHONY: wgs_metrics