Mercurial > repos > joachim-jacob > qualimap_suite
diff bamqc_wrapper.pl @ 2:934cd08c77af draft
Uploaded
author | joachim-jacob |
---|---|
date | Tue, 12 Feb 2013 04:48:36 -0500 |
parents | |
children | 3d690162d629 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bamqc_wrapper.pl Tue Feb 12 04:48:36 2013 -0500 @@ -0,0 +1,142 @@ +#!/usr/bin/perl +# bamqc_wrapper.pl +# Joachim Jacob - joachim.jacob@gmail.com - 2013 + +use strict; +use File::Temp 'tempdir'; +use File::Basename; +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__} + + bam==$bam + c==$c + hm==$hm + nr==$nr + #if $customgtf.upload=="yes" + gff==$customgtf.gff + os==$customgtf.os + p==$customgtf.p + #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'}; +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"; + + +# ---------------------- Output files ---------------------------------# +######################################################################## +# Two possible scenarios +# - output is written to the file at the output location in config file +# - output is moved to the output file location + +# open (SAMOUTPUT, ">$para{'output_sam'}") +# or ( ERROR "Could not open output file for writing! (file:$para{'output_sam'}" and die ); +# print SAMOUTPUT "Here comes sam\n"; +# close (SAMOUTPUT); + + +# -------------------- Assembling command ----------------------------# +######################################################################## +my $outdir="bamqc_output"; +my $qualimap_path=""; # for tool_dependency later on +my $command = $qualimap_path."qualimap bamqc --outdir $outdir"; # this will ultimately be executed + +# based on parameters, which are called by $para{'parametername'} +# the command is assembled +$command .= " -bam $para{'bam'} -hm $para{'hm'} -nr $para{'nr'}"; +if($para{'c'}){$command .= " $para{'c'} "; } +if ( $para{'gff'} ){ + $command .= " -gff $para{'gff'} -p $para{'p'} "; + if($para{'os'}) { + $command .= $para{'os'}; + } +} + +$command .= " -nt 4 -outformat HTML"; + + +# --------------------- Executing command ----------------------------# +######################################################################## +run_process($command, "qualimap bamqc", "."); + + +# ----------------- Postprocessing command ---------------------------# +######################################################################## +# Hackish !! + +my $librarydir = dirname($para{'bamqc_result'}); +my $jobworkdir = dirname($para{'outputdir'}); +my $files_path_name = basename($para{'outputdir'}); +INFO "\n Librarydir = $librarydir \n jobworkdir = $jobworkdir \n files_path_name = $files_path_name \n"; +system("mv $jobworkdir/bamqc_output $librarydir/$files_path_name") == 0 or die "Could not move output data to $librarydir\n"; +system("rm -rf $para{'bamqc_result'}") == 0 or die "Could not post-process the results...\n"; +system("ln -s $librarydir/$files_path_name/qualimapReport.html $para{'bamqc_result'}") == 0 or die "Could not move output data to $librarydir\n"; + + +# --------------------------- Exiting --------------------------------# +######################################################################## +exit 0; + + + +### Subroutines ### +######################################################################## +sub run_process { + my ($command, $name, $tempdir)= @_; + my $logger = get_logger(); + INFO "\nProcess to launch:\n $command\nIn directory\n$tempdir\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; + } +} + + +