New Live Seismograph Display


A year or so ago, I upgraded my seismograph software from the original IRIS AmaSeis program to an upgraded version based on Java called jAmaSeis.  I ran the new software on a little Asus netbook.  The helicorder display that I uploaded to the Live Seismograph page on this site was just a screen shot of the active window every five minutes.  The little netbook was at its performance limit and the screenshot made it impossible to do any analysis anyway.

This fall I built up a Linux desktop computer running XUbuntu 14.04LTS and installed jAmaSeis on it.  I downloaded from the IRIS website and followed the basic instructions for installation given on the same site.  With a little fiddling around, I got the software running.  I plugged in the Dataq DI-145 USB Analog to Digital converter…the software could not find it.  I fiddled around with it for a long time with no success.  I could see the device appear in /dev as ttyACM0 when I plugged it in.  After giving up on it a couple of times I finally created a symbolic link from ttyACM0 to ttyS32 where the seismograph software would detect it.  I do this manually every time the computer reboots or the ADC is unplugged.  I plan to write a udev rule to do this automatically.

To get the helicorder display for the Live Seismograph page I use an open source package of seismology tools for Python called Obspy.  jAmaSeis writes the data stream in one hour long segments in sac formatted files arranged in a time based directory structure.  The Obspy stream manipulation tools allow one to easily build a continuous 24 hour data stream from the jAmaSeis files and plot it in a moderately flexible way in a Python script.  This method yields several improvements over the screen shot.  The date and time are unambiguously shown on the vertical axis and the traces alternate through four colors to differentiate the hour in which an event occurs more clearly.  The Python script runs as a cron job every five minutes.

The Obspy package also provides tools to parse QuakeML documents which I obtain from a USGS feed inside the same script that plots the data.  After parsing each event, I use the obspy.core.util.locations2degrees tool to find the distance from the epicenter to my station.  The script then annotates the helicorder display with seismic events selected using magnitudes and distances that might be detected with my seismograph.  This selection is arbitrary so there will be some that show on the trace without annotation and others will be annotated when there is nothing showing on the trace.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s