Next: Project development
Up: The Plan
Previous: The Plan
A considerable base of software was available to the students by using
the Quail system (Oldford et al) which includes:
- the Common Lisp programming language including its powerful object system
allowing multiple class inheritance and generic functions which can type on any
number of arguments.
-
a base programming environment supplied by the Macintosh Common Lisp vendor
(Digitool, 1997) which is quite modern -- providing lisp file editors, incremental
compilation, program steppers, process backtrace, structure inspectors, and some
program analysis tools (who calls, etc.).
Similar features are available for the PC from Franz Lisp for their
Allegro Common Lisp (1997).
- Quail's multidimensional arrays including
-- array mapping operators along any dimensions
-- sorting, permuting, ranking along any dimensions
-- usual matrix operators including solution of linear systems
-- matrix decomposition objects (e.g. QR, LU, SVD,
)
- Quail's statistical functionality including
Summary statistics -- mean, median, percentiles, standard deviation,
Data objects -- array objects containing some meta-data
information.
Model objects -- Extended Wilkinson-Rogers specification of
generalized additive models (e.g. see
Chambers and Hastie, 1992). Only the
Gaussian linear model class is needed
for the course. See Anglin and Oldford (1993)
for further detail.
Fit objects -- contains pointers to the model, the data, and
results of fitting one to the other.
Probability objects -- classes representing a standard
suite of univariate discrete and continuous
distributions with each providing a
variety of probability
calculations and pseudo-random variate generation.
- Quail's graphic objects. The model for these was first introduced
in Hurley and Oldford (1991) and can be seen in an early demonstration
in the video Hurley and Oldford (1988).
Views and viewed-objects
-- A graphic in Quail is a data structure
called a view which can be displayed simultaneously
in any number of viewports. The metaphor is that each
graphic is a ``view'' of some other object, its viewed-object. Hence every view data structure retains
a pointer to the viewed object.
Compound views -- views which contain subviews. Compound views
position their subviews in a display. The compound view
and every subview may have its own viewed-object; subviews
can themselves be compound views.
Stock statistical graphics -- dotplots, boxplots, histograms,
stem and leaf, 2 & 3D scatterplots, 2 & 3D function
plots, scatterplot matrices,
brushing, linking,
Controls -- needle-sliders, bar-sliders, push-buttons,
editable text-input, dialogs, pop-up menus.
These could operate on anything.
View layouts -- compound views which layout subviews
in row, column, or grid fashion, or more generally
at arbitrary positions specified by the user.
Interactive display -- every view responds to three mouse
buttons (left, middle, right) alone or in combination with
two modifier keys (shift and ctrl). Unmodified mouse buttons
typically produce menus which refer to the physical display
of the selected view; ctrl-mouse buttons refer to the
viewed-object of the selected view.
- Two strategic functions having methods for any object
(Signposts object
)
-- returns a list
of ``signposts'' particular to the given object; each signpost is
a kind of control button view which if displayed and
mouse selected would lead to some other relevant display
peculiar to that signpost from that object.
(Display object
)
-- returns a view, which
if drawn would produce a reasonable display of the given object.
Display always accepts a boolean argument :signposts? which
if true will return a view augmented by signposts.
Ctrl-middle-mouse on any view pops a menu offering the user the
opportunity to call display on the viewed-object, with or without
signposts.
This means from a display, any viewed-object could be interacted
with directly.
Other object oriented systems allowing user defined
classes and generic functions could also be used.
The critical base language features are the ability for the user to define classes
having inheritance,
generic functions, and to specialize system defined methods.
Programmatic construction, display, and
manipulation of statistical graphics is also
essential.
Next: Project development
Up: The Plan
Previous: The Plan
2000-05-17