Skip to content

Commit e04f26f

Browse files
committed
Merge branch 'release/v3.5.0'
2 parents fbf793c + bd88f3a commit e04f26f

13 files changed

Lines changed: 440 additions & 163 deletions

File tree

.travis.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ addons:
2121
- unzip
2222
- libpng12-dev
2323
- libexpat1-dev
24+
- libgoogle-perftools-dev
25+
- lsof
2426

2527
install: true
2628

@@ -37,4 +39,8 @@ before_script:
3739

3840
script:
3941
- ./setup.sh ~/wtsi-opt
40-
- ~/wtsi-opt/bin/samtools view # dump usage to show intact
42+
- $HOME/wtsi-opt/bin/samtools view # dump usage to show intact
43+
- $HOME/wtsi-opt/bin/diff_bams -h
44+
- $HOME/wtsi-opt/bin/reheadSQ -h
45+
- $HOME/wtsi-opt/bin/bam_stats -h
46+
- perl -I $HOME/wtsi-opt/lib/perl5 ~/wtsi-opt/bin/bwa_mem.pl -h

CHANGES.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
### 3.5.0
2+
* Adds RNA downloads to PanCancer download tool `gnos_pull.pl`
3+
* Hardening of external process handling in `PCAP::Threaded`
4+
* Adds C version of `diff_bams`
5+
6+
### 3.4.0
7+
* Significant speed up of BAM generation under `bwa_mem.pl` by using separate process to do compression of mark duplicate output and streaming BAS generation. Not possible to do this to CRAM in same way.
8+
9+
### 3.3.4
10+
* Reduce disk usage when running `bwa_mem.pl`
11+
* Improve throughput via slightly unintuitive use of additional pipes
12+
113
### 3.3.0
214
* adds `map_threads|mt` option to `bwa_mem.pl` to allow more control of parallel processing in one shot submission.
315
* adds `bwa_pl|l` option to `bwa_mem.pl` to allow preload of different malloc libraries.

INSTALL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ bwa_mem.pl will only function when 0.7.x installed
2929
```
3030
apt-get update && \
3131
apt-get -y install \
32-
build-essential zlib1g-dev libncurses5-dev libcurl4-gnutls-dev libssl-dev libexpat1-dev nettle-dev &&\
32+
build-essential zlib1g-dev libncurses5-dev libcurl4-gnutls-dev libssl-dev libexpat1-dev nettle-dev lsof libgoogle-perftools-dev &&\
3333
apt-get clean
3434
```
3535

MANIFEST

Lines changed: 1 addition & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,4 @@
11
.travis.yml
2-
bam_out/logs_bwamem_wibble/PCAP_Bam_merge_and_mark_dup.0.err
3-
bam_out/logs_bwamem_wibble/PCAP_Bam_merge_and_mark_dup.0.out
4-
bam_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.1.err
5-
bam_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.1.out
6-
bam_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.2.err
7-
bam_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.2.out
8-
bam_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.3.err
9-
bam_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.3.out
10-
bam_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.4.err
11-
bam_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.4.out
12-
bam_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.5.err
13-
bam_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.5.out
14-
bam_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.6.err
15-
bam_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.6.out
16-
bam_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.7.err
17-
bam_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.7.out
18-
bam_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.8.err
19-
bam_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.8.out
20-
bam_out/logs_bwamem_wibble/PCAP_Bwa_split_in.1.err
21-
bam_out/logs_bwamem_wibble/PCAP_Bwa_split_in.1.out
22-
bam_out/wibble.bam
23-
bam_out/wibble.bam.bai
24-
bam_out/wibble.bam.bas
25-
bam_out/wibble.bam.md5
26-
bam_out/wibble.bam.met
272
bin/bam_stats.pl
283
bin/bam_to_sra_sub.pl
294
bin/bamToBw.pl
@@ -49,116 +24,14 @@ c/c_tests/minunit.h
4924
c/c_tests/runtests.sh
5025
c/c_tests/tests_log
5126
c/dbg.h
27+
c/diff_bams.c
5228
c/khash.h
5329
c/reheadSQ.c
5430
CHANGES.md
5531
dists/patch/Bio-BigFile_build.patch
5632
dists/snappy-1.1.2.tar.gz
5733
docs.tar.gz
5834
examples/gnos_pull.ini
59-
fastq/1/10658_1.fq.gz
60-
fastq/1/10659_1.fq.gz
61-
fastq/1/10660_1.fq.gz
62-
fastq/1/10661_1.fq.gz
63-
fastq/1/10662_1.fq.gz
64-
fastq/1/10663_1.fq.gz
65-
fastq/1/10664_1.fq.gz
66-
fastq/1/10665_1.fq.gz
67-
fastq/2/10658_2.fq.gz
68-
fastq/2/10659_2.fq.gz
69-
fastq/2/10660_2.fq.gz
70-
fastq/2/10661_2.fq.gz
71-
fastq/2/10662_2.fq.gz
72-
fastq/2/10663_2.fq.gz
73-
fastq/2/10664_2.fq.gz
74-
fastq/2/10665_2.fq.gz
75-
fastq_i/10658_i.fq.gz
76-
fastq_i/10659_i.fq.gz
77-
fastq_i/10660_i.fq.gz
78-
fastq_i/10661_i.fq.gz
79-
fastq_i/10662_i.fq.gz
80-
fastq_i/10663_i.fq.gz
81-
fastq_i/10664_i.fq.gz
82-
fastq_i/10665_i.fq.gz
83-
fastq_i_out/logs_bwamem_wibble/PCAP_Bam_merge_and_mark_dup.0.err
84-
fastq_i_out/logs_bwamem_wibble/PCAP_Bam_merge_and_mark_dup.0.out
85-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.1.err
86-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.1.out
87-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.2.err
88-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.2.out
89-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.3.err
90-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.3.out
91-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.4.err
92-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.4.out
93-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.5.err
94-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.5.out
95-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.6.err
96-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.6.out
97-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.7.err
98-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.7.out
99-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.8.err
100-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.8.out
101-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_split_in.1.err
102-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_split_in.1.out
103-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_split_in.2.err
104-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_split_in.2.out
105-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_split_in.3.err
106-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_split_in.3.out
107-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_split_in.4.err
108-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_split_in.4.out
109-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_split_in.5.err
110-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_split_in.5.out
111-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_split_in.6.err
112-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_split_in.6.out
113-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_split_in.7.err
114-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_split_in.7.out
115-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_split_in.8.err
116-
fastq_i_out/logs_bwamem_wibble/PCAP_Bwa_split_in.8.out
117-
fastq_i_out/wibble.bam
118-
fastq_i_out/wibble.bam.bai
119-
fastq_i_out/wibble.bam.bas
120-
fastq_i_out/wibble.bam.md5
121-
fastq_i_out/wibble.bam.met
122-
fastq_out/logs_bwamem_wibble/PCAP_Bam_merge_and_mark_dup.0.err
123-
fastq_out/logs_bwamem_wibble/PCAP_Bam_merge_and_mark_dup.0.out
124-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.1.err
125-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.1.out
126-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.2.err
127-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.2.out
128-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.3.err
129-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.3.out
130-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.4.err
131-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.4.out
132-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.5.err
133-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.5.out
134-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.6.err
135-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.6.out
136-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.7.err
137-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.7.out
138-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.8.err
139-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_bwa_mem.8.out
140-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_split_in.1.err
141-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_split_in.1.out
142-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_split_in.2.err
143-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_split_in.2.out
144-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_split_in.3.err
145-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_split_in.3.out
146-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_split_in.4.err
147-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_split_in.4.out
148-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_split_in.5.err
149-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_split_in.5.out
150-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_split_in.6.err
151-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_split_in.6.out
152-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_split_in.7.err
153-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_split_in.7.out
154-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_split_in.8.err
155-
fastq_out/logs_bwamem_wibble/PCAP_Bwa_split_in.8.out
156-
fastq_out/wibble.bam
157-
fastq_out/wibble.bam.bai
158-
fastq_out/wibble.bam.bas
159-
fastq_out/wibble.bam.md5
160-
fastq_out/wibble.bam.met
161-
insilico_21.bam
16235
INSTALL.md
16336
lib/PCAP.pm
16437
lib/PCAP/Bam.pm

bin/bwa_mem.pl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ sub setup {
161161
$_ = "$cwd/$_" unless($_ =~ m|^/|);
162162
push @{$opts{'raw_files'}}, $_;
163163
}
164+
pod2usage(-msg => "\nERROR: No BAM/CRAM or FASTQ files have been defined.\n", -verbose => 1, -output => \*STDERR) if(scalar @{$opts{'raw_files'}} == 0);
164165

165166
my $max_split = PCAP::Bwa::mem_prepare(\%opts);
166167

bin/gnos_pull.pl

Lines changed: 60 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
##########LICENCE##########
44
# PCAP - NGS reference implementations and helper code for the ICGC/TCGA Pan-Cancer Analysis Project
5-
# Copyright (C) 2014-2015 ICGC PanCancer Project
5+
# Copyright (C) 2014-2017 ICGC PanCancer Project
66
#
77
# This program is free software; you can redistribute it and/or
88
# modify it under the terms of the GNU General Public License
@@ -49,7 +49,7 @@
4949
use PCAP;
5050
use PCAP::Cli;
5151

52-
const my @ANALYSIS_TYPES => (qw(ALIGNMENTS CALLS));
52+
const my @ANALYSIS_TYPES => (qw(ALIGNMENTS CALLS RNA_STAR RNA_TOPHAT));
5353
const my @AVAILABLE_COMPOSITE_FILTERS => (qw(not_sanger_workflow caller max_dataset_GB multi_tumour sanger_version broad_version dkfz_embl_version jamboree_approved manual_donor_blacklist));
5454
const my $DEFAULT_URL => 'http://pancancer.info/gnos_metadata/latest';
5555
const my $GTDL_COMMAND => '%s%s --max-children 3 --rate-limit 200 -vv -c %s -d %scghub/data/analysis/download/%s -p %s';
@@ -152,6 +152,10 @@ sub pull_data {
152152
$check_ref = \&check_alignments;
153153
$code_ref = \&pull_alignments;
154154
}
155+
elsif($options->{'analysis'} =~ m/^RNA/) {
156+
$check_ref = \&check_rna_alignments;
157+
$code_ref = \&pull_rna_alignments;
158+
}
155159

156160
my $thread_count = $options->{'threads'};
157161
if($CAN_USE_THREADS == 0) {
@@ -218,6 +222,39 @@ sub check_or_create_symlink {
218222
return 1;
219223
}
220224

225+
sub check_rna_alignments{
226+
my ($options, $donor, $outbase, $donor_base) = @_;
227+
warn "Checking $donor->{donor_unique_id}\n";
228+
$options->{'analysis'} =~ m/^RNA_(.+)/;
229+
my $rna_type = lc $1;
230+
my $to_do = 0;
231+
# for normal:
232+
if(exists $donor->{'rna_seq'}->{'alignment'}->{'normal'}->{$rna_type}) {
233+
$to_do += check_bam($options, $donor->{'donor_unique_id'}, $donor->{'rna_seq'}->{'alignment'}->{'normal'}->{$rna_type}, $outbase, $donor_base, 'rna/'.$rna_type.'/normal');
234+
}
235+
236+
# for tumour
237+
for my $tumour_data(@{$donor->{'rna_seq'}->{'alignment'}->{'tumor'}}) {
238+
$to_do += check_bam($options, $donor->{'donor_unique_id'}, $tumour_data->{$rna_type}, $outbase, $donor_base, 'rna/'.$rna_type.'/tumour');
239+
}
240+
return $to_do;
241+
}
242+
243+
sub pull_rna_alignments {
244+
my ($options, $donor, $outbase, $donor_base) = @_;
245+
$options->{'analysis'} =~ m/^RNA_(.+)/;
246+
my $rna_type = lc $1;
247+
# for normal:
248+
if(exists $donor->{'rna_seq'}->{'alignment'}->{'normal'}->{$rna_type}) {
249+
pull_bam($options, $donor->{'donor_unique_id'}, $donor->{'rna_seq'}->{'alignment'}->{'normal'}->{$rna_type}, $outbase, $donor_base, 'rna/'.$rna_type.'/normal');
250+
}
251+
252+
# for tumour
253+
for my $tumour_data(@{$donor->{'rna_seq'}->{'alignment'}->{'tumor'}}) {
254+
pull_bam($options, $donor->{'donor_unique_id'}, $tumour_data->{$rna_type}, $outbase, $donor_base, 'rna/'.$rna_type.'/tumour');
255+
}
256+
}
257+
221258
sub check_alignments {
222259
my ($options, $donor, $outbase, $donor_base) = @_;
223260
warn "Checking $donor->{donor_unique_id}\n";
@@ -254,8 +291,8 @@ sub check_bam {
254291

255292
if(-e $success) {
256293
check_or_create_symlink($orig_bam, $sym_bam);
257-
check_or_create_symlink($orig_bam.'.bai', $sym_bam.'.bai');
258-
create_bas($repo, $gnos_id, $sym_bam);
294+
check_or_create_symlink($orig_bam.'.bai', $sym_bam.'.bai') if(-e $orig_bam.'.bai');
295+
create_bas($repo, $gnos_id, $sym_bam) unless($options->{'analysis'} =~ m/^RNA/);
259296
return 0;
260297
}
261298

@@ -277,7 +314,6 @@ sub pull_alignments {
277314

278315
sub pull_bam {
279316
my ($options, $donor_id, $bam_data, $outbase, $donor_base, $type) = @_;
280-
281317
my $repo = select_repo($options, $bam_data->{'aligned_bam'}->{'gnos_repo'});
282318
unless(exists $options->{'keys'}->{$repo}) {
283319
warn sprintf "Skipping %s BAM for Donor %s - No permission key for repo %s", $type, $donor_id, $repo;
@@ -297,8 +333,8 @@ sub pull_bam {
297333

298334
if(-e $success) {
299335
check_or_create_symlink($orig_bam, $sym_bam);
300-
check_or_create_symlink($orig_bam.'.bai', $sym_bam.'.bai');
301-
create_bas($repo, $gnos_id, $sym_bam);
336+
check_or_create_symlink($orig_bam.'.bai', $sym_bam.'.bai') if(-e $orig_bam.'.bai');
337+
create_bas($repo, $gnos_id, $sym_bam) unless($options->{'analysis'} =~ m/^RNA/);
302338
return;
303339
}
304340
return if($options->{'symlinks'});
@@ -329,8 +365,9 @@ sub pull_bam {
329365
unlink $err_file;
330366

331367
check_or_create_symlink($orig_bam, $sym_bam);
332-
check_or_create_symlink($orig_bam.'.bai', $sym_bam.'.bai');
333-
my $bas_valid = create_bas($repo, $gnos_id, $sym_bam);
368+
check_or_create_symlink($orig_bam.'.bai', $sym_bam.'.bai') if(-e $orig_bam.'.bai');
369+
my $bas_valid = 1;
370+
$bas_valid = create_bas($repo, $gnos_id, $sym_bam) unless($options->{'analysis'} =~ m/^RNA/);
334371

335372
if($bas_valid == 1) {
336373
# touch a success file in the output loc
@@ -516,13 +553,15 @@ sub load_data {
516553
warn sprintf "Donor: %s blacklisted\n", $donor->{'donor_unique_id'} if($options->{'debug'});
517554
next;
518555
}
519-
unless($donor->{'flags'}->{'is_normal_specimen_aligned'}) {
520-
warn sprintf "Donor: %s normal sample not aligned\n", $donor->{'donor_unique_id'} if($options->{'debug'});
521-
next;
522-
}
523-
unless($donor->{'flags'}->{'are_all_tumor_specimens_aligned'}) {
524-
warn sprintf "Donor: %s all tumour samples not aligned\n", $donor->{'donor_unique_id'} if($options->{'debug'});
525-
next;
556+
unless($options->{'analysis'} =~ m/^RNA/) {
557+
unless($donor->{'flags'}->{'is_normal_specimen_aligned'}) {
558+
warn sprintf "Donor: %s normal sample not aligned\n", $donor->{'donor_unique_id'} if($options->{'debug'});
559+
next;
560+
}
561+
unless($donor->{'flags'}->{'are_all_tumor_specimens_aligned'}) {
562+
warn sprintf "Donor: %s all tumour samples not aligned\n", $donor->{'donor_unique_id'} if($options->{'debug'});
563+
next;
564+
}
526565
}
527566

528567
if(exists $options->{'COMPOSITE_FILTERS'}->{'multi_tumour'} && $donor->{'flags'}->{'all_tumor_specimen_aliquot_counts'} == 1) {
@@ -572,7 +611,11 @@ sub load_data {
572611
warn sprintf "Donor: %s has no variant calling available\n", $donor->{'donor_unique_id'} if($options->{'debug'});
573612
next;
574613
}
575-
614+
}
615+
elsif($options->{'analysis'} =~ m/^RNA_(.+)/) {
616+
my $rna_type = lc $1;
617+
next unless( $donor->{'flags'}->{'is_tumor_'.$rna_type.'_rna_seq_alignment_performed'}
618+
|| $donor->{'flags'}->{'is_normal_'.$rna_type.'_rna_seq_alignment_performed'});
576619
}
577620
else {
578621
my $size = data_size_alignments_gb($options, $donor);

c/Makefile

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ MD := mkdir
5555
#Build target executable
5656
BAM_STATS_TARGET=../bin/bam_stats
5757
SQ_TARGET=../bin/reheadSQ
58+
BAM_DIFF=../bin/diff_bams
5859

5960
#
6061
# The following part of the makefile is generic; it can be used to
@@ -66,7 +67,7 @@ SQ_TARGET=../bin/reheadSQ
6667

6768
.NOTPARALLEL: test
6869

69-
all: clean pre make_htslib_tmp $(BAM_STATS_TARGET) $(BAM2BG_TARGET) $(BAM2BW_TARGET) test remove_htslib_tmp $(CAT_TARGET) $(SQ_TARGET)
70+
all: clean pre make_htslib_tmp $(BAM_STATS_TARGET) $(BAM2BG_TARGET) $(BAM2BW_TARGET) $(BAM_DIFF) test remove_htslib_tmp $(CAT_TARGET) $(SQ_TARGET)
7071
@echo bam_stats and reheadSQ compiled.
7172

7273
$(BAM_STATS_TARGET): $(OBJS)
@@ -75,6 +76,9 @@ $(BAM_STATS_TARGET): $(OBJS)
7576
$(SQ_TARGET):
7677
$(CC) $(CFLAGS) ./reheadSQ.c -o $(SQ_TARGET)
7778

79+
$(BAM_DIFF):
80+
$(CC) $(CFLAGS) $(INCLUDES) -o $(BAM_DIFF) $(OBJS) $(LFLAGS) $(LIBS) ./diff_bams.c
81+
7882

7983
#Unit Tests
8084
test: $(BAM_STATS_TARGET)
@@ -97,7 +101,7 @@ remove_htslib_tmp:
97101

98102
copyscript:
99103
cp ./scripts/* ./bin/
100-
chmod a+x $(BAM_STATS_TARGET) $(CAT_TARGET) $(SQ_TARGET) $(BAM2BW_TARGET) $(BAM2BG_TARGET)
104+
chmod a+x $(BAM_STATS_TARGET) $(CAT_TARGET) $(SQ_TARGET) $(BAM2BW_TARGET) $(BAM2BG_TARGET) $(BAM_DIFF)
101105

102106
valgrind:
103107
VALGRIND="valgrind --log-file=/tmp/valgrind-%p.log" $(MAKE)
@@ -112,7 +116,7 @@ valgrind:
112116

113117
clean:
114118
@echo clean
115-
$(RM) ./*.o *~ $(BAM_STATS_TARGET) $(SQ_TARGET) ./tests/tests_log $(TESTS) ./*.gcda ./*.gcov ./*.gcno *.gcda *.gcov *.gcno ./tests/*.gcda ./tests/*.gcov ./tests/*.gcno
119+
$(RM) ./*.o *~ $(BAM_STATS_TARGET) $(SQ_TARGET) $(BAM_DIFF) ./tests/tests_log $(TESTS) ./*.gcda ./*.gcov ./*.gcno *.gcda *.gcov *.gcno ./tests/*.gcda ./tests/*.gcov ./tests/*.gcno
116120
-rm -rf $(HTSTMP)
117121

118122
depend: $(SRCS)

0 commit comments

Comments
 (0)