annotate draw_stacked_barplots.pl @ 1:e997b710e38a draft default tip

Uploaded tool help image.
author devteam
date Tue, 03 Jun 2014 14:48:23 -0400
parents 063ecbe59faf
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
1 #!/usr/bin/perl -w
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
2
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
3 # This program draws, in a pdf file, a stacked bars plot for different categories of data and for
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
4 # different criteria. For each criterion a stacked bar is drawn, such that the height of each stacked
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
5 # sub-bar represents the number of elements in each category satisfying that criterion.
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
6 # The input consists of a TABULAR format file, where the left column represents the names of categories
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
7 # and the other columns are headed by the names of criteria, such that each data value in the file
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
8 # represents the number of elements in a certain category satisfying a certain criterion.
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
9 # The output is a PDF file containing a stacked bars plot representing the number of elements in each
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
10 # category satisfying each criterion. The drawing is done using R code.
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
11
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
12
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
13 use strict;
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
14 use warnings;
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
15
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
16 my $criterion;
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
17 my @criteriaArray = ();
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
18 my $criteriaNumber = 0;
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
19 my $lineCounter = 0;
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
20
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
21 #variable to store the names of R script file
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
22 my $r_script;
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
23
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
24 # check to make sure having correct files
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
25 my $usage = "usage: draw_stacked_bar_plot.pl [TABULAR.in] [PDF.out] \n";
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
26 die $usage unless @ARGV == 2;
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
27
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
28 my $categoriesInputFile = $ARGV[0];
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
29
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
30 my $categories_criteria_bars_plot_outputFile = $ARGV[1];
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
31
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
32 #open the input file
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
33 open (INPUT, "<", $categoriesInputFile) || die("Could not open file $categoriesInputFile \n");
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
34 open (OUTPUT, ">", $categories_criteria_bars_plot_outputFile) || die("Could not open file $categories_criteria_bars_plot_outputFile \n");
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
35
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
36 # R script to implement the drawing of a stacked bar plot representing thes significant motifs in each category of motifs
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
37 #construct an R script file
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
38 $r_script = "motif_significance_bar_plot.r";
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
39 open(Rcmd,">", $r_script) or die "Cannot open $r_script \n\n";
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
40 print Rcmd "
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
41 #store the table content of the first file into a matrix
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
42 categoriesTable <- read.table(\"$categoriesInputFile\", header = TRUE);
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
43 categoriesMatrix <- as.matrix(categoriesTable);
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
44
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
45
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
46 #compute the sum of elements in the column with the maximum sum in each matrix
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
47 columnSumsVector <- colSums(categoriesMatrix);
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
48 maxColumn <- max (columnSumsVector);
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
49
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
50 if (maxColumn %% 10 != 0){
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
51 maxColumn <- maxColumn + 10;
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
52 }
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
53
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
54 plotHeight = maxColumn/8;
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
55 criteriaVector <- names(categoriesTable);
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
56
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
57 pdf(file = \"$categories_criteria_bars_plot_outputFile\", width = length(criteriaVector), height = plotHeight, family = \"Times\", pointsize = 12, onefile = TRUE);
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
58
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
59
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
60
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
61 #draw the first barplot
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
62 barplot(categoriesMatrix, ylab = \"No. of elements in each category\", xlab = \"Criteria\", ylim = range(0, maxColumn), col = \"black\", density = c(10, 20, 30, 40, 50, 60, 70, 80), angle = c(45, 90, 135), names.arg = criteriaVector);
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
63
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
64 #draw the legend
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
65 legendX = 0.2;
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
66 legendY = maxColumn;
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
67
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
68 legend (legendX, legendY, legend = rownames(categoriesMatrix), density = c(10, 20, 30, 40, 50, 60, 70, 80), angle = c(45, 90, 135));
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
69
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
70 dev.off();
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
71
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
72 #eof\n";
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
73 close Rcmd;
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
74 system("R --no-restore --no-save --no-readline < $r_script > $r_script.out");
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
75
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
76 #close the input files
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
77 close(OUTPUT);
063ecbe59faf Uploaded tool tarball.
devteam
parents:
diff changeset
78 close(INPUT);