LASSPTools:

Graphical and Numerical Extensions to Unix

Table of Contents

OVERVIEW

LASSPTools is a collection of Unix utilities for numerical analysis and graphics. It was written around 1990, before Linux, before the World Wide Web. Considering that, many of the tools remain remarkably useful.

The operating system of most computers is designed around their primary use: text processing. We provide the same system utilities for number crunching and dynamical displays of results that are available for sorting, searching, and manipulating text files. The files are available without charge via the World Wide Web.

For example, it's currently an incredible pain to plot spheres on your screen. We've cured this with PlotAtoms.

Pipe your coordinates to PlotAtoms, and you immediately have a movie of your results! Selecting the figure above will show an mpeg film captured from the original: the quality and speed of the mpeg film is much inferior to the original. Other examples are also available.

The LASSP Software toolkit is a set of more than 35 programs for assisting researchers in physics and engineering. The tools are available on Linux (recompiled April 2002), and have been compiled on a variety of other Unix platforms. LASSPTools was developed at Cornell University as part of the Cornell-IBM Joint Study on Computing for Scientific Research.

The tools perform various functions and roughly can be grouped into the following categories:

The programs typically are used together in pipelines to generate, manipulate and display data. For example, raw data may be run through a numerical transformation, a section selected via a filtering program and the results sent to a program to animate the results graphically.

SETUP

In our local setup, we store LASSPTools in `/usr/local/pub/tools', and set our path variables to search there for executables and man pages.

To run the programs, you must have `/usr/local/pub/tools/bin' in your `path' environment variable. Here at LASSP, we have an example of this in `/usr/local/skel/.cshrc'.

To access the documentation, you must have `/usr/local/pub/tools/man' in your MANPATH environment variable. Locals can see an example of this in
`/usr/local/skel/.login'.

SOURCE AND BINARIES

The source and binaries are available without charge from the World Wide Web.

DESCRIPTIONS

The following is a list of the LASSPTools programs and a brief description of each program.

Analog Input Devices

rotate - Rotate is an interactive data entry device which puts up a rotation ball with axes, and allows the user to pick a rotation matrix.

slider - Slider is an interactive data entry device which puts up a number of slider widgets, and allows the user to set values within user specified ranges.

items - Items produces a data entry window, with output to stdout. (Slider without the sliders.)

XYinput - XYinput is an interactive data entry device which opens a coordinates plane with an accompanying options menu. It allows the user to specify coordinate positions by clicking on the 2D plane and pipe them to stdout.

Data Filtering Programs:

3D-2D - 3D-2D is a simple filter for converting lines with triples on them to lines with pairs on them. It also allows extra material which occurs at the end of line to be passed unmodified.

ConvertFrames - ConvertFrames uses the various line_io routines to convert frames of ascii triples to and from binary.

ComplexDoubleMatrices - Converts ASCII matrices to and from binary. Double version.

ComplexFloatMatrices - Convert ASCII matrices to and from binary. Floating point version.

ConvertMatrices - ConvertMatrices uses the various get_matrix and put_matrix routines to convert ascii to and from binary, and files to and from pipes.

ComplexDoubleVectors - Convert ASCII vectors to and from binary. Double version.

ComplexFloatVectors - Convert ASCII vectors to and from binary. Floating point version.

ConvertVectors - ConvertVectors uses the various get_vector and put_vector routines to convert ascii to and from binary, and files to and from pipes. Integer version.

RotateFile - RotateFile is a simple filter for rotating triples of data. It can input the triples only from a file.

RotateStream - RotateStream is a simple filter for rotating triples of data. It can input the triples from a file, pipe or terminal session.

blend - Inserts a smooth curve through data points.

histogram - Histogram reads a list of numbers from the standard input and produces on the standard output a file suitable for input to axis or graph to make a histogram.

rotate_echo - A simple program that helps RotateStream do non-blocking I/O.

rotate_aid - A simple program that helps RotateStream do non-blocking I/O.

slab - slab is a simple filter for passing slices of data. It allows one to use a slider to change the size of the slab being looked at.

sortit - Sortit is a simple filter which takes blocks of input separated by blank lines and sorts each block in terms of the value of the third column of the input, in increasing order.

thin - Thin is a simple filter that reduces the amount of data going down a pipeline.

translate - Translate is a simple filter for translating data sets. It take triples on lines and adds specified amounts to each coordinate. It also allows extra material which occurs at the end of line to be passed unmodified.

Numerical Analysis Filters

DI - DI is a linear algebra program for calculating determinants and inverses, or both. DI accepts matrices from standard input and writes the determinants and inverses to standard output. DI uses the double precision Linpack routines to perform its calculations. Forms Demonstration!

Random - Random is a random number generator. It allows the use of various generators, generates various probability distributions, generates arrays, sums, etc. Forms Demonstration!

Det - Det is a linear algebra program for calculating determinants. Det accepts matrices from standard input and writes the determinants and inverses to standard output. Det uses the double precision Linpack routines to perform its calculations. Forms Demonstration!

Eigen - Eigen is a program for calculating eigenvalues, eigenvectors, or both. Eigen accepts matrices from standard input and writes the eigenvalues and eigenvectors to standard output. Eigen uses the double precision Eispack routines to perform its calculations. Forms Demonstration!

Fourier - Fourier is a program for calculating fourier transforms or inverse fourier transforms. Fourier accepts data from standard input and writes the results to standard output. Fourier uses the double precision fftpack routines to perform its calculations. Fourier does not need any form of zero padding.

Invert - Invert is a linear algebra program for calculating inverses. Invert accepts matrices from standard input and writes the inverses to standard output. Invert uses the double precision Linpack routines to perform its calculations. Forms Demonstration!

MMult - MMult is a program for multiplying two matrices A and B in the order AB. MMult accepts matrices from standard input and writes the product to standard output. The matrix A must number of columns as the matrix B has rows. MMult uses the BLAS routines to perform its calculations.

MSolve - MSolve is a program for solving linear equations of the form Ax = B, where A and B are known and x is unknown. MSolve accepts matrices from standard input and writes the solution to standard output. The matrix A must be invertable but B can be any matrix that has the same number of rows as the matrix A has columns. MSolve uses the double precision Linpack routines to perform its calculations.

fit_it - Fit_it does non-linear least squares parameter fitting on a data file specified on the command line. See also the README in the fit_it src dir.

Graphics and Animation:

DynamicLattice - DynamicLattice is an X-windows graphics program to represent sites on a two-dimensional square (or rectangular) lattice based on their value. This program is "dynamic" in that sites are typically read individually from the standard input stream (stdin) and plotted one at a time. There are three modes of representation: shading, arrows and bonds. The default mode is shading, whereby sites are filled with a colored cell whose color represents the value of the plotted field at that site. In the arrow mode, an arrow is plotted at the specified site where its angle represents the value of the field at that site. In the bond mode, a specified bond is drawn from a site to a neighboring site. In both the arrow and bond modes, the symbol can also be colored to represent another quantity. If such information is not given, all arrows/bonds are colored the same. MPEG Demonstrations available.

PlotAtoms - PlotAtoms is an X-Windows plotting package which accepts x-y pairs from standard input and plots these pairs in the form of spheres. It can also produce multiple pictures in the form of a movie. Other MPEG demonstrations available.

PlotM - PlotM is an X-Windows plotting package which plots atoms in three dimensions, and animates them. It has more sophisticated controls than PlotAtoms, and can also draw bonds between the atoms or just draw sticks in space.

SurfPlot - SurfPlot is a simple program to produce surface plots in three dimensions.

circledraw - Circledraw is an X Window System plotting package which reads a series of circle specifications from standard input and draws them in color in a window. Circles can be drawn continuously into the window with optional clearing of window when specified, or the circles can be plotted off- screen and sent to the screen one-frame-at-atime as in an animation.

matrix2X - matrix2X reads a set of matrices from the standard input and produces a density plot in an X window. The matrices are rows of numbers separated by newlines and matrices separated by blank lines (double newlines). The plot consists of a series of rectangles mimicking the shape of the input matrix which are colored according to the list of colors specified in various possible ways.

meter - Meter is a simple analog style output device. Its level is controlled by the numbers it reads from stdin and its default range is from 0 to 100.

polydraw - polydraw is an X Window System plotting package which reads a series of polygon specifications from standard input and draws them in color in a window. Polygons can be drawn continuously into the window with optional clearing of window when specified, or the polygons can be plotted off-screen and sent to the screen one frame at a time as in an animation. MPEG Demonstrations available.

polydraw3D - polydraw3D is an X Window System like polydraw but reads in one frame polygons in 3D coordinates and can rotate and do a simulated perspective of that frame.

Utility Programs:

lattice2ps - Lattice2ps is a filter to produce a PostScript file which shades elements on a two-dimensional square lattice based on their value. The default produces gray-scale shading from white to black based on the range of values input, although a restricted range can be specified. Color PostScript output can also be generated.

poly2ps - Poly2ps is filter to produce a PostScript file which draws and shades polygons. It is designed to read the same input file (ASCII format only) that polydraw reads. The default is to convert the specified RGB colors to grayscales. This conversion is hard to make general. It will probably need modification unless your color scheme is quite simple (e.g., you draw only red, green, and blue polygons). Alternatively, color postscript output can be created.

axis - Axis with no options takes pairs of numbers from the standard input as abscissas and ordinates of a graph. Successive points are connected by straight lines. The graph is encoded on the standard output for display by the plot filters (for example hpgl or tek10). If the coordinates of a point are followed by a nonnumeric string, that string is printed as a label beginning on the point.

movieaxis - See axis. This variant allows multiple, movie style, plots to be generated.

branch - Branch is a simple datastream splitter. It takes input from stdin and splits it into two output streams. One output stream is sent to the first command and the other to the second command. Note that both commands my have pipes in them.

inter - Inter frees the user from the constrained input file format required by axis, and replaces axis's cryptic commands with real words. The user types commands, or inter reads them from commandfile. If you don't want to remember or learn the appropriate commands, inter0 asks questions instead of waiting for instructions.

laser - A filter for converting plot5 commands to PostScript and sending these to a printer.


Links Back

LASSPTools Demonstrations!
Entertaining Science done at
LASSP.

Last modified: May 22, 1995

Jim Sethna, sethna@lassp.cornell.edu