Back in May 1997 the Electronic Seismologist (ES) attended a workshop with all sorts of seismo-computer geeks and nerds discussing the future direction of seismological software development. A rambling report on this workshop ("The Electronic Seismologist goes to FISSURES", Malone, Seism. Res. Lett. 68(4), 1997) concluded that a new approach to future software projects was needed, one which would better encourage writing sharable, reusable, modular code which would be "future proofed" against changes in hardware, data types, presentation techniques, and a host of other moving targets. At the time the ES had some concerns about seismologists "flocking to a computer science-y solution requiring a significant investment in learning something this new." Indeed, three years later the FISSURES project is a quiet backwater effort with only a few people following up and with limited support by IRIS. Polite inquiry and Web surfing by the ES turned up few examples of possible descendants of that workshop, at least in the U.S. Surprisingly enough, aspects of the FISSURES effort appear to be thriving in Europe. In particular, key aspects of the FISSURES concepts are represented in both the style and content of applications written in Java. Java is being used for seismological tool development at several places in Europe (and a few in the U.S. also). A recent workshop in Europe emphasized just how much work has been done and that there may be a real future to this new way of doing software development. Even though a previous ES column was devoted to using Java in seismology (Winchester and Crotwell, 1999) the ES has not himself broken out of the old habits to learn this new stuff. With neither knowledge to contribute nor any other good excuse to attend this workshop the ES was still interested in what took place and prevailed on one of the key presenters to provide the following report.
THE ORFEUS JAVA WORKSHOP: DISTRIBUTED COMPUTING IN EARTHQUAKE SEISMOLOGY
Early this May, after the European Geophysical Society meeting in Nice, France, the University of Nice, Geosciences Azur hosted about twenty seismologists, computer scientists, and seismologist-computer scientists in Valbonne near Nice for three days for the ORFEUS workshop titled "The Use of Java in Seismological Applications." In fact, the workshop covered much more than Java. We discussed object-oriented programming, the Internet, the IRIS-FISSURES project, and many other topics. So it is much more meaningful to discuss the workshop in the context of its subtitle, "Distributed Computing in Earthquake Seismology."
Why distributed computing? Because object-oriented programming, the Internet, and earthquake observations are all concerned with objects, information, and interactions that are distributed in time and space. This is nothing new for earthquake seismology. For more than a century seismologists have traveled and corresponded worldwide to collect "objects" such as seismograms, to gather information such as geologic knowledge, and to interact with others who are interested in or affected by earthquakes. What is new is that computer science, in the form of the "information highway", provides a shortcut to obtaining such objects and information. Now, thanks to the Internet, desktop workstations, and recent software developments, when an earthquake occurs anywhere in the world an e-seismologist can immediately view and analyze the relevant seismograms from sites all over the world, all with a few clicks of the mouse. The e-seismologist has easy access to phase times, event locations, and moment tensor determinations. In the near future the e-seismologist will be able to interactively calculate these event parameters himself using the latest code residing on a computer on the other side of the world. The results of such analyses and research are rapidly becoming available online with electronic journals and supplements. From the original data to the finished research paper, these "objects" are distributed worldwide and are available with the click of a mouse to seismologists everywhere.
But if seismologists have been doing distributed science for more than a century and if we already have so much on the Internet, why do we need a distributed computing workshop for seismology? Because some of the new computer science tools that are spearheading the "information society" are not evolutionary but rather revolutionary. The Internet is not an evolution of a phone system. The World Wide Web is not an evolution of a printed page. Java is not an evolution of C or Fortran. All of these elements of distributed computing are based on important concepts and operational features that are new and developing very quickly. Therefore, creating and using more comprehensive systems for distributed seismology requires awareness, appreciation, and open-mindedness about the many new and revolutionary information science tools, and constant learning and relearning.
The workshop began with introductory comments by Manfred Baer, chairman of the ORFEUS software working group, and Torild van Eck, who initiated and led the workshop organization. They emphasized several workshop goals: (1) to promote cooperation among seismologists in Europe and worldwide, (2) to introduce distributed computing, Java, and FISSURES, (3) to present existing Java, Internet, and FISSURES seismological software, (4) to initiate and organize collaborative pilot projects, and (5) to develop longer-term goals for distributed computing in earthquake seismology.
I gave an introduction to basic distributed-computing concepts. A key element I emphasized is keeping the data, the analysis logic, and the user interface completely separate--that is COMPLETELY SEPARATE! This is known as three-tiered architecture and imposes a strict modularization of software components so that they can be easily developed and maintained and can be used in many different applications over a local or global network. I also discussed "low tech" distributed computing, that is, Internet computing based on existing, commonly available technology such as standard http servers, HTML, cgi bins, and Java applets. An applet is an object-oriented Java program that resides on a Web server; it is downloaded through a Web page and runs locally on the user's machine. An applet is a fully functional network program-it can be interactive, display sophisticated graphics, perform calculations, and interact with the server. Because an applet resides in one place, it is standardized and easy to maintain and develop; because it runs locally it gives very fast response and does not overtax the server. Thus an applet displays many of the basic aspects and advantages of distributed computing.
There is an example applet, LiveSeis, which is a near-real-time seismogram display for the broadband TGRS network around Nice (http://geoazur.unice.fr/PERSO/lomax/liveseis). The LiveSeis data monitor uses standard http requests to access the latest seismic waveform segments contained in an indexed, disk-file buffer on an Internet server. At regular time intervals, the LiveSeis applet on the client system checks the update time of an index file on the server. When this file has been updated, the LiveSeis applet gets the index of the latest data, reads these data, and appends them to the displayed data. Because it is "low tech", the LiveSeis system may be relatively inefficient, but it is easy to implement on existing http servers and performs well enough to display on the order of ten or more seismic traces with updates every few seconds.
Aladino Govoni from the OGS network (northeast Italy) and I introduced a more advanced method of distributed computing, including the use of Java servlet-applet pairs, and the direct interaction of remote software modules through remote procedure calls using Java RMI or through the FISSURES-CORBA standard.
Sid Hellman and Philip Crotwell used parts of all three days to introduce two core topics of the workshop: object-oriented programming and the Java language. With the object-oriented approach, a computing process (which may run on multiple machines) consists of a number of objects that interact with each other by passing messages. An object contains data (which may be other objects), operations on that data (functions or methods), and usually represents a concise and limited physical or logical entity. Some of the advantages of the object approach are hiding and protection of data, great ease and flexibility of creating and destroying entities dynamically, strict linkage between data type and permitted operations, and the possibility to maintain, modify, and extend code without invalidating existing programs. In a nutshell, an object-oriented approach.
Sid (who was representing both IRIS/PASSCAL and a software development company, Instrumental Software Technologies, Inc.) gave a concise introduction to object-oriented programming that included statements like, "A race car is a vehicle that goes fast, and a pizza delivery truck is a vehicle that has a lot of storage space." This illustrates some of the principle concepts behind object-oriented programming. For example, there are basic classes of objects, like VEHICLES, with general functions like TURN LEFT and general components like SEAT objects. In practice, we extend these base classes to obtain more functional subclasses, like RACE CARS, which contain a POWERFUL ENGINE object and have a GO VERY FAST function, and PIZZA TRUCKS, which contain an ECONOMICAL ENGINE object and have a KEEP THE PIZZA HOT function. But by this point all we could think about was that PIZZA TRUCKS contain PIZZA objects, which can be subclassed into THICK CRUST or THIN CRUST or CALZONE and which may contain CHEESE, or TOMATO, or HAM, or ARTICHOKE objects. This manner of working with hierarchies of conceptual or real objects, and their contents and functionality, is exactly what object-oriented programming languages such as Java are all about and what makes distributed computing practical and robust. It also can make one hungry, and thus we broke for lunch.
After lunch, Sid and Philip went on to give presentations and computer exercises covering Java basics, and I introduced a selection of core Java packages and classes that are of general use. These were important components of the workshop, as most of the participants had little or no exposure to Java. However, recognizing that we could not teach Java or object-oriented programming in a couple of afternoons, the emphasis was on presenting basic Java language elements and illustrating key aspects of object-oriented programming. For those new to Java we recommended the Java Tutorial available on the Web from Sun and other links and references in Lomax (1999) and on the ORFEUS Java software page.
Philip gave several presentations on the IRIS-FISSURES initiative and the CORBA distributed-computing technology on which FISSURES is based. FISSURES is an effort to build a framework for the development of new software applications in seismology. Its aim is to leverage industry standards, such as CORBA and Java, and modern object-oriented programming practices to make the creation of distributed seismological applications that can interact with each other across the Internet easy. Philip indicated that, at the time of the workshop, FISSURES was ready for use by developers, though there are not yet any significant user applications.
Denis Mishin presented the important topics of cross-platform and cross-language development. In the case of Java, Denis discussed the binding of native (i.e., C or Fortran) modules into a Java program. He proposed that for many seismological processing tasks it is a good choice to use native code, despite the loss of portability, since Java is not yet efficient at number crunching and because there is so much powerful, mature, and debugged seismological code around. It was broadlyrecognized at the workshop that the trade-offs between portability, speed, and use of existing code are a major consideration in the use of Java in seismology at the current time. Of course, it is difficult to have distributed computing without portability! Some possible solutions to these dilemmas are given within the FISSURES approach.
Projects, Demonstrations, and Discussions
Aladino and I further discussed distributed seismic network software in the context of seismologists doing all of their work, such as waveform analysis and event location, over the Internet at locations remote from the main network facilities (e.g., in the field, at home, on vacation). The same technology can allow the immediate and transparent exchange and use of picks and other information from neighboring networks-an important issue for networks such as Aladino's in northeast Italy, which borders Austria and Slovenia. We covered various possible architectures for this software and proposed a pilot project to allow the direct exchange of phase picks between networks using Java RMI (Remote Method Invocation).
As a group, we all discussed the design of a Basic Seismogram class with the very ambitious goal of developing such a class during the workshop. A general seismogram class (and other general classes such as a pick class and an event location class) is needed now to allow the development of distributed software; without commonality of class definitions the various components of a distributed system cannot intercommunicate efficiently. Of course, many existing object-oriented seismological software packages and FISSURES already contain seismogram and other classes; the goal of developing a basic seismogram class is to standardize the definition of the minimum class that is compatible with all applications. We consider this topic of utmost importance for future workshops, and we suggest that all those doing seismological software development keep in constant contact with each other with the goal of converging on class commonality. One proposed and practical approach is to continue development on the definitions as defined for FISSURES by Sanders and Crotwell (2000).
During the three days of the workshop there were a number of software demonstrations. Sid demonstrated the Java version of PASSCAL's popular PQL seismic trace viewing tool, called JQL. A beta version of JQL is available at http://www.terra-bytes.com/jql, which supports PQL's main and magnify windows for both mseed and segy data. It also will support multiple file types displayed simultaneously and show any data gaps (time tears) within a miniseed file. ISTI is considering releasing a separate version that utilizes ISTI picking classes and is also planning on writing Java classes for accessing FISSURES seismograms via CORBA.
In addition to FISSURES, Philip showed his Java package TauP (Winchester and Crotwell, 1999) for the calculation of phase travel times in spherical Earth models. Denis introduced the Java evolution of PITSA, JPITSA (http://info.synapse.ru/software/jpitsa), a toolbox for advanced seismogram analysis. The JPITSA Java software was developed at SYNAPSE Science Center under financial support of IRIS to provide the seismological community with an object-oriented, extendable, user-friendly, and cross-platform integrated system for seismological data analysis. JPITSA provides many basic features seismologists require, including easy integration of user algorithms into the work environment. He discussed in detail aspects of the architecture and object-oriented design of JPITSA that make it a powerful, robust, and easily extendible software package.
I presented SeisGram2K, a Java applet and stand-alone application for visualization and basic analysis of seismograms (http://www-geoazur.unice.fr/PERSO/lomax/seisgram/SeisGram2K.html) and a Java applet 3D-seismicity viewer (http://www-geoazur.unice.fr/PERSO/lomax/nlloc/seismicity.html). SeisGram2K displays one or more sets of single trace or 3-component seismograms that are read locally or over the Internet. In addition to basic visualization and analysis functions, SeisGram2K has animated, 3D particle motion visualization, it directly reads GZip and Zip compressed data files, and it allows display and interactive update of seismic phase travel times using the TauP toolkit classes. The SeisGram2K applet is launched as a seismogram visualization applet on several Web sites, including under the ORFEUS-WILBUR system (http://orfeus.knmi.nl) and on the Nice-TGRS LiveSeis data monitor (http://geoazur.unice.fr/PERSO/lomax/liveseis). The 3D seismicity viewer applet displays earthquake locations in a 3D volume that can be interactively rotated, zoomed, and viewed in perspective or orthographic projections. The events can displayed individually, all together, or sequentially as an animation; they are shown as probability density functions (PDF's), maximum-likelihood hypocenters, or confidence ellipsoids. Station locations, associated P and S residuals, geographic and geologic features, and other information can also be displayed.
We all thought that a future workshop should concentrate on distributed computing in seismology, on making available to the seismological community information and software for Java, FISSURES, and other relevant technologies, and on the organization and status of new or ongoing collaborative projects.
We feel that a coordination of our programming efforts and the development and acceptance of standardized class definitions is a prerequisite for maintaining the effective, open software exchange within the seismological community that we have at present, and for developing software for distributed computing in seismology. Developing and agreeing on a number of standardized classes, both using FISSURES and within Java, is urgent. For example, the time-consuming (and costly!) data format conversions with which most seismologists have been confronted can be avoided in the future with these basic definitions.
We closed the workshop by defining some projects and tasks, including: (1) getting the FISSURES definitions and classes available publicly on the Internet (http://www.seis.sc.edu/software/Fissures), (2) defining basic classes such as a seismogram class, (3) launching distributed-computing applications at ORFEUS and other data centers to handle event, network and waveform data requests, (4) launching the pilot project for the exchange of phase picks between networks using Java RMI and FISSURES, and (5) further development and distribution of seismological Java applets such as SeisGram2K and the creation of Java versions of software such as CDLook and rdseed. For more information and up-to-date developments, see http://orfeus.knmi.nl/working.groups/wg4/java-initiative.html.
Anthony Lomax, firstname.lastname@example.org. Figures at http://www-geoazur.unice.fr/PERSO/lomax/projects/javaworkshop/presentations/ (Applet/JavaLang/BasicSeis/DistComp/LiveSeis/)
Manfred Baer, email@example.com
Aladino Govoni, firstname.lastname@example.org
Denis Mishin, email@example.com
We are deeply grateful to Helene Buffet and Anne Deschamps for arranging the workshop accommodations and facilities and for all of their assistance during the workshop.
Lomax, A. (1999). Java for the seismologist, ORFEUS Newsletter 1 (also http://orfeus.knmi.nl/newsletter/vol1no3/java.html).
Sanders, M. and P. Crotwell (2000). FISSURES CORBA Framework for the IRIS consortium, http://www.seis.sc.edu/software/Fissures/Fissures2000.pdf.
Sun Java tutorial, http://java.sun.com/docs/books/tutorial.
Winchester, J. and P. Crotwell (1999). WebWEED and TauP: Java and seismology, Seism. Res. Lett. 70, 81-84 (also see http://www.seis.sc.edu/software/TauP).
SRL encourages guest columnists to contribute to the "Electronic Seismologist." Please contact Steve Malone with your ideas. His e-mail address is firstname.lastname@example.org.
Posted: 21 September 2000