File: Makefile

package info (click to toggle)
cnvkit 0.9.12-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 96,464 kB
  • sloc: python: 12,407; makefile: 263; sh: 84; xml: 38
file content (175 lines) | stat: -rw-r--r-- 5,986 bytes parent folder | download
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
# Test CNVkit.
#
# Dependency: pdfunite (poppler-utils)
# (Otherwise, all-scatters.pdf and all-diagrams.pdf will be empty files.)

rscript_exe=Rscript
cnvkit=cnvkit.py

# ------------------------------------------------------------------------------
# Samples pre-processed with Picard CalculateHsMetrics

picard_normals=$(wildcard picard/p2-*_5.*.csv)
picard_tumor_cnns=$(patsubst picard/%.csv,build/%.cnn,$(wildcard picard/*.csv))

picard_cnrs=$(addprefix build/p2-,$(addsuffix .cnr,5_5 9_2 20_1 20_2 20_3 20_4 20_5))
picard_segs=$(picard_cnrs:.cnr=.cns)

picard_targets= build/reference-picard.cnn $(picard_cnrs) $(picard_segs) \
	     all-scatters.pdf all-diagrams.pdf heatmap-picard.pdf \
	     p2-9_2-breaks.txt p2-9_2-genemetrics.txt gender-picard.txt \
	     p2-all.cdt p2-all-jtv.txt p2-all.seg p2-9_2.nexus p2-9_2.nexus-ogt \
	     p2-all.bed p2-9_2.vcf p2-9_2.theta2.input \
	     p2-9_2-segmetrics.cns p2-5_5-segmetrics.cns

# ------------------------------------------------------------------------------
#  Action!

all: mini $(picard_targets) p2-5_5-metrics.tsv p2-9_2-metrics.tsv p2-20-metrics.tsv


.PHONY: clean
clean:
	# Picard
	rm -rf build/p*targetcoverage.cnn $(picard_targets) p*-scatter.pdf p*-diagram.pdf
	rm -rf build/na12878-chrM-Y-trunc* build/chrM-Y-trunc*

.PHONY: test
test:
	pytest


# ------------------------------------------------------------------------------
# Minimal 'batch' command

.PHONY: mini
mini: build/na12878-chrM-Y-trunc.bintest.cns

build/na12878-chrM-Y-trunc.bintest.cns: formats/na12878-chrM-Y-trunc.bam formats/chrM-Y-trunc.hg19.fa
	$(cnvkit) batch -n -f formats/chrM-Y-trunc.hg19.fa -m wgs formats/na12878-chrM-Y-trunc.bam -d build


# ------------------------------------------------------------------------------
# Standard workflow

# == Build pooled references from normal samples

build/reference-picard.cnn: $(picard_normals)
	$(cnvkit) import-picard $^ -d build/
	$(cnvkit) reference build/p2-*_5.*targetcoverage.cnn -y -o $@


# == Import Picard files (including GC values, used in the reference)

$(picard_tumor_cnns): build/%.cnn: picard/%.csv
	$(cnvkit) import-picard $^ -d build/


# == Build components

$(picard_cnrs): %.cnr: %.targetcoverage.cnn %.antitargetcoverage.cnn build/reference-picard.cnn
	$(cnvkit) fix $^ -o $@

$(picard_segs): %.cns: %.cnr
	$(cnvkit) segment --rscript-path $(rscript_exe) -p 2 --drop-low-coverage -t .01 $< -o $@

$(picard_segs:.cns=.call.cns): build/%.call.cns: build/%.cns
	$(cnvkit) call $^ -y -m clonal --purity 0.65 -o $@


# ------------------------------------------------------------------------------
# Demo other features with Picard outputs

heatmap-picard.pdf: $(picard_segs)
	$(cnvkit) heatmap $^ -y -o $@

# == Plot coverages with segmentation calls

all-scatters.pdf: p2-5_5-scatter.pdf p2-9_2-scatter.pdf p2-9_2-chr1-scatter.pdf p2-9_2-chr21-scatter.pdf p2-9_2-chr9p-scatter.pdf p2-9_2-SMARCA2-PTPRD-scatter.pdf p2-9_2-bed_regions-scatter.pdf
	which pdfunite && pdfunite $^ $@ || touch $@

p2-5_5-scatter.pdf p2-9_2-scatter.pdf: %-scatter.pdf: build/%.cns build/%.cnr
	$(cnvkit) scatter -s $^ -t --y-min=-2.5 -o $@

p2-9_2-chr1-scatter.pdf: build/p2-9_2.cns build/p2-9_2.cnr
	$(cnvkit) scatter -s $^ -c chr1 -t -o $@

p2-9_2-chr21-scatter.pdf: build/p2-9_2.cns build/p2-9_2.cnr
	$(cnvkit) scatter -s $^ -c chr21 -t -o $@

p2-9_2-chr9p-scatter.pdf: build/p2-9_2.cns build/p2-9_2.cnr
	$(cnvkit) scatter -s $^ -c 'chr9:150000-45000000' -o $@

p2-9_2-SMARCA2-PTPRD-scatter.pdf: build/p2-9_2.cns build/p2-9_2.cnr
	$(cnvkit) scatter -s $^ -g SMARCA2,PTPRD -w 4e6 -o $@

p2-9_2-bed_regions-scatter.pdf: build/p2-9_2.cns build/p2-9_2.cnr
	$(cnvkit) scatter -s $^ -l regions.bed -o $@

# == Draw diagrams

all-diagrams.pdf: $(foreach sfx,- -cbs- -both-,$(addsuffix $(sfx)diagram.pdf,p2-5_5 p2-9_2 p2-20_1 p2-20_2))
	which pdfunite && pdfunite $^ $@ || touch $@

p2-5_5-diagram.pdf p2-9_2-diagram.pdf p2-20_1-diagram.pdf p2-20_2-diagram.pdf: %-diagram.pdf: build/%.cnr
	$(cnvkit) diagram -y $< -o $@

p2-5_5-cbs-diagram.pdf p2-9_2-cbs-diagram.pdf p2-20_1-cbs-diagram.pdf p2-20_2-cbs-diagram.pdf: %-cbs-diagram.pdf: build/%.cns
	$(cnvkit) diagram -y --segment=$< -o $@

p2-5_5-both-diagram.pdf p2-9_2-both-diagram.pdf p2-20_1-both-diagram.pdf p2-20_2-both-diagram.pdf: %-both-diagram.pdf: build/%.cns build/%.cnr
	$(cnvkit) diagram -y --segment=$^ -t 0.3 -o $@

# == Text reporting ==

p2-9_2-breaks.txt: build/p2-9_2.cnr build/p2-9_2.cns
	$(cnvkit) breaks $^ -o $@

p2-9_2-genemetrics.txt: build/p2-9_2.cns build/p2-9_2.cnr
	$(cnvkit) genemetrics -y -m 2 -s $^ -o $@

gender-picard.txt: build/p2-5_5.cnr  build/p2-5_5.cns build/p2-9_2.cnr build/p2-9_2.cns build/p2-20_5.cnr build/p2-20_5.cns
	$(cnvkit) sex -y $^ -o $@

p2-5_5-metrics.tsv p2-9_2-metrics.tsv: %-metrics.tsv: build/%.cnr build/%.cns
	$(cnvkit) metrics  $< -s $(lastword $^) -o $@

p2-20-metrics.tsv: $(addprefix build/p2-20_,$(addsuffix .cns,1 2 3 4 5))
	$(cnvkit) metrics $(^:.cns=.cnr) -s $^ -o $@

p2-9_2-segmetrics.cns: build/p2-9_2.cns build/p2-9_2.cnr
	$(cnvkit) segmetrics -s $^ -o $@ \
		--mean --median --mode --t-test \
		--stdev --mad --mse --iqr --bivar \
		--ci --pi --sem --smooth-bootstrap

p2-5_5-segmetrics.cns: build/p2-5_5.cns build/p2-5_5.cnr
	$(cnvkit) segmetrics -s $^ -o $@ \
		--ci -b 50 -a 0.5


# == Export to other formats

p2-all.seg: $(picard_segs)
	$(cnvkit) export seg $^ -o $@

p2-all.bed: $(picard_segs:.cns=.call.cns)
	$(cnvkit) export bed $^ -y --show variant -o $@

p2-9_2.vcf: build/p2-9_2.cnr build/p2-9_2.call.cns
	$(cnvkit) export vcf -o $@ -y --cnr $^ -y -o $@

p2-9_2.theta2.input: build/p2-9_2.cns build/reference-picard.cnn
	$(cnvkit) export theta $< -r $(lastword $^) -o $@

p2-9_2.nexus: build/p2-9_2.cnr
	$(cnvkit) export nexus-basic $^ -o $@

p2-9_2.nexus-ogt: build/p2-9_2.cnr formats/na12878_na12882_mix.vcf
	$(cnvkit) export nexus-ogt $^ -o $@

p2-all.cdt: $(picard_cnrs)
	$(cnvkit) export cdt $^ -o $@

p2-all-jtv.txt: $(picard_cnrs)
	$(cnvkit) export jtv $^ -o $@