Finding poles and zeros

Finding poles and zeros:
A RESP file for IMS hydrophone stations

Minor bumps in the road on the way to completing the paper by Selda Yildiz, Karim Sabra, LeRoy M. Dorman, W.A.Kuperman, Using hydroacoustic stations as water column seismometers. ,GEOPHYSICAL RESEARCH LETTERS, VOL. 40, 2573–2578, doi:10.1002/grl.50371, 2013

Working with Selda Yildiz, Karim Sabra and Bill Kuperman on exploiting the data from the tripartite acoustic arrays comprising the International Monitoring System (operated by the Comprehensive Test Ban Treaty Organization), we discovered that the frequency response of the sensor/recording system was available only for a limited frequency range, which did not extend as low as we needed.  So I set about to remedy this so that we could compare pseudo-seismic data from the H08 arrays around Diego Garcia with seismic data from the FSDN station DGAR.

A good starting point appeared to be the book Of Poles and Zeros by Frank Scherbaum (Kluwer, 2001).  This handy little volume offers a practical introduction to the fundamentals of digital seismology, specifically dealing with the instrument responses of disparate instruments. The book is accompanied  by a CD by Elke Schmidtke and the aforementioned F.S. which contains a nifty computer program named “Digital Seismology Tutor.” This allows for manipulating pole-zero files, displaying and comparing responses. The program is written in Java, advertised by Sun/Oracle as “write once, run anywhere.” Unfortunately the language is evolving so “run anywhere” does not imply “run anytime,” and the code would not execute. A little debugging led to a couple of patches which make the code execute in the Java of today. The patch files are:

[editors note: We can’t host the patch file as a text file for security reasons — please select the text on the tutorpatches pages save into a txt file]

These are applied to the Java source code using the unix “patch” program and allow the code to work under Java 1.7.

The only response file we could find was a FAP (Frequency, Amplitude, Phase) file for array H08.  This file covers the frequency range 0.1-125 Hz. and is included in the metadata available on the DTRA verification database, The frequency range Selda is analyzing is 0.01-0.1 and lies outside this range.  It seems the most straightforward approach is to use a Pole-Zero response description, which is not inherently band-limited. Using “Digital Seismology Tutor” and a Fortran pole-zero fitting program named UNICALF by Axel Plesinger of Czechoslovakia.  This code was modified to write a FAP file for plotting using the Parker/Shure program plotxy.

Examination of the response of the hydrophone system shows that it has an initial slope of Ω2.

Above about 10 Hz the curve flattens out, indicating that there are two poles between 0.5 and 10 Hz.  So using the two zeros at the origin, two poles in that range, and adding some poles around 100Hz to make the response fall off, we get the following.

In this plot, the black is the “original” FAP curve and the green/blue curve is from the pole-zero configuration just described. The fit is quite good below a Hertz, but even using a 11-pole anti-alias filter, the modeled response does not drop off nearly fast enough.The reason for this is that the recording electronics uses a Finite Impulse Response (FIR) filter instead of an Infinite Impulse Response (IIR) pole-zero design.  So our solution has to be a hybrid one.

The FAP file mentions a CS5322 filter, which turns out to be described in a document named CS5378_F3.pdf, which is a datasheet for this IC, and contains the filter weights for the FIR filter.

To implement this, we have to evolve from the basic SAC PZ file and use the RESP format file which is part of the Seismic Earthquake Exchange Data (SEED) standard.  This file format incorporates both pole-zero information as well as FIR filter weights.  After some jiggery-pokery we can now model the FAP response quite well.


Where we see that the black line of the FAP file is well-matched by the blue line from the SEED RESP file. The RESP file is RESP.IM.H08N.00.DDH. Not all of the informational comments in this file are not correctly formatted. The link in the previous sentence does not work, but you may download the file by clicking on the file name in the  list of attached files just below this text, and rename it to RESP.IM.H08N.00.DDH

[Editors note: the file contents are available on this page.]

Digitizers available today are capable of sampling at much higher rates than most applications require, thus allowing great flexibility in shaping the frequency response.  In particular, anti-aliasing filters are now implemented digitally and decimation is then used to reach the desired sampling rate. The filters available on the CS5378 chip family are designed to block frequencies above 40% of the sampling frequency,  To make this occur at 100 Hz, the filter must be applied at a sampling rate of 250 Hz.