annotate vst_transformation.pl @ 1:7d7d6c743df0 draft default tip

Uploaded corrected tool dependencies.xml
author joachim-jacob
date Wed, 17 Jul 2013 04:07:52 -0400
parents a48dde9abecf
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
1 #!/usr/bin/perl
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
2 # vst_transformation.pl
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
3 # Joachim Jacob - joachim.jacob@vib.be - 2013
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
4
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
5 use strict;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
6 use File::Basename;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
7 use Log::Log4perl qw(:easy);
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
8
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
9 # ---------------------- Prepping Logging -----------------------------#
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
10 ########################################################################
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
11 # Log levels: $DEBUG $INFO $WARN $ERROR $FATAL
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
12 # ConversionPattern: %d %-5p %F{1} [%M] (line %L): %m%n%n
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
13 my $log_conf = q/
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
14 log4perl.category = ERROR, Screen
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
15 log4perl.appender.Screen.stderr=1
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
16 log4perl.appender.Screen.layout=Log::Log4perl::Layout::PatternLayout
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
17 log4perl.appender.Screen.layout.ConversionPattern = %d %-5p %m%n
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
18 log4perl.appender.Screen = Log::Log4perl::Appender::Screen
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
19 /;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
20
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
21 Log::Log4perl::init( \$log_conf );
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
22 my $logger = get_logger();
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
23
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
24 # ----------------- Getting parameters file ---------------------------#
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
25 ########################################################################
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
26 my ($parameters) = @ARGV;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
27 my (%para, @repeat_blocks);
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
28 open(PARAMETERS,"<$parameters");
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
29 while (<PARAMETERS>) {
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
30 if (/(\S+)==(.+)$/){
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
31 $para{$1} = $2;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
32 }
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
33 }
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
34 close(PARAMETERS);
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
35
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
36 =Excerpt Config parameters
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
37 counttable=$counttable
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
38 outtab==$outttab
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
39 html_file==$html_file
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
40
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
41 ##REPEAT BLOCK
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
42 #for $i, $s in enumerate( $replicates )
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
43 replicates_$i==$s.repl_group_name
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
44 replicates_$i==$s.rep_columns
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
45 #end for
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
46
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
47 replicates_$s.repl_group_name==$s.rep_columns
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
48
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
49 =cut
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
50
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
51 for my $para (keys %para){
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
52 INFO "$para==$para{$para}";
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
53 }
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
54
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
55 # --------------------- KNITR SCRIPT ----------------------------------#
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
56 ########################################################################
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
57 # This script compile the HTML output from the R Markdown script below.
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
58 my $htmloutput=$para{'html_file'};
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
59 open(KNITRSCRIPT , ">" , "knitrscript.r");
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
60 print KNITRSCRIPT <<EOF;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
61 require(knitr)
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
62 require(markdown)
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
63 knit("rmarkdownscript.rmd", "temp.md")
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
64 markdownToHTML("temp.md", "$htmloutput")
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
65 EOF
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
66
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
67 # -------------------- R MARKDOWN SCRIPT ------------------------------#
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
68 ########################################################################
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
69 open(RMARKDOWN , ">>" , "rmarkdownscript.rmd");
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
70
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
71 ## Initiating R environment
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
72 ## ---------------------------------------------------------------------
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
73 print RMARKDOWN <<EOF;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
74 VST transformation
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
75 ================================
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
76
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
77 Loading the R environment
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
78 -------------------------
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
79
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
80 ```{r initiating environment, message=FALSE, highlight=TRUE, results="hide"}
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
81 library('DESeq')
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
82 library(reshape)
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
83 library(ggplot2)
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
84 ```
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
85 ----
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
86 EOF
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
87
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
88 ## Reading input
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
89 ## Reshaping parameters
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
90 ## ---------------------------------------------------------------------
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
91 my ($col_names,$row_names, $columns, $repnames, $user_col_names)=("","","","","");
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
92
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
93 # Getting the column numbers and replicate names
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
94 for my $parameter (keys %para){
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
95 if ($parameter =~ /^replicates_(\S+)$/ ) {
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
96 my $rep_name=$1;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
97 my @cols = split(",",$para{$parameter});
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
98 # we need to subtract one from the column number if
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
99 # an column with identifiers is present.
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
100 # This column will be removed from the data when reading in.
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
101 if ( $para{'header_columns'} eq 'TRUE' ){
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
102 foreach (@cols){
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
103 my $colnum = $_-1;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
104 $columns.= $colnum.",";
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
105 }
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
106 } else {
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
107 $columns.=$para{$parameter}.",";
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
108 }
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
109 # We fill a vector of replicate names as many as there are columns
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
110 $repnames.= "\"$rep_name\"," x @cols;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
111 }
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
112 }
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
113 chop $columns;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
114 chop $repnames;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
115
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
116 # If header column is present, this column contains the names of the rows.
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
117 if ( $para{'header_columns'} eq 'TRUE' ) {
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
118 $row_names = ' row.names = 1, '
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
119 }
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
120
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
121 # If the first row contains the column names?
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
122 if ( $para{'header_row'} eq 'TRUE' ) {
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
123 $col_names = ' header=T, ';
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
124 } else {
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
125 $user_col_names = " col.names=c(";
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
126 if ( $para{'header_columns'} eq 'TRUE' ) { $user_col_names .= '"ID",'; }
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
127 $user_col_names .= " $repnames), ";
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
128 }
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
129
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
130 print RMARKDOWN <<EOF;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
131 Reading input
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
132 -------------
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
133 ```{r reading input, message=FALSE, highlight=TRUE}
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
134 filename="$para{'counttable'}"
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
135 raw_counts = read.csv(filename, sep="\t", $col_names $row_names stringsAsFactors=F)
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
136 raw_counts_deseqct = newCountDataSet(raw_counts[,c($columns)], factor(c($repnames)))
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
137 ```
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
138 ----
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
139 EOF
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
140
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
141 ## Applying variance stabilizing transformation
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
142 ## ---------------------------------------------------------------------
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
143 print RMARKDOWN <<EOF;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
144 Performing VST transformation
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
145 -----------------------------
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
146 ```{r vst on raw counts, message=FALSE, highlight=TRUE}
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
147 raw_counts_deseqct = newCountDataSet(raw_counts[,c($columns)], factor(c($repnames)))
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
148 raw_counts_deseqct = estimateSizeFactors(raw_counts_deseqct)
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
149 raw_counts_deseqctBlind = estimateDispersions(raw_counts_deseqct,method="blind")
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
150 vsd = varianceStabilizingTransformation(raw_counts_deseqctBlind)
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
151 vst_raw_counts = exprs(vsd)
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
152 ```
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
153 ----
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
154 EOF
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
155
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
156 ## Plotting and writing results
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
157 ## ---------------------------------------------------------------------
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
158 my ($colnames_out, $gg_legend, $hist_title)=("","","");
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
159 if($para{'header_row'} eq 'TRUE' ) {
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
160 $colnames_out="col.names=NA , ";
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
161 $hist_title='main=paste("Sample",sample),';
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
162 } else {
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
163 $colnames_out="col.names=FALSE , ";
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
164 $gg_legend= '+ theme(legend.position="none") ';
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
165 $hist_title='main="Histogram VST counts", ';
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
166 }
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
167
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
168 print RMARKDOWN <<EOF;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
169 Histograms
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
170 ----------
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
171 ```{r plotting and writing, message=FALSE, echo=FALSE}
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
172 write.table( vst_raw_counts, file = "$para{'outtab'}",
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
173 sep = "\\t", quote = F, $colnames_out row.names=$para{'header_columns'}
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
174 )
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
175 vst_raw_counts_melted = melt(vst_raw_counts)
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
176 colnames(vst_raw_counts_melted)=c("ID","samples","value")
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
177 ggplot( data=vst_raw_counts_melted, aes(value,colour=samples)) + geom_density(alpha=0.2) + labs(x="VST of counts") $gg_legend
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
178 for(sample in colnames(vst_raw_counts)){
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
179 hist(vst_raw_counts[,colnames(vst_raw_counts)==sample],
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
180 $hist_title breaks=80, xlab="VST counts" )
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
181 }
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
182 ```
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
183 ----
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
184
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
185 EOF
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
186
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
187 ## Plotting and writing results out
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
188 ## ---------------------------------------------------------------------
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
189 print RMARKDOWN <<EOF;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
190 Logging R environment
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
191 ---------------------
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
192 ```{r for the log, highlight=FALSE}
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
193 sessionInfo()
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
194 ```
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
195 ----
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
196 EOF
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
197
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
198 # -------------------- Logging scripts --------------------------------#
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
199 ########################################################################
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
200 open(my $knitrscript,"<","knitrscript.r");
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
201 open(my $rmarkdownscript,"<","rmarkdownscript.rmd");
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
202 while(<$knitrscript>){
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
203 INFO $_;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
204 }
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
205 close($knitrscript);
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
206 close($rmarkdownscript);
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
207
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
208
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
209 # -------------------- Assembling command ----------------------------#
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
210 ########################################################################
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
211 my $command = "R CMD BATCH knitrscript.r"; # to execute
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
212
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
213 # --------------------- Executing command ----------------------------#
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
214 ########################################################################
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
215 run_process($command, "Knitting RMarkdown script");
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
216
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
217 # ------------------- Cleaning up and exiting ------------------------#
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
218 ########################################################################
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
219 $command = "rm -rf temp.md knitrscript.r knitrscript.r.Rout rmarkdownscript.rmd";
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
220 run_process($command, "Cleaning up");
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
221 exit 0;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
222
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
223 ### Subroutines ###
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
224 ########################################################################
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
225 sub run_process {
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
226 my ($command, $name)= @_;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
227 my $logger = get_logger();
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
228 INFO "Launching process\n $command\n";
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
229 system("$command 2>/dev/null") == 0 or die "$name failed\nExit status $?\nCommand: $command";
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
230 if ($? == -1) {
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
231 print "failed to execute: $!\n";
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
232 } elsif ($? & 127) {
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
233 printf "child died with signal %d, %s coredump\n", ($? & 127), ($? & 128) ? 'with' : 'without';
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
234 } else {
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
235 printf "$name executed successfully\n", $? >> 8;
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
236 }
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
237 }
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
238
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
239
a48dde9abecf Uploaded initial version
joachim-jacob
parents:
diff changeset
240