annotate variant_effect_predictor/Bio/EnsEMBL/Funcgen/RunnableDB/RunBWA.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 =pod
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 Bio::EnsEMBL::Hive::RunnableDB::Funcgen::RunBWA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 'RunBWA' runs BWA with an input file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 package Bio::EnsEMBL::Funcgen::RunnableDB::RunBWA;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 use base ('Bio::EnsEMBL::Funcgen::RunnableDB::Alignment');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 use Bio::EnsEMBL::DBSQL::DBAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 use Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 use Bio::EnsEMBL::Utils::Exception qw(throw warning stack_trace_dump);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 sub fetch_input { # fetch parameters...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 my $self = shift @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 $self->SUPER::fetch_input();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 $self->_input_dir($self->_output_dir());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 my $input_file = $self->param('input_file') || throw "No input file given";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 $input_file = $self->_input_dir()."/".$input_file;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 if(! -e $input_file){ throw " Couldn't find $input_file"; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 $self->_input_file($input_file);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 my $species = $self->_species();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 my $gender = $self->_cell_type()->gender();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 $gender = $gender ? $gender : "male";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 my $assembly = $self->_assembly();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 #TODO: Maybe check if the index file is really there? Eventually the bwa output will tell you though
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 my $bwa_index = $self->_work_dir()."/bwa_indexes/".$species."/".$species."_".$gender."_".$assembly."_unmasked.fasta";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 $self->_bwa_index($bwa_index);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 my $bwa_bin = $self->param('bwa_bin') || $self->_bin_dir().'/bwa';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 $self->_bwa_bin($bwa_bin);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 sub run {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 my $self = shift @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 my $input_file = $self->_input_file();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 my $bwa_index = $self->_bwa_index();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 my $bwa_bin = $self->_bwa_bin();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 #TODO Pass the location of the binary to be sure we'll be running the right version?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 # my $bwa_cmd = "$bwa_bin aln $bwa_index $input_file";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 #Allow this to work with paired reads?? Maybe not for the moment...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 #in that case pass bwa algorithm as parameter...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 #If using -q make sure we've got the correct Sanger quality scores...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 # $bwa_cmd .= " | $bwa_bin samse $bwa_index - $input_file";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 # $bwa_cmd .= " | samtools view -uS - ";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 # $bwa_cmd .= " | samtools sort - ${input_file}.sorted";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 # if(system($bwa_cmd) != 0){ throw "Problems running $bwa_cmd"; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 #Silent errors seem to be passing... running one command at a time!?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 my $bwa_cmd = "$bwa_bin aln $bwa_index $input_file > ${input_file}.aln";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 if(system($bwa_cmd) != 0){ throw "Problems running $bwa_cmd"; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 $bwa_cmd = "$bwa_bin samse $bwa_index ${input_file}.aln $input_file > ${input_file}.aln.sam";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 if(system($bwa_cmd) != 0){ throw "Problems running $bwa_cmd"; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 if(system("rm ${input_file}.aln") != 0){ warn "Couldn't remove tmp file. Remove it manually."; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 $bwa_cmd = $self->_bin_dir()."/samtools view -uS ${input_file}.aln.sam > ${input_file}.aln.bam";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 if(system($bwa_cmd) != 0){ throw "Problems running $bwa_cmd"; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 if(system("rm ${input_file}.aln.sam") != 0){ warn "Couldn't remove tmp file. Remove it manually."; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 $bwa_cmd = $self->_bin_dir()."/samtools sort ${input_file}.aln.bam ${input_file}.sorted";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 if(system($bwa_cmd) != 0){ throw "Problems running $bwa_cmd"; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 if(system("rm ${input_file}.aln.bam") != 0){ warn "Couldn't remove tmp file. Remove it manually."; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 if(system("rm $input_file") != 0){ warn "Couldn't remove tmp file. Remove it manually."; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 sub write_output { # Nothing to write
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 my $self = shift @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 #Private getter / setter to the bwa indexes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 sub _bwa_index {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 return $_[0]->_getter_setter('bwa_index',$_[1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 #Private getter / setter to the bwa bin
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 sub _bwa_bin {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 return $_[0]->_getter_setter('bwa_bin',$_[1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 1;