[R] RFC: "R::Wrapper" perl module
Aaron J Mackey
ajm6q at virginia.edu
Thu Feb 14 19:56:49 CET 2002
If I actually finished writing this module, would any of you use it?
Would you wish it did something else/different than what's described
below? Any comments or suggestions on its proposed usage, intent, or
syntax are welcome! (An alternative, better name would also be
appreciated) -Aaron
NAME
R::Wrapper - Wrapper around the RS-Perl R module
SYNOPSIS
#!/usr/bin/perl -w
use strict;
use R::Wrapper qw(:all);
my @x = 1 .. 10;
my @y = 1 .. 10;
@x = cumsum(\@x);
plot( { x => \@x,
y => \@y,
main => 'Test Plot'
}
);
__END__
# then, at the command line:
# just view it, nothing else;
% ./script.pl
# after viewing, have the option to save as PDF
# (prompt for filename):
% ./script.pl --pdf
# do the same, but specify filenames in advance:
% ./script.pl --dump=rawdata.txt
% ./script.pl --pdf=testplot.pdf
% ./script.pl --ps=testplot.ps
# only generate the dump, don't preview at all:
% ./script.pl --nopreview --pdf=testplot.pdf
# pipe the postscript to something else:
% ./script.pl --ps="| enscript -Pbiochem_LJ5P"
# the default argument for lpr is -P
% ./script.pl --lpr=biochem_LJP
# send other parameters to lpr (e.g. 2 copies);
% ./script.pl --lpr="-Pwrp_ph56 -#2"
# send pdf's to someone:
% ./script.pl --pdf --email=amackey at virginia.edu --subject="Here's the latest version"
DESCRIPTION
R::Wrapper is meant to be a utility wrapper around the RS-Perl R module.
It currently provides three main features: the first is a visually
"cleaner" interface to the R module's calling interface (and handling
for a few sticky issues the R module has with vectors versus scalars).
The second feature is to automatically "annotate" each page of output
with meta-information about the script (it's name, path, the date,
arguments to the script, etc etc); These annotations will appear at the
bottom of the output page, and are meant to aid in the reproduction of
the data used by the figure(s) at a later date.
The third feature is that R::Wrapper provides automatic recognition for
--dump, --pdf, --ps, --lpr and --email command line switches to scripts
that use R::Wrapper. The point of these switches is that after
"previewing" any plotted data in a graphical window, R::Wrapper will
automatically prompt the user if they wish to dump the raw numerical
data used to generate the plot (--dump), or obtain PDF or postscript
(--pdf and --ps, respectively) versions of the plot (including
annotations); if a filename was not specified at the command line, or if
multiple plots are drawn by the script, the user will be prompted for
each necessary filename. Instead of specifying filenames for --dump,
--pdf and --ps, the outputs can also be piped into another process.
The --lpr option expects arguments to the lpr command, instead of
filenames. The --email option is used in conjunction with the other
options, and specifies that the outputs should be MIME-attached to an
email to be sent to the specified user(s).
R::Wrapper uses the Getopt::Long module to handle command line options,
so scripts that make use of it should 'use R::Wrapper' before any other
processing of @ARGV occurs (R::Wrapper will strip out it's specific
arguments, leaving any others in @ARGV for processing by the script
itself).
MOTIVATION
Currently, our research "flow" looks like this:
1. Generate/collect raw data
2. Use Perl scripts to "munge" or otherwise convert raw data into
tabular format (or import into a relational database)
3. Use R script(s) to analyze, transform and visualize data read in
from tabular format (or obtained out of relational database);
edit script until the desired output formatting/layout is
achieved
4. Edit R scripts furiously to redirect plotting output into
pdf/postscript/etc.
5. Use either Perl or R to (re)generate tabular-formatted plotting
data (for import into publication-quality graphing environments)
R::Wrapper attempts to combine steps 3 through 5 (although it could
also be used in a "super script" that performed steps 1 and 2, if
desired). The advantage of doing this is to keep the definitions for
data production the same: the same set of Perl and R functions are
used to generate "preview" data in step 3, generate hardcopy in step 4
and generate export data in step 5.
SUPPORTED ROUTINES
Currently, R::Wrapper only supports text output (--dump) for plots
generated using the following R functions (as a proof of concept, and
because these are the plotting routines we use most often):
* plot
* points
* lines
TODO
* Add some kind of templating mechanism, so that text output can be
user-controlled.
* Add --dump support for more plotting routines (i.e. 'histogram',
'barplot', 'boxplot', etc. etc.).
AUTHOR
Aaron J Mackey, amackey at virginia.edu
SEE ALSO
perl(1), RS-Perl
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list