SUN based seismic data acquisition and processing system
SUNWORM is a series of programs running on a SUN SPARCStation with an Analyx A/D S-Bus (model ADDA-1418-166 or AD-1416-166) board which will digitize up to 256 channels of seismic data at nominally 100 samples per second per channel and save time segments of seismic interest (triggered events) to UNIX files in the UW2 trace format. Follow-on programs do automatic processing of these event files to determine preliminary earthquake locations and magnitudes and distribute these results to the seismological community. Data from other sources such as digital telemetered data arriving asynchronously can be merged into the UW2 files in near real-time so that an analyst sees all traces associated with an event. SUNWORM is based on the EARTHWORM concept developed by Alex Bittenbinder and Carl Johnson which uses Ethernet broadcast messages of waveform data by a PC-based data acquisition system and listener processes running on other PCs to process the waveforms. In the SUNWORM model shared memory within a single SPARCStation takes the place of the EARTHWORM Ethernet and standard UNIX Inter-Process Communication (IPC) facilities provide the effective function of a broadcast/listener data exchange. The basis of both systems is that a producer of data simply broadcasts the data for others to listen to and never needs to hear back from any of the listeners. The producer process for a data stream only needs the data source and from none to many listeners may receive the data without the producer process knowing or caring.
The current SUNWORM system at the University of Washington acquires data from an analog telemetered short-period network (160 channels), a digital telemetered broad-band station (3 channels), two USNSN VSAT telemetered broad-band station (3 channels), and six dial-up broad-band stations. Accurate timing is assured by using four independent time sources (Computer clock locked to Internet NTP time, recorded WWVB, recorded time-code generator, and recorded GPS pulses) and a program to compare them. Data from four dial-up broad-band stations are acquired using a modified version of the IRIS SPYDER® system which extracts time-windows of data based on event location and size from preliminary analysis. The system provides initial pager alarms within ~40 seconds of origin time of larger events (M>2.8) and updated alarms and e-mail at the conclusion of event recording (as much as 7 minutes following origin time). Within a minute of event termination, real-time data from all streams are merged into a UW2 format data file on which an analyst can use the picking program, xped to review and modify picks on all data streams (dial-up stations which may take several 10s of minutes to acquire). All waveform and derived data are archived locally and converted to SEED format for archiving at the IRIS Data Management Center.
Currently there are a number of processes associated with the SUNWORM, of which most run on a single SPARCStation. One other process runs as a watch-dog alarm process on a different SPARCStation and yet another collects data from a digital telemetry receiver running on a third SPARCStation. Figure 1 is a block schematic of the main parts of SUNWORM. Manual interaction with the system is done through the program, worm which is described in a later section. The processes currently running or available as part of SUNWORM are the following:
Many of the fundamental parameters of SUNWORM operation are compile time
options contained in the sunworm.h file in the source directory.
See this file for the details.
All other operational parameters and control are in the
~/RUN subdirectory of
the sunworm login home directory
on the main SPARCStation, wiggles or in the worm_run script
file in the ~/BIN subdirectory.
Some files in the ~/RUN directory are used to configure or modify a
running SUNWORM system; others are used by a running
system and should not be changed or deleted by hand.
The system needs little or no routine attention other than to review
and process the events it detects and records; however, changing the
sensitivity of the trigger parameters may be desirable from time to time
based on background seismic noise. Changing such parameters or starting
and stopping the system are done using the program, worm and
files in the ~/RUN directory as described below.
Control of the SUNWORM system is done using the worm command
which must be run from within the ~/RUN directory by the sunworm
user. This command
takes one and only one argument, the choice of which is:
Stopping SUNWORM will likely cause the watch-dog alarm
(worm_check) running on
a different system (gwiz at UofW) to go off and send a message to
the seismic pager (currently code 00999999)
as well as e-mail to the sunworm user and anyone
in its .forward file. If a restart is done fast enough, then
this alarm MAY not be triggered since it only looks for problems
once every ten minutes.
The script, ~/BIN/worm_run configures the actual processes which
are to be used in the standard system.
It should never be run by a user directly. The
worm command is used to stop and start things and it uses the
worm_run script for the current configuration.
This standard configuration can be changed by editting the
worm_run script which will take effect the next time
the system is started with worm start or worm restart.
A knowledgeble user may start and stop other processes by hand; however
those started by hand but not configured into the worm_run
script will not be running after a restart of the system.
If something seems to be wrong
with the current run there may be diagnostic information of interest in
the wormrun.log file in the ~/RUN directory.
The options having to do with the subnet and trigger parameters are
contained in the file, subnets. This file can be edited
by hand at any time but only takes effect after executing
the command, worm reset. It has the following structure:
# Next line contains only enumer edenom equiet
To desensitize a specific subnet one can increase the number of
stations need to trigger (2nd value on a subnet line). To decrease the
over all sensitivity of all individual station triggers increase
the enumer value. The convention is to keep a backup file called
subnets.master file which is semi-permanent and if the regular
subnets file is changed to desensitize any thing, the subnets.master
file can be copied to the subnets file to resensitize to a standard
level. Thus when adding or removing stations, both of these files
should be changed.
There is a bug in the worm_trig routine which will cause it to
possibly continuously trigger if the number of stations in the subnets
list is ever decreased. If the subnets file is changed other than
to change the sensitivity the whole SUNWORM system should be restarted
with the worm restart command.
The file, sta.list in the ~/RUN directory
is a mapping of A/D channel numbers
to station names. Each line contains six items, the first is arbitrary
but is usually the word, station, the next is the A/D channel
number (starting at channel 0)
and should be unique within this file, the next is the station
name or code, followed by the component code and that followed by
the channel ID code (should be `_', underscore, if not defined),
and the last is the minimum number in seconds that a trigger
of this channel should stay active following a transition to its triggered
state. This should be at least the time that a seismic wave will take
to travel from this station to its nearest several neighbors.
This file is read by both the worm_trig process and by
the demultiplexing routine run by worm_proc.
If stations are removed from this file they MUST also be removed from the
subnets files.
On a temporary basis there is also a station list file, sta.list.old
which is used by the routine to convert from UW1 to UW2 after an
event is demultiplexed. The demultiplexer is being rewritten to generate
UW2 directly, but until this is finished and debugged one must update
both of these station files for everything to work properly.
The file in this directory, run_num contains the current run number
of the SUNWORM system and is automatically incremented
each time the system is started by worm_ad.
It should not be changed by hand unless
installing a whole new system.
Some other files in this directory have suffixes of .out which indicate
that they are the diagnostic output files of currently running process
and probably only have interest if there is trouble.
Files with a suffix of .log are the routine logging files of
current processes. Most of these type files start over with each
run and older versions
will have a suffix of their run number added to them automatically
when they are no longer current.
These older versions may be moved to the directory called ~/LOGS
after a new run of SUNWORM is under way.
The file, keep_alive.log is never deleted or renamed
and contains information about every current and previous
run of the SUNWORM system.
Currently the event processing part of SUNWORM is becoming fairly stable
but may continue to evolve over time. The
event processing is started by the script, worm_proc which also
spins off other scripts which run
independently. Currently the worm_proc script
runs the program, worm_dux which demultiplexes the basic
trace-data saved by worm_save into UW-1 trace data format. The
current version of worm_dux uses the file, ~/RUN/sta.list.old
to map channel numbers into station names using the UW1 station/channel
naming convention.
The trace-data are then converted to UW-2 format using uw1-2.
A script called fixtime is then run which uses the program,
timecode2 to compare timing information contained in the data and
possibly change the time in the data headers if needed.
This script will also send e-mail to the sunworm user and anyone
in its .forward file if
something seems to have gone very wrong with the time code systems.
After running fix_time, worm_proc synchronizes
the pick-file name generated by worm_trig and the
data file name so they will be the same, moves them both
to the ~/REVIEW directory, and runs the script, final_proc on
the pick-file in the background.
The script final_proc is the current script configured
to emulate the snaps processing scheme. The current version does not
use cpick since there may still be problems with that program.
Picks based on trigger time are used to try and
locate the event using both spong2 and teles2. Tests of the
solutions are used to determine what type of event it is rather than using
aol at this time. If the event is well located and large enough, e-mail
of the event solution is sent to the sunworm user
as well as alarms using the do_alarm script.
Different types of alarms are sent for different events at different times
(see the Emergency SUNWORM procedures for details).
The ~/REVIEW directory is where the analyst can
review the data to determine which events to process and which to discard.
Final_proc compresses each event data file and moves it
to the /data5/net_ar directory from which it is automatically backed
up onto Exebyte tape periodically.
The last thing final_proc does is merge in broad-band
data with the UW2 trace
data using the scripts, bb_proc to merge telemetered RefTek
data, and nsn_proc to merge USNSN data and notify Bob Crosson's
computer of the existence of the new complete event data.
There is an early alert mechanism running now which can provide
an alert within about 40 seconds of the origin time of a large
earthquake. This is done by having the worm_trig process
generate a preliminary pick-file after 40 seconds if more than a certain
number of stations have been triggered. This pick-file also contains
the integrated LTA of all triggered stations up to the time the file
is written. If this integrated LTA value exceeds a threshold
and the preliminary pick-file contains a reasonable solution within
the seismic network a pager alert is sent using the dobeep
program with an approxmate magnitude value
and an audio output message is given on several of the lab SPARCStations.
The SUNWORM system is now running on a completely separate SPARCStation-1
called waggles as a backup to the main system on wiggles.
This backup system only runs the main data collection part of SUNWROM,
and does no event processing, alerting, or BB data merging. Data
are collected in the ~sunworm/REVIEW directory and the oldest files
are removed periodically by a crontab job (every hour) called worm_clean
to keep the the disk free space above 200MB.
Since waggles is only a SPARC-1 wthout a lot of CPU power its data
collection duties take up much of its time and so it SHOULD NOT BE USED
FOR ANY OTHER PURPOSES SUCH AS DATA PROCESSING. If data need to be
recovered from waggles because of a failure or problem with wiggles
it should be "rcp'ed" to another machine before analysis.
The following directories contain different types of files and information:
All are relative to the sunworm user's home directory, /sunworm
on the machine called wiggles.
UL>
The fundamental
worm
idea is due to the dynamic duo of Alex Bittenbinder
and Carl Johnson who have designed and redesigned countless seismic
data acquisition systems over the past 20 years and should have
gotten it right by now. The transport layer code which implements the
basic broadcast-listen mode of WORM data messages on a SPARCStation
was written by Lyn Dietz of the USGS.
The guts of the worm_client/worm_server
code was lifted from code kindly provided by Phil Maechling of
Caltech. Code to unscramble and decompress USNSN data was provided
by Paul O'Keefe of Lamont-Doherty.
The UW2 format, and routines for seismic trace display were
writen by Bob Crosson and Eric Crosson. The timecode interpretation
program as well as several seismic analysis programs were written by Tony Qamar.
Sandy Stromme, who maintains the IRIS SPYDER® system wrote the
conversion programs for generating SEED data archives from both
UW1 and UW2 trace data files and has modified and debugged many
other data conversion routines. Ruth Ludwin, Sandra Hebert, and Bill
Steele have provided suggestions, and feed-back and have been
patient with the problems of living through change.
The development of the SUNWORM system and the operation
of the Pacific Northwest Sesimograph Network is supported by
the US Geological Survey,
Westinghouse Hanford Co. (DOE), and the State of Washington.
WORM Command
WORM_RUN Configuration Script
Trigger sensitivity and subnets: subnets files
The first few lines of an example subnets file:
9 4 4
0 3 CRF EPH GBL MDW OT3 RC1Z VT2 WA2 WRD
1 4 BRV ET3 GBL MDW OT3 PRO RSW WA2 WIW MJ2 WG4
2 3 ET3 JBO LNO PAT PRO RSW WIW WG4
.....
0
Station Names: sta.list> file
The first few lines of an example sta.list file:
.nf
station 0 TCG TIM _ 0
station 1 SPW EHZ _ 10
station 2 GMW EHZ _ 10
station 3 GSM EHZ _ 10
....
Other files
EVENT PROCESSING
EARLY ALERT
BACKUP SUNWORM
DIRECTORY STRUCTURE
ACKNOWLEDGMENTS
Back to:...
UW GEOPHYSICS PROGRAM ..... SEISMOLOGY INFO..... PNW EARTHQUAKES