diff blat_wrapper.pl @ 0:3cec538aab33 draft

Uploaded
author joachim-jacob
date Thu, 30 May 2013 07:13:55 -0400
parents
children da4426cac227
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/blat_wrapper.pl	Thu May 30 07:13:55 2013 -0400
@@ -0,0 +1,167 @@
+#!/usr/bin/perl
+# blat_wrapper.pl
+# Joachim Jacob - joachim.jacob@gmail.com - 2013
+
+use strict;
+use File::Temp 'tempdir';
+use File::Copy qw(move);
+use File::Basename;
+use File::Spec qw(join);
+use Log::Log4perl qw(:easy);
+
+# ---------------------- Prepping Logging -----------------------------#
+########################################################################
+# Log levels: 			$DEBUG	$INFO	$WARN	$ERROR	$FATAL
+# ConversionPattern:	%d %-5p %F{1} [%M] (line %L): %m%n%n
+my $log_conf = q/ 
+    log4perl.category = ERROR, Screen 
+    log4perl.appender.Screen.stderr=1
+    log4perl.appender.Screen.layout=Log::Log4perl::Layout::PatternLayout
+    log4perl.appender.Screen.layout.ConversionPattern = %d %-5p %m%n
+    log4perl.appender.Screen        = Log::Log4perl::Appender::Screen 
+/;
+
+Log::Log4perl::init( \$log_conf );
+my $logger = get_logger();
+
+# ----------------- Getting parameters file ---------------------------#
+########################################################################
+my ($configfile) = @ARGV;
+my (%para);
+open(CONFIG,"<$configfile");
+while (<CONFIG>) {
+	if (/(\S+)==(.+)$/){ $para{ $1 } = $2 ; }
+}
+close(CONFIG);
+
+=Excerpt Config parameters
+			## first we pass some galaxy environment variables
+			galtemp==${__new_file_path__}
+			
+			## first we pass some galaxy environment variables
+			galtemp==${__new_file_path__}
+			
+			#if $refGenomeSource.genomeSource == "indexed"
+				referencepath==${refGenomeSource.index.fields.path}
+				range=$refGenomeSource.range
+			#else
+				referencepath==${refGenomeSource.ownFile}
+			#end if
+
+			input==$input
+			output==$output
+			q==$q
+			t==$t
+
+			advanced_params.use==$advanced_params.use
+			#if $advanced_params.use=="yes"
+				tileSize==$advanced_params.tileSize
+				stepSize==$advanced_params.stepSize
+				oneOff==$advanced_params.oneOff
+				minMatch==$advanced_params.minMatch
+				minScore==$advanced_params.minScore
+				maxGap==$advanced_params.maxGap
+				mask==$advanced_params.mask
+				qMask==$advanced_params.qMask
+				repeats==$advanced_params.repeats
+				trimT==$advanced_params.trimT
+				noTrimA==$advanced_params.noTrimA
+				fine==$advanced_params.fine
+				maxIntron==$advanced_params.maxIntron
+				extendThroughN==$advanced_params.extendThroughN
+			#end if
+=cut
+
+for my $para (keys %para){
+	INFO "$para\tset to\t$para{$para}";
+}
+
+
+# ---------------------- Prepping temp dir ----------------------------#
+########################################################################
+# within the temporary directory of Galaxy, we create a temporary dir
+
+my $galtemp = $para{'galtemp'};
+delete($para{'galtemp'});
+DEBUG "\nReceived Galaxy temporary directory:\n$galtemp";
+
+
+my $tempdir = File::Temp->tempdir('tmpXXXXX', DIR => $galtemp, CLEANUP => 1); 
+mkdir "$tempdir", 077 unless -d "$tempdir";
+INFO "\nTemporary directory:\n$tempdir";
+
+
+# -------------------- Assembling command  ----------------------------#                                                             
+########################################################################                                                             
+my $command = "blat ";   # this will ultimately be executed
+$command .= " $para{'referencepath'}";     
+if ( $para{'range'} ) { 
+	## format checking of the provided range
+	if ($para{'range'} !~ //){
+		ERROR "Range has be wrongly formatted: $para{'range'}";
+	} else {
+		$command .= ":$para{'range'}";
+	}
+} 
+                              
+$command .=  " $para{'input'}";
+delete($para{'referencepath'});
+delete($para{'range'});
+delete($para{'input'});
+
+$command .= " -out=blast9 -q=$para{'q'}  -t=$para{'t'}";
+delete($para{'q'});
+delete($para{'t'});
+
+my $output = " $para{'output'}";
+delete($para{'output'});
+
+if ( $para{'advanced_params.use'} eq "yes" ){
+	delete($para{'advanced_params.use'});
+	$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'} ";
+	if($para{'repeats'} eq 'yes' ){
+		$command .= " -repeats=$para{'qMask'}";
+	}
+	if($para{'extendThroughN'} eq 'yes' ){
+		$command .= " -extendThroughN";
+	}
+	if($para{'fine'} eq 'yes' ){
+		$command .= " -fine";
+	}
+	if($para{'trimT'} eq 'yes' ){
+		$command .= " -trimT";
+	}
+	if($para{'noTrimA'} eq 'yes' ){
+		$command .= " -noTrimA";
+	}
+}
+
+$command .= " $output";                                                                                                                                
+
+
+# --------------------- Executing command  ----------------------------#                                                             
+########################################################################                                                             
+run_process($command, "BLAT alignment", $tempdir);
+
+# --------------------------- Exiting  --------------------------------#                                                             
+########################################################################                                                             
+exit 0;
+
+
+### 					      Subroutines 						     ###
+########################################################################
+sub run_process {
+	my ($command, $name, $tempdir)= @_;
+	my $logger = get_logger();
+	INFO "\nProcess to launch:\n $command\n";
+	system("cd $tempdir; $command 2>/dev/null") == 0 or die "$name failed\nExit status $?\nCommand: $command";
+	if ($? == -1) {
+		print "failed to execute: $!\n";
+	} elsif ($? & 127) {
+		printf "child died with signal %d, %s coredump\n", ($? & 127), ($? & 128) ? 'with' : 'without';
+	} else {
+		printf "$name executed successfully\n", $? >> 8;
+	}	
+}
+
+