Mercurial > repos > joachim-jacob > qualimap_suite
comparison bamqc_wrapper.pl @ 2:934cd08c77af draft
Uploaded
author | joachim-jacob |
---|---|
date | Tue, 12 Feb 2013 04:48:36 -0500 |
parents | |
children | 3d690162d629 |
comparison
equal
deleted
inserted
replaced
1:59c0a4f9c9ff | 2:934cd08c77af |
---|---|
1 #!/usr/bin/perl | |
2 # bamqc_wrapper.pl | |
3 # Joachim Jacob - joachim.jacob@gmail.com - 2013 | |
4 | |
5 use strict; | |
6 use File::Temp 'tempdir'; | |
7 use File::Basename; | |
8 use Log::Log4perl qw(:easy); | |
9 | |
10 # ---------------------- Prepping Logging -----------------------------# | |
11 ######################################################################## | |
12 # Log levels: $DEBUG $INFO $WARN $ERROR $FATAL | |
13 # ConversionPattern: %d %-5p %F{1} [%M] (line %L): %m%n%n | |
14 my $log_conf = q/ | |
15 log4perl.category = ERROR, Screen | |
16 log4perl.appender.Screen.stderr=1 | |
17 log4perl.appender.Screen.layout=Log::Log4perl::Layout::PatternLayout | |
18 log4perl.appender.Screen.layout.ConversionPattern = %d %-5p %m%n | |
19 log4perl.appender.Screen = Log::Log4perl::Appender::Screen | |
20 /; | |
21 | |
22 Log::Log4perl::init( \$log_conf ); | |
23 my $logger = get_logger(); | |
24 | |
25 # ----------------- Getting parameters file ---------------------------# | |
26 ######################################################################## | |
27 my ($configfile) = @ARGV; | |
28 my (%para); | |
29 open(CONFIG,"<$configfile"); | |
30 while (<CONFIG>) { | |
31 if (/(\S+)==(.+)$/){ $para{ $1 } = $2 ; } | |
32 } | |
33 close(CONFIG); | |
34 | |
35 =Excerpt Config parameters | |
36 | |
37 ## first we pass some galaxy environment variables | |
38 galtemp==${__new_file_path__} | |
39 | |
40 bam==$bam | |
41 c==$c | |
42 hm==$hm | |
43 nr==$nr | |
44 #if $customgtf.upload=="yes" | |
45 gff==$customgtf.gff | |
46 os==$customgtf.os | |
47 p==$customgtf.p | |
48 #end if | |
49 | |
50 =cut | |
51 | |
52 for my $para (keys %para){ | |
53 INFO "$para\tset to\t$para{$para}"; | |
54 } | |
55 | |
56 | |
57 # ---------------------- Prepping temp dir ----------------------------# | |
58 ######################################################################## | |
59 # within the temporary directory of Galaxy, we create a temporary dir | |
60 | |
61 my $galtemp = $para{'galtemp'}; | |
62 DEBUG "\nReceived Galaxy temporary directory:\n$galtemp"; | |
63 | |
64 my $tempdir = File::Temp->tempdir('tmpXXXXX', DIR => $galtemp, CLEANUP => 1); | |
65 mkdir "$tempdir", 077 unless -d "$tempdir"; | |
66 INFO "\nTemporary directory:\n$tempdir"; | |
67 | |
68 | |
69 # ---------------------- Output files ---------------------------------# | |
70 ######################################################################## | |
71 # Two possible scenarios | |
72 # - output is written to the file at the output location in config file | |
73 # - output is moved to the output file location | |
74 | |
75 # open (SAMOUTPUT, ">$para{'output_sam'}") | |
76 # or ( ERROR "Could not open output file for writing! (file:$para{'output_sam'}" and die ); | |
77 # print SAMOUTPUT "Here comes sam\n"; | |
78 # close (SAMOUTPUT); | |
79 | |
80 | |
81 # -------------------- Assembling command ----------------------------# | |
82 ######################################################################## | |
83 my $outdir="bamqc_output"; | |
84 my $qualimap_path=""; # for tool_dependency later on | |
85 my $command = $qualimap_path."qualimap bamqc --outdir $outdir"; # this will ultimately be executed | |
86 | |
87 # based on parameters, which are called by $para{'parametername'} | |
88 # the command is assembled | |
89 $command .= " -bam $para{'bam'} -hm $para{'hm'} -nr $para{'nr'}"; | |
90 if($para{'c'}){$command .= " $para{'c'} "; } | |
91 if ( $para{'gff'} ){ | |
92 $command .= " -gff $para{'gff'} -p $para{'p'} "; | |
93 if($para{'os'}) { | |
94 $command .= $para{'os'}; | |
95 } | |
96 } | |
97 | |
98 $command .= " -nt 4 -outformat HTML"; | |
99 | |
100 | |
101 # --------------------- Executing command ----------------------------# | |
102 ######################################################################## | |
103 run_process($command, "qualimap bamqc", "."); | |
104 | |
105 | |
106 # ----------------- Postprocessing command ---------------------------# | |
107 ######################################################################## | |
108 # Hackish !! | |
109 | |
110 my $librarydir = dirname($para{'bamqc_result'}); | |
111 my $jobworkdir = dirname($para{'outputdir'}); | |
112 my $files_path_name = basename($para{'outputdir'}); | |
113 INFO "\n Librarydir = $librarydir \n jobworkdir = $jobworkdir \n files_path_name = $files_path_name \n"; | |
114 system("mv $jobworkdir/bamqc_output $librarydir/$files_path_name") == 0 or die "Could not move output data to $librarydir\n"; | |
115 system("rm -rf $para{'bamqc_result'}") == 0 or die "Could not post-process the results...\n"; | |
116 system("ln -s $librarydir/$files_path_name/qualimapReport.html $para{'bamqc_result'}") == 0 or die "Could not move output data to $librarydir\n"; | |
117 | |
118 | |
119 # --------------------------- Exiting --------------------------------# | |
120 ######################################################################## | |
121 exit 0; | |
122 | |
123 | |
124 | |
125 ### Subroutines ### | |
126 ######################################################################## | |
127 sub run_process { | |
128 my ($command, $name, $tempdir)= @_; | |
129 my $logger = get_logger(); | |
130 INFO "\nProcess to launch:\n $command\nIn directory\n$tempdir\n"; | |
131 system("cd $tempdir; $command 2>/dev/null") == 0 or die "$name failed\nExit status $?\nCommand: $command"; | |
132 if ($? == -1) { | |
133 print "failed to execute: $!\n"; | |
134 } elsif ($? & 127) { | |
135 printf "child died with signal %d, %s coredump\n", ($? & 127), ($? & 128) ? 'with' : 'without'; | |
136 } else { | |
137 printf "$name executed successfully\n", $? >> 8; | |
138 } | |
139 } | |
140 | |
141 | |
142 |