annotate template.pm @ 3:a0b27058dcac draft

Uploaded
author davidvanzessen
date Wed, 17 Sep 2014 07:25:17 -0400
parents 2f4298673519
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
1 =head1 NAME
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
2
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
3 template.pm - creates logo output in various formats
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
4
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
5 =head1 SYNOPSIS
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
6
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
7 Perl module
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
8
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
9 =head1 DESCRIPTION
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
10
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
11 logo.cgi and run.pl collect the logo data. They can then enter
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
12 template::create_template to create logo output in the following formats:
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
13
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
14 * EPS
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
15 * GIF
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
16 * PDF
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
17 * PNG
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
18
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
19
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
20
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
21 If the configuration file "logo.conf" exists in the working directory, then
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
22 it will be parsed for the locations of GhostScript (gs) and convert. The
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
23 following is an
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
24 example of the configuration file ("#" at beginning of line indicates
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
25 comment):
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
26
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
27 # Make configuration changes here. Rename this file to logo.conf
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
28 # gs version 5.5 does not work, 6.5 does
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
29 # set the PATHS
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
30 gs=/usr/local/bin/gs
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
31 convert=/usr/X11R6/bin/convert
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
32
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
33 =cut
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
34
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
35 package template;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
36 use strict;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
37
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
38
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
39 ################################################################################
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
40 ######## STATE FOR FILLINGS ##########
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
41 ################################################################################
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
42
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
43 # BARBITS number of bits in vertical y-axis bar
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
44 # CHARWIDTH width of characters in logo
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
45 # COLORSCHEME "a" for amino acid;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
46 # "n" for nucleic acid;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
47 # "b" for black (no color scheme)
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
48 # color scheme
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
49 # DATA string of heights of characters in cm
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
50 # DESC description of aligned sequences
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
51 # FINEPRINT enable adverts/credits
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
52 # LOGOLINES number of lines of logo
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
53 # LOGOHEIGHT height of EACH LINE in logo (in cm)
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
54 # LOGOWIDTH width of final logo in cm
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
55 # LOGOHEIGHTPOINTS height of final logo in points
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
56 # LOGOWIDTHPOINTS height of final logo in points
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
57 # LOGOSTART logo output will begin at residue LOGOSTART
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
58 # LOGOEND logo output will end at residue LOGOEND
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
59 # ERRBAR 1 to include error bar, 0 to exclude
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
60 # ERRORBARFRACTION percent of error bar to show in range [0,1]
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
61 # KIND $AA for amino acid, $NA for nucleic acid
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
62 # NUMBERING 1 to show residue numbers, 0 to exclude
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
63 # OUTLINE 1 to print characters in outline form;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
64 # 0 to print characters in solid form
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
65 # SHOWENDS "d" to show 5' and 3' ends;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
66 # "p" to show N and C termini;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
67 # "-" to exclude end markers
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
68 # SHOWINGBOX "n" to have No boxes around characters;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
69 # "s" to have boxes around characters, with Shrinking;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
70 # "f" to have Filled boxes around characters
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
71 # SHRINKBOOLEAN 1 to shrink characters; 0 to exclude shrinking
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
72 # SHRINKFACTOR amount to shrink in range from 1(no shrinking) to
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
73 # 0(full shrinking)
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
74 # START_NUM start number for very beginning of sequence
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
75 # TITLE title of logo
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
76 # YAXIS 1 to turn on y axis and its labels
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
77
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
78 ################################################################################
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
79 ##### VARIABLES AND DEFAULT VALUES #####
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
80 ################################################################################
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
81
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
82 my %defaults = (
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
83 LOGOHEIGHT => 5,
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
84 LOGOWIDTH => 8,
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
85
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
86 YAXIS => "false",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
87 TITLE => "",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
88 YAXIS_LABEL => "bits",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
89 XAXIS_LABEL => "",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
90
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
91 BARENDS => "false",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
92 OUTLINE => "false",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
93 SHOWINGBOX => "n",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
94 NUMBERING => "false",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
95 #FINEPRINT => "Created by: G. E. Crooks, G. Hon, J.-M. Chandonia & S. E. Brenner, (2002) <weblogo.berkeley.edu>",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
96 FINEPRINT => "weblogo.berkeley.edu",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
97
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
98 ERRORBARFRACTION => "1",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
99 ERRBAR => "0",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
100 SHRINKFACTOR => "1",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
101 START_NUM => "1",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
102
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
103 DEFAULT_COLOR => "black",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
104
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
105 black => "[0 0 0]",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
106 red => "[0.8 0 0]",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
107 green => "[0 0.8 0]",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
108 blue => "[0 0 0.8]",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
109 yellow => "[1 0.7 1.0]",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
110 purple => "[0.8 0 0.8]",
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
111 orange => "[1 0.7 0]"
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
112 );
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
113
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
114 my $AA = 0;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
115 my $NA = 1;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
116 my $PATH;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
117
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
118 ################################################################################
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
119 ##### SOME FUNCTIONS #####
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
120 ################################################################################
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
121
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
122
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
123 sub create_template {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
124 my ($input, $kind, $desc_r, $data_r, $outfile, $path) = @_;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
125
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
126 # set path
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
127 $PATH = $path;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
128
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
129 #Create EPS file
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
130 my %fillings;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
131
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
132 # put parameters in fillings
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
133 makeFillings(\%fillings, $input, $kind, $desc_r, $defaults{FINEPRINT});
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
134
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
135 # set default data if not filled
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
136 setDefaults(\%fillings, \%defaults, scalar @$data_r);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
137
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
138 # put color in fillings
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
139 setColors(\%fillings, \%defaults);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
140
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
141 # put data in fillings
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
142 setData(\%fillings, $data_r);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
143
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
144 # make eps output
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
145 my $eps = fillTemplate("$PATH/template.eps", \%fillings);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
146 my $format = $input->{FORMAT};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
147
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
148 # convert
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
149 my ($gsprog, $convertprog) = getProgs();
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
150
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
151 # print STDERR "(gsprog, convertprog) = ($gsprog, $convertprog)\n";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
152
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
153 my $width = $fillings{LOGOWIDTHPOINTS};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
154 my $height = $fillings{LOGOHEIGHTPOINTS}; # height of entire logo
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
155 my $res = $input->{RES};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
156 my $antialias = (defined $input->{ANTIALIAS} && $input->{ANTIALIAS}) ? "-dTextAlphaBits=4" : "";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
157
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
158 my $r = $width . "x" . $height;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
159
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
160 if( $format eq "EPS" ) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
161 if ($outfile eq "-") { # if standard out
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
162 print $eps;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
163 } else {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
164 open (WRITEME, ">$outfile");
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
165 print WRITEME $eps;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
166 close (WRITEME);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
167 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
168
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
169 } elsif ($format eq "PDF"){
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
170 # print("outfile = $outfile\n");
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
171 my $program = "| $gsprog -sOutputFile=$outfile -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -q -r$res -dDEVICEWIDTHPOINTS=$width -dDEVICEHEIGHTPOINTS=$height -dEmbedAllFonts=true $antialias -dSAFER -dBATCH -dNOPAUSE -_";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
172 open(WRITEME, $program);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
173 print WRITEME "$eps";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
174 close (WRITEME);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
175
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
176 } elsif ( $format eq "PNG" ) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
177 my $program = "| $gsprog -sOutputFile=$outfile -sDEVICE=png16m -q -r$res -dDEVICEWIDTHPOINTS=$width -dDEVICEHEIGHTPOINTS=$height $antialias -dSAFER -dBATCH -dNOPAUSE -_";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
178 #print ("$program");
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
179 open(WRITEME, $program);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
180 print WRITEME "$eps";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
181 close (WRITEME);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
182
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
183 } elsif ($format eq "GIF") {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
184 # convert to EPS first, then GIF
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
185 die "Please check logo.conf: convert program does not exist"
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
186 if (!defined $convertprog || !(-e $convertprog));
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
187
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
188 my $program = "| $gsprog -sOutputFile=- -sDEVICE=png16m -q -r$res -dDEVICEWIDTHPOINTS=$width -dDEVICEHEIGHTPOINTS=$height $antialias -dSAFER -dBATCH -dNOPAUSE -_";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
189
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
190 if ($outfile eq "-") {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
191 $program .= " | $convertprog png:- gif:-";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
192 } else {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
193 $program .= " | $convertprog png:- $outfile";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
194 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
195
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
196 open(WRITEME, $program);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
197 print WRITEME "$eps";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
198 close (WRITEME);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
199 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
200 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
201
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
202 #deprecated
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
203 sub c {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
204 return create_template( @_);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
205 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
206
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
207 sub getProgs {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
208 my ($gsprog, $convertprog) = ("gs", "convert");
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
209
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
210
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
211 # No configuration file, then return defaults.
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
212 return ($gsprog, $convertprog) if (! (-e "$PATH/logo.conf"));
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
213 open (CONF, "$PATH/logo.conf");
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
214
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
215 while (<CONF>) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
216 next if (/^\#/); # skip lines beginning with "#"
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
217 if (m/^gs/i) { # if looks like gs (case insensitive)
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
218 ($gsprog) = ($_ =~ /^\S+\=(.+)$/);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
219 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
220 if (m/^convert/i) { # if looks like convert (case insensitive)
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
221 ($convertprog) = ($_ =~ /^\S+\=(.+)$/);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
222 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
223 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
224
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
225 # Do these fings exist?
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
226 my ($gsprogname) = ($gsprog =~ /^(\S+)/);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
227
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
228 die "Please check $PATH/logo.conf: gs program ($gsprogname) does not exist" if (!defined $gsprogname || !(-e $gsprogname));
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
229 #die "Please check logo.conf: convert program does not exist" if (!defined $convertprog || !(-e $convertprog));
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
230
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
231 return ($gsprog, $convertprog);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
232 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
233
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
234 sub get_eps {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
235 my ($input, $kind, $desc_r, $data_r) = @_;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
236 my %fillings;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
237
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
238 # put parameters in fillings
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
239 makeFillings(\%fillings, $input, $kind, $desc_r);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
240
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
241 # set default data if not filled
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
242 setDefaults(\%fillings, \%defaults, $#$data_r);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
243
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
244 # put data in fillings
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
245 setData(\%fillings, $data_r);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
246
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
247 # make output
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
248 return fillTemplate("$PATH/template.eps", \%fillings);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
249 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
250
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
251 sub fillTemplate {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
252 my ($filename, $fillings) = @_;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
253
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
254 if (not -e $filename) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
255 die "filename ($filename) must exist\n";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
256 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
257
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
258 my $text;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
259 local $/; # slurp mode (undef)
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
260 local *F; # create local filehandle
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
261 open(F, "< $filename\0") || return;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
262 $text = <F>;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
263 close(F);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
264
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
265 #replace {$KEYWORDS} with value in %$fillings hash
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
266 $text =~ s{ \{\$ (.*?) \} }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
267 { exists( $fillings->{$1})
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
268 ? $fillings->{$1}
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
269 : ""
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
270 }gsex;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
271 return $text;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
272 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
273
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
274
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
275 ################################################################################
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
276 ##### FILL THE FILLINGS HERE #####
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
277 ################################################################################
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
278
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
279 sub isChecked {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
280 return 0 if (!defined $_[0]);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
281 return $_[0];
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
282 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
283
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
284 # negative/positive ints
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
285 sub isInt {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
286 return ($_[0] =~ /^[-\+]?\d+$/) ? 1 : 0;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
287 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
288
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
289 sub makeFillings {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
290
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
291 # my ($fillings, $input, $kind, $desc_r, $data_r, $fineprint) = @_;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
292 my ($fillings, $input, $kind, $desc_r, $fineprint) = @_;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
293 $fillings->{KIND} = $kind;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
294 $fillings->{LOGOHEIGHT} = $input->{LOGO_HEIGHT};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
295 $fillings->{LOGOWIDTH} = $input->{LOGO_WIDTH};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
296 $fillings->{OUTLINE} = (isChecked($input->{OUTLINE})) ? "true" : "false";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
297 $fillings->{NUMBERING} = (isChecked($input->{NUMBERING})) ? "true" : "false";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
298 $fillings->{FINEPRINT} = (isChecked($input->{FINEPRINT})) ? $fineprint : "";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
299
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
300 $fillings->{LOGOSTART} = $input->{LOGOSTART};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
301 $fillings->{LOGOEND} = $input->{LOGOEND};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
302 $fillings->{START_NUM} = $input->{START_NUM};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
303
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
304 $fillings->{YAXIS} = (isChecked($input->{YAXIS}) && !isChecked($input->{STRETCH})) ? "true" : "false";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
305
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
306
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
307
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
308 $fillings->{TITLE} = $input->{TITLETEXT};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
309 $fillings->{YAXIS_LABEL} = $input->{YAXIS_LABEL};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
310
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
311 $fillings->{XAXIS_LABEL} = $input->{XAXIS_LABEL};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
312 $fillings->{ERRBAR} = $input->{ERRBAR};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
313 $fillings->{SHOWINGBOX} = (isChecked($input->{SHOWINGBOX})) ? "s" : "n";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
314 $fillings->{SHRINKBOOLEAN} = ($fillings->{SHOWINGBOX} eq "s") ? "true" : "false";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
315 $fillings->{SHRINKFACTOR} = $input->{BOXSHRINK};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
316
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
317 if ((defined $input->{CHARSPERLINE}) &&
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
318 isInt($input->{CHARSPERLINE}) &&
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
319 ($input->{CHARSPERLINE} > 0)) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
320 $fillings->{CHARSPERLINE} = $input->{CHARSPERLINE};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
321 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
322
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
323 if (defined $input->{BARBITS}) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
324 $fillings->{BARBITS} = $input->{BARBITS};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
325 } else {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
326 $fillings->{BARBITS} = ($fillings->{KIND} == $AA) ? 4.3 : 2;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
327 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
328
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
329 if (defined $input->{TICBITS}) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
330 $fillings->{TICBITS} = $input->{TICBITS};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
331 } else {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
332 $fillings->{TICBITS} = 1;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
333 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
334
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
335
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
336
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
337
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
338 # if (isChecked($input->{NOCOLOR})) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
339 # $fillings->{COLORSCHEME} = "b";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
340 # } else {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
341 # $fillings->{COLORSCHEME} = ($kind == $AA) ? "a" : "n";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
342 # }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
343
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
344 #color
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
345 if (defined $input->{DEFAULT_COLOR}) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
346 $fillings->{DEFAULT_COLOR} = (isHexColor( $input->{DEFAULT_COLOR})) ? "c" . $input->{DEFAULT_COLOR} :
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
347 $input->{DEFAULT_COLOR};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
348 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
349
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
350 if (isChecked($input->{SHOWENDS})) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
351 $fillings->{SHOWENDS} = ($fillings->{KIND} == $AA) ? "p" : "d";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
352 } else {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
353 $fillings->{SHOWENDS} = "-";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
354 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
355
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
356 $fillings->{DESC} = getDescription($desc_r, $fillings->{KIND});
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
357
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
358 $fillings->{ERRORBARFRACTION} = $input->{ERRORBARFRACTION};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
359 $fillings->{COLORSCHEME} = $input->{COLORSCHEME};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
360 $fillings->{COLORS} = $input->{COLORS};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
361 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
362
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
363 sub getDescription {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
364 my $returnVal = "";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
365
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
366 foreach (@{$_[0]}) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
367 if(defined($_)) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
368 $returnVal .= "% * $_\n";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
369 } else {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
370 $returnVal .= "% * \n";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
371 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
372 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
373
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
374 if ($_[1] == $AA) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
375 $returnVal .= "% * PROTEIN ALIGNMENT";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
376 } else {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
377 $returnVal .= "% * NUCLEOTIDE ALIGNMENT";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
378 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
379
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
380 return $returnVal;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
381 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
382
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
383
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
384 ################################################################################
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
385 ##### SETTING DEFAULTS #####
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
386 ################################################################################
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
387
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
388 sub setDefaults {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
389 my ($fillings, $defaults, $numchars) = @_;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
390
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
391 $fillings->{LOGOHEIGHT} = $defaults->{LOGOHEIGHT} if !defined $fillings->{LOGOHEIGHT};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
392 $fillings->{LOGOWIDTH} = $defaults->{LOGOWIDTH} if !defined $fillings->{LOGOWIDTH};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
393
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
394 $fillings->{START_NUM} = $defaults->{START_NUM} if !defined $fillings->{START_NUM};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
395 $fillings->{LOGOSTART} = $fillings->{START_NUM} if !defined $fillings->{LOGOSTART};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
396 $fillings->{LOGOEND} = $numchars + $fillings->{LOGOSTART} - 1 if !defined $fillings->{LOGOEND};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
397
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
398 $fillings->{YAXIS} = $defaults->{YAXIS} if !defined $fillings->{YAXIS};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
399 $fillings->{TITLE} = $defaults->{TITLE} if !defined $fillings->{TITLE} || $fillings->{TITLE} eq "";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
400 #$fillings->{YAXIS_LABEL} = $defaults->{YAXIS_LABEL} if !defined $fillings->{YAXIS_LABEL} || $fillings->{YAXIS_LABEL} eq "";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
401 $fillings->{YAXIS_LABEL} = $defaults->{YAXIS_LABEL} if !defined $fillings->{YAXIS_LABEL} ;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
402 $fillings->{XAXIS_LABEL} = $defaults->{XAXIS_LABEL} if !defined $fillings->{XAXIS_LABEL} || $fillings->{XAXIS_LABEL} eq "";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
403
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
404 $fillings->{BARENDS} = $defaults->{BARENDS} if !defined $fillings->{BARENDS};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
405 $fillings->{OUTLINE} = $defaults->{OUTLINE} if !defined $fillings->{OUTLINE};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
406 $fillings->{SHOWINGBOX} = $defaults->{SHOWINGBOX} if !defined $fillings->{SHOWINGBOX};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
407 $fillings->{NUMBERING} = $defaults->{NUMBERING} if !defined $fillings->{NUMBERING};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
408
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
409 $fillings->{ERRORBARFRACTION} = $defaults->{ERRORBARFRACTION} if !defined $fillings->{ERRORBARFRACTION};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
410 $fillings->{SHRINKFACTOR} = $defaults->{SHRINKFACTOR} if !defined $fillings->{SHRINKFACTOR};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
411 $fillings->{ERRBAR} = $defaults->{ERRBAR} if !defined $fillings->{ERRBAR};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
412
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
413 # printf("logostart = %d, start num = %d, numchars = $numchars, logoend = %d\n", $fillings->{LOGOSTART}, $fillings->{START_NUM},
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
414 # $fillings->{LOGOEND});
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
415
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
416 my $givenrange = $fillings->{LOGOEND} - $fillings->{LOGOSTART} + 1;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
417 my $possiblerange = $numchars - ($fillings->{LOGOSTART} - $fillings->{START_NUM});
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
418
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
419 if (!defined $fillings->{CHARSPERLINE} && ($givenrange > $possiblerange)) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
420 $fillings->{CHARSPERLINE} = $numchars - ($fillings->{LOGOSTART} - $fillings->{START_NUM});
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
421 } elsif (!defined $fillings->{CHARSPERLINE}) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
422 $fillings->{CHARSPERLINE} = $fillings->{LOGOEND} - $fillings->{LOGOSTART} + 1;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
423 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
424
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
425 $fillings->{DEFAULT_COLOR} = $defaults->{DEFAULT_COLOR} if !defined $fillings->{DEFAULT_COLOR} ||
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
426 $fillings->{DEFAULT_COLOR} eq "";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
427
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
428 # printf("chars per line = %s\n",$fillings->{CHARSPERLINE});
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
429 # print("givenrange = $givenrange, possiblerange = $possiblerange\n");
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
430
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
431 if ($givenrange > $possiblerange) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
432 $fillings->{LOGOLINES} = roundup($possiblerange / $fillings->{CHARSPERLINE});
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
433 } else {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
434 $fillings->{LOGOLINES} = roundup($givenrange / $fillings->{CHARSPERLINE});
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
435 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
436
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
437 $fillings->{CHARWIDTH} = ($fillings->{LOGOWIDTH} - 1.5) / $fillings->{CHARSPERLINE};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
438
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
439 # # change height if more than 1 line
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
440 # $fillings->{LOGOHEIGHTPOINTS} = int($fillings->{LOGOHEIGHT} * (72 / 2.54)) * $fillings->{LOGOLINES};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
441
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
442 # LOGOHEIGHTPOITNS is the height input by the user
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
443 # $fillings->{LOGOHEIGHTPOINTS} = int($fillings->{LOGOHEIGHT} * (72 / 2.54)); # user specifies height of entire logo
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
444 $fillings->{LOGOHEIGHTPOINTS} = int($fillings->{LOGOHEIGHT} * (72 / 2.54)) * $fillings->{LOGOLINES}; # user specifies height of logo line
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
445 $fillings->{LOGOWIDTHPOINTS} = int($fillings->{LOGOWIDTH} * (72 / 2.54));
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
446
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
447 # LOGOLINEHEIGHT is the height of each logo line, in cm
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
448 # $fillings->{LOGOLINEHEIGHT} = $fillings->{LOGOHEIGHT} / $fillings->{LOGOLINES}; # user specifies height of entire logo
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
449 $fillings->{LOGOLINEHEIGHT} = $fillings->{LOGOHEIGHT}; # user specifies height of logo line
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
450 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
451
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
452 sub roundup {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
453 return ($_[0] - int($_[0]) > 0) ? int($_[0] + 1) : $_[0];
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
454 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
455
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
456
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
457 ################################################################################
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
458 ##### COLORS #####
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
459 ################################################################################
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
460
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
461 sub getDefaultColors {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
462 my ($defaults) = @_;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
463 my $returnVal = "";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
464 $returnVal .= "/black " . $defaults->{black} . " def\n";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
465 $returnVal .= "/red " . $defaults->{red} . " def\n";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
466 $returnVal .= "/green " . $defaults->{green} . " def\n";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
467 $returnVal .= "/blue " . $defaults->{blue} . " def\n";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
468 $returnVal .= "/yellow " . $defaults->{yellow} . " def\n";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
469 $returnVal .= "/purple " . $defaults->{purple} . " def\n";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
470 $returnVal .= "/orange " . $defaults->{orange} . " def\n";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
471
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
472 return $returnVal;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
473 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
474
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
475 sub getNAColors {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
476 my $returnVal = <<END
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
477 % Standard DNA/RNA color scheme
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
478 /colorDict <<
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
479 (G) orange
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
480 (T) red
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
481 (C) blue
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
482 (A) green
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
483 (U) red
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
484 END
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
485 ;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
486
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
487 return $returnVal;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
488 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
489
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
490 sub getAAColors {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
491 my $returnVal = <<END
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
492 % Standard Amino Acid colors
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
493 /colorDict <<
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
494 (G) green
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
495 (S) green
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
496 (T) green
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
497 (Y) green
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
498 (C) green
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
499 (N) purple
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
500 (Q) purple
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
501 (K) blue
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
502 (R) blue
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
503 (H) blue
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
504 (D) red
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
505 (E) red
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
506 (P) black
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
507 (A) black
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
508 (W) black
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
509 (F) black
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
510 (L) black
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
511 (I) black
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
512 (M) black
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
513 (V) black
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
514 END
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
515 ;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
516
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
517 return $returnVal;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
518 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
519
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
520 sub setColors {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
521 my ($fillings, $defaults, $input) = @_;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
522 my $colordef = getDefaultColors($defaults);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
523 my $colordict = "/colorDict <<\n";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
524
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
525 if ($fillings->{COLORSCHEME} eq "DEFAULT") {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
526 $colordef = getDefaultColors($defaults);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
527
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
528 if ($fillings->{KIND} eq $AA) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
529 $colordict = getAAColors();
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
530 } else {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
531 $colordict = getNAColors();
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
532 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
533 } elsif ($fillings->{COLORSCHEME} eq "BW") {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
534 # do nothing for dict
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
535 } else {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
536
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
537 my %colorhash = %{ $fillings->{COLORS} };
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
538 my $colorName = "";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
539
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
540 foreach (keys %colorhash) { # keys are strings of residues, value = color name or color code (FF0000)
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
541 # add color to definitions
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
542 $colorName = $colorhash{$_};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
543
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
544 # print("color = $_\n");
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
545
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
546 addColorDef(\$colordef, $colorName ) if (isHexColor($colorName));
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
547
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
548 # add have each residue use the color
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
549 foreach (split(//, $_)) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
550 # add color to dictionary
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
551 if (isHexColor($colorName)) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
552 $colordict .= " ($_) c$colorName\n" if !($_ =~ /^\s*$/);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
553 } else {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
554 $colordict .= " ($_) $colorName\n" if !($_ =~ /^\s*$/);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
555 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
556 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
557 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
558 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
559
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
560 $colordict .= "\n>> def";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
561
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
562 # add to fillings
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
563 $fillings->{COLORDEF} = $colordef;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
564 $fillings->{COLORDICT} = $colordict;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
565 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
566
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
567 sub addColorDef {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
568 # print("adding to color def\n");
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
569 my ($colordef_r, $color) = @_;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
570 my $PSColor = getPSColor($color);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
571 $$colordef_r .= "/c$color $PSColor def\n";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
572 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
573
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
574 sub isHexColor {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
575 return ($_[0] =~ /^[0-9a-fA-F]+$/) && (length $_[0] == 6);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
576 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
577
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
578 # know that it is hex color
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
579 sub getPSColor {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
580 return "[" . hex(substr($_[0],0,2)) / 255 . " " .
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
581 hex(substr($_[0],2,2)) / 255 . " " .
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
582 hex(substr($_[0],4,2)) / 255 . "]";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
583 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
584
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
585
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
586 ################################################################################
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
587 ##### SETTING DATA FIELD #####
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
588 ################################################################################
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
589
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
590 sub setData {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
591 my ($fillings, $data_r) = @_;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
592
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
593 my @data = @$data_r;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
594 my ($height, $letter);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
595 my @slice;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
596 my $data;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
597 my $start_num = $fillings->{START_NUM};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
598
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
599 my $start = $fillings->{LOGOSTART} - $start_num; # where in @data to start
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
600 my $end = $fillings->{LOGOEND} - $start_num; # where in @data to end
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
601 my $charsperline = $fillings->{CHARSPERLINE};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
602
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
603 my $numlabel = $fillings->{LOGOSTART};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
604
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
605 $end = ($end >= scalar @data) ? (scalar @data - 1) : $end;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
606
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
607 for (my $i=$start ; $i<=$end ; $i++) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
608
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
609 # if add new lines
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
610 # if ((($i - $start) % $charsperline == 0) &&
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
611 # ($i != $start) && # not first one
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
612 # ($i != $end)) { # not last one
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
613 if ((($i - $start) % $charsperline == 0) &&
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
614 ($i != $start)) { # not first one
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
615 $data .= <<END
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
616 EndLine
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
617 StartLine
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
618
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
619 END
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
620 ;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
621 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
622
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
623 @slice = @{$data[$i]};
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
624 $data .= <<END
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
625 ($numlabel) startstack
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
626 END
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
627 ;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
628
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
629 $numlabel++;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
630
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
631 foreach (@slice) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
632 ($letter,$height) = ($_ =~ /^(.{1})(\S+)/);
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
633
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
634 # is space, so leave
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
635 if ($letter eq " ") {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
636 last;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
637 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
638
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
639 # look for ">", which is symbol for error bar, then quit
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
640 if ($letter eq ">") {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
641 last;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
642 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
643
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
644 # # look for negative heights
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
645 # if ($height < 0) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
646 # next;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
647 # }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
648
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
649 $letter = (uc $letter); # always uppercase
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
650 $height = ($height < 0) ? 0 : $height;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
651 $data .= " $height ($letter) numchar\n";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
652 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
653
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
654 # put in error bars -- size is in $height as read in before
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
655 if ($fillings->{ERRBAR} && $letter ne " " && $height != 0) {
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
656 $data .= " $height Ibeam\n";
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
657 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
658
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
659 $data .= <<END
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
660 endstack
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
661
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
662 END
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
663 ;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
664
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
665 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
666
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
667 $fillings->{DATA} = $data;
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
668 }
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
669
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
670 ################################################################################
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
671
2f4298673519 Uploaded
davidvanzessen
parents:
diff changeset
672 1;