Using the Rappture GUI's

We are using rappture from the NanoHub project to create user-friendly GUI's that submit many types of image processing jobs to the cluster on Quarry. The rappture "use model" starts when the user runs the rappture program in a specific directory that contains both an XML-based descriptor for the GUI itself and all the other items needed for a particular application (such as modified programs or scripts that accept input parameters directly from the rappture-generated GUI).

This model is predicated on going to a particular place to do particular things and works quite well for the computer simulations that were the original target of the NanoHub project. For example, after you log onto Karst, you can move to the /N/soft/rhel6/cryoem/Rappture/karst/examples directory and look at some of the rappture examples that are part of our installation. rappture spirograph demoDirectories such as c-example, canvas and graph contain everything necessary to demonstrate a rappture application, while the app-fermi and spirograph directories have a series of sub-directories that perform a single rappture demonstration using many different languages such as Fortran, Python or Tcl (the app-fermi area) or that perform exactly the same rappture demonstration wrapped inside higher and higher levels of complexity (the spirograph area).

Common to all the areas that can run a rappture demonstration are a file called "tool.xml" and an "executable" (either a program specifically compiled to interact with rappture or a script written to interact with rappture). Those two items are the minimal requirements for rappture to do anything useful:

  1. the tool.xml file (the XML-based descriptor for the GUI created by rappture)

  2. a specially constructed executable (what rappture does when the simulate button is pressed)

Each tool.xml file is written to operate with a specific executable, and while it is possible to move a tool.xml file from place to place and to generate a rappture GUI in the new locations, the GUI will not do anything useful unless the appropriate executable is also present.

This type of use model does not apply to most of the image processing problems that will be run using Karst: for the most part, large data sets reside someplace on the system, and completely different image processing tasks are performed using the same data at different times during the analysis. While it is possible to replicate data sets in various different areas (or to tell certain programs where to find starting data), it is not practical to run each image processing job in a different area.

It should be clear from the above description of the standard way rappture works that creating GUI's to perform different jobs involves moving coupled pairs of tool.xml files and executables to the working directory. To facilitate this, we have created simple scripts that handle these details and that must be run before using a particular rappture GUI in a new area. These scripts are all named

                       setup_NAME.sh

where NAME is a valid "rappture'ized" program such as auto3dem, eotest, genericEMAN, refine, etc. A current listing of the available programs can be found elsewhere (and new GUI's can be created when requests are sent to the staff).

These setup scripts install the appropriate tool.xml file, Python script and ancillary documentation (e.g., the general descriptions for commands run via a rappture GUI) into the directory where the setup script is run. Any "ancillary documentation" is placed in a sub-directory called "docs," and existing tool.xml files are saved by giving them a unique new name (tool.xml.time_stamp). In the process of copying the tool.xml file into the current directory, the e-mail address of the user (e.g., user_name@indiana.edu) is inserted into tool.xml as the default e-mail address.

After sucessfully running a rappture application and submitting a job to the queue, two new files will exist:

  1. an executable script: command_time_stamp.sh (or whatever name the users choses)

  2. output from rappture: run[time_stamp].xml

At any point in the future, you can display the rappture GUI as it appeared when the job was submitted to the queue by typing:

          rappture -load run[time_stamp].xml

on the command line. The displayed GUI shows your final inputs to the GUI and the final log file (both the job submission command and your jobs in the queue when this command was submitted).

You can see the current state of your jobs in the queue by typing "myQ.sh" on the command line at any time. You can also see a (very crude) estimate of when queued jobs will start to execute by typing "myRunTimes.sh" on the command line.


SUMMARY: You must type two things on Karst's command line in order to use a rappture GUI to send image processing jobs to the queue:

  1. $ setup_NAME.sh
  2. $ rappture

NAME must be one of the available programs that have been configured to work with rappture, and you must (obviously) insert the appropriate information into the rappture GUI and then press the "Simulate" button.