annotate blat_wrapper.pl @ 2:df0c23b49a81 draft default tip

Readme updated
author Joachim Jacob <joachim.jacob@gmail.com>
date Wed, 24 Jul 2013 16:35:36 +0200
parents da4426cac227
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
1 #!/usr/bin/perl
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
2 # blat_wrapper.pl
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
3 # Joachim Jacob - joachim.jacob@gmail.com - 2013
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
4
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
5 use strict;
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
6 use File::Temp 'tempdir';
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
7 use File::Copy qw(move);
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
8 use File::Basename;
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
9 use File::Spec qw(join);
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
10 use Log::Log4perl qw(:easy);
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
11
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
12 # ---------------------- Prepping Logging -----------------------------#
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
13 ########################################################################
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
14 # Log levels: $DEBUG $INFO $WARN $ERROR $FATAL
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
15 # ConversionPattern: %d %-5p %F{1} [%M] (line %L): %m%n%n
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
16 my $log_conf = q/
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
17 log4perl.category = ERROR, Screen
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
18 log4perl.appender.Screen.stderr=1
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
19 log4perl.appender.Screen.layout=Log::Log4perl::Layout::PatternLayout
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
20 log4perl.appender.Screen.layout.ConversionPattern = %d %-5p %m%n
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
21 log4perl.appender.Screen = Log::Log4perl::Appender::Screen
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
22 /;
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
23
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
24 Log::Log4perl::init( \$log_conf );
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
25 my $logger = get_logger();
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
26
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
27 # ----------------- Getting parameters file ---------------------------#
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
28 ########################################################################
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
29 my ($configfile) = @ARGV;
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
30 my (%para);
1
da4426cac227 Fixed tests
Joachim Jacob <joachim.jacob@gmail.com>
parents: 0
diff changeset
31 open(CONFIG,"<",$configfile);
0
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
32 while (<CONFIG>) {
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
33 if (/(\S+)==(.+)$/){ $para{ $1 } = $2 ; }
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
34 }
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
35 close(CONFIG);
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
36
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
37 =Excerpt Config parameters
1
da4426cac227 Fixed tests
Joachim Jacob <joachim.jacob@gmail.com>
parents: 0
diff changeset
38
0
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
39 ## first we pass some galaxy environment variables
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
40 galtemp==${__new_file_path__}
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
41
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
42 #if $refGenomeSource.genomeSource == "indexed"
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
43 referencepath==${refGenomeSource.index.fields.path}
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
44 range=$refGenomeSource.range
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
45 #else
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
46 referencepath==${refGenomeSource.ownFile}
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
47 #end if
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
48
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
49 input==$input
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
50 output==$output
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
51 q==$q
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
52 t==$t
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
53
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
54 advanced_params.use==$advanced_params.use
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
55 #if $advanced_params.use=="yes"
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
56 tileSize==$advanced_params.tileSize
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
57 stepSize==$advanced_params.stepSize
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
58 oneOff==$advanced_params.oneOff
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
59 minMatch==$advanced_params.minMatch
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
60 minScore==$advanced_params.minScore
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
61 maxGap==$advanced_params.maxGap
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
62 mask==$advanced_params.mask
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
63 qMask==$advanced_params.qMask
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
64 repeats==$advanced_params.repeats
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
65 trimT==$advanced_params.trimT
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
66 noTrimA==$advanced_params.noTrimA
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
67 fine==$advanced_params.fine
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
68 maxIntron==$advanced_params.maxIntron
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
69 extendThroughN==$advanced_params.extendThroughN
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
70 #end if
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
71 =cut
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
72
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
73 for my $para (keys %para){
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
74 INFO "$para\tset to\t$para{$para}";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
75 }
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
76
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
77 # ---------------------- Prepping temp dir ----------------------------#
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
78 ########################################################################
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
79 # within the temporary directory of Galaxy, we create a temporary dir
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
80
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
81 my $galtemp = $para{'galtemp'};
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
82 delete($para{'galtemp'});
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
83 DEBUG "\nReceived Galaxy temporary directory:\n$galtemp";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
84
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
85
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
86 my $tempdir = File::Temp->tempdir('tmpXXXXX', DIR => $galtemp, CLEANUP => 1);
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
87 mkdir "$tempdir", 077 unless -d "$tempdir";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
88 INFO "\nTemporary directory:\n$tempdir";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
89
1
da4426cac227 Fixed tests
Joachim Jacob <joachim.jacob@gmail.com>
parents: 0
diff changeset
90 # --------------------- Checking executable ---------------------------#
da4426cac227 Fixed tests
Joachim Jacob <joachim.jacob@gmail.com>
parents: 0
diff changeset
91 ########################################################################
da4426cac227 Fixed tests
Joachim Jacob <joachim.jacob@gmail.com>
parents: 0
diff changeset
92 #~ my $command = "which blat ";
da4426cac227 Fixed tests
Joachim Jacob <joachim.jacob@gmail.com>
parents: 0
diff changeset
93 #~ run_process($command, "Testing path", $tempdir);
0
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
94
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
95 # -------------------- Assembling command ----------------------------#
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
96 ########################################################################
1
da4426cac227 Fixed tests
Joachim Jacob <joachim.jacob@gmail.com>
parents: 0
diff changeset
97 my $command = "blat "; # this will ultimately be executed
0
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
98 $command .= " $para{'referencepath'}";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
99 if ( $para{'range'} ) {
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
100 ## format checking of the provided range
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
101 if ($para{'range'} !~ //){
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
102 ERROR "Range has be wrongly formatted: $para{'range'}";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
103 } else {
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
104 $command .= ":$para{'range'}";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
105 }
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
106 }
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
107
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
108 $command .= " $para{'input'}";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
109 delete($para{'referencepath'});
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
110 delete($para{'range'});
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
111 delete($para{'input'});
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
112
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
113 $command .= " -out=blast9 -q=$para{'q'} -t=$para{'t'}";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
114 delete($para{'q'});
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
115 delete($para{'t'});
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
116
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
117 my $output = " $para{'output'}";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
118 delete($para{'output'});
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
119
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
120 if ( $para{'advanced_params.use'} eq "yes" ){
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
121 delete($para{'advanced_params.use'});
1
da4426cac227 Fixed tests
Joachim Jacob <joachim.jacob@gmail.com>
parents: 0
diff changeset
122 $command .= " -minScore=$para{'minScore'} -maxGap=$para{'maxGap'} -mask=$para{'mask'} -qMask=$para{'qMask'} -oneOff=$para{'oneOff'} -minMatch=$para{'minMatch'} -tileSize=$para{'tileSize'} -stepSize=$para{'stepSize'} -maxIntron=$para{'maxIntron'} ";
0
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
123 if($para{'repeats'} eq 'yes' ){
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
124 $command .= " -repeats=$para{'qMask'}";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
125 }
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
126 if($para{'extendThroughN'} eq 'yes' ){
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
127 $command .= " -extendThroughN";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
128 }
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
129 if($para{'fine'} eq 'yes' ){
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
130 $command .= " -fine";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
131 }
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
132 if($para{'trimT'} eq 'yes' ){
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
133 $command .= " -trimT";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
134 }
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
135 if($para{'noTrimA'} eq 'yes' ){
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
136 $command .= " -noTrimA";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
137 }
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
138 }
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
139
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
140 $command .= " $output";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
141
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
142
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
143 # --------------------- Executing command ----------------------------#
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
144 ########################################################################
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
145 run_process($command, "BLAT alignment", $tempdir);
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
146
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
147 # --------------------------- Exiting --------------------------------#
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
148 ########################################################################
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
149 exit 0;
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
150
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
151
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
152 ### Subroutines ###
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
153 ########################################################################
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
154 sub run_process {
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
155 my ($command, $name, $tempdir)= @_;
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
156 my $logger = get_logger();
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
157 INFO "\nProcess to launch:\n $command\n";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
158 system("cd $tempdir; $command 2>/dev/null") == 0 or die "$name failed\nExit status $?\nCommand: $command";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
159 if ($? == -1) {
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
160 print "failed to execute: $!\n";
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
161 } elsif ($? & 127) {
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
162 printf "child died with signal %d, %s coredump\n", ($? & 127), ($? & 128) ? 'with' : 'without';
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
163 } else {
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
164 printf "$name executed successfully\n", $? >> 8;
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
165 }
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
166 }
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
167
3cec538aab33 Uploaded
joachim-jacob
parents:
diff changeset
168