Thread: polezero option -- correct file this time

Started: 2009-04-24 22:25:37
Last activity: 2009-04-27 23:46:47
Topics: SAC Help
Arthur Snoke
2009-04-24 22:25:37
Unfortunately, the file I sent was the unaltered "transfer' help file,
rather than my revised "polezero" subset of that file. The desired file
(I hope) is attached.

---------- Forwarded message ----------
Date: Fri, 24 Apr 2009 14:36:39 -0400 (EDT)
From: Arthur Snoke <snoke<at>vt.edu>
To: SAC-help Listserv <sac-help<at>iris.washington.edu>
Subject: [SAC-HELP] polezero option

We are preparing the next update for SAC, and I have been looking at some
"help" files called from within SAC (and in the computer accessible manual),
and have changed a few. Because there were several e-mail exchanges regarding
the polezero option of transfer, I looked closely at

SAC> help transfer

I am attaching my first draft for a replacement of that section of the transfer
help command. Please share comments/corrections, etc.

Others I have already worked on are 04graphics, 09file_format, begindevices,
enddevices.

If there are others you think need updating, please share. It is more likely
they will be included if you send me a suggested revision!

Finally, I have written a C program for doing endian swapping for .sgf files
(SAC Graphics Format files). I have tested it on several platforms, but if
someone would like to try it -- or just want an advance copy -- let me know.

Arthur Snoke
snoke<at>vt.edu
POLEZERO OPTION:

POLEZERO is an instrument type that can be used to put in or take out the
(analog) seismometer response. A good reference is Appendix C in the SEED
manual. The current version can be downloaded from IRIS at URL
http://www.iris.edu/software/downloads/seed_tools/, and a good way to get a
polezero file in the correct format is to download data as a SEED volume and use
program rdseed to extract the data, the polezero file(s) and the response file.
Program rdseed can be downloaded from the same Web site. The response file for
a specified channel/station is useful to see the "response in" and "response
out" units for the transfer function. Typically, the "response in" listed in
the response file is velocity, in m/s, but the polezero file has a "response in"
of displacement.

A polezero file is a listing of complex zeros and poles of a causal filter
that represents the seismometer. The transfer function is of the form

(s-z1)(s-z2)...*s-zn)
_____________________

s-p1))(s-p2)...*s-pm)

where the z1 ... zn are the N zeros and the p1 ... pm are the m poles of the
transfer function. The convention used is a Laplacian transform, with s = 2\pi
i f with f the frequency in Hz. The sign convention is e^{-st} for the forward
transform (from the t domain to the s domain).
Here is a polezero file for the LHZ channel from station JCC returned by program rdseed for a 28 June 2007 teleseism:

ZEROS 3
POLES 5
-0.0370 0.0370
-0.0370 -0.0370
-118.7520 423.4880
-118.7520 -423.4880
-251.3270 0.0000
CONSTANT 3.056572e+16

For this transfer function, there are five poles, for which the complex values
are listed on the five lines following the line POLES 5. Also there are three
zeros. None are listed, and the convention is that an unlisted zero has the
value of zero. Hence if there were five zeros, for which three were actually
zero, one could either write out five lines for which three of them would be
0.00 0.00 and the other two the complex, nonzero values, or one could have ZEROs
5 with only the two nonzero zeros explicitly written out. In the response file
for this channel, there are only two zeros because the "response in" is velocity
but rdseed "knows" that the user wants to work with waveforms corrected to
displacement. The CONSTANT is a multiplicative factor that rescales the
"response in" units to the "response out" units at the normalization frequency.
The derivation of CONSTANT is described in the SEED manual and can be pieced
together for a particular channel from that channel's response file.

The default for CONSTANT is 1.0, the options can be written in any order,
and one can add a comment line by starting that line with a * (asterisk).

To use this option you specify the type to be POLEZERO and the subtype to
be the name of the file. This may be a file in the current directory or in some
other directory if you specify the absolute or relative pathname. It may also
the the name of a global file contained in the sac subdirectory
sac/aux/polezero/. By putting a file in this global directory, anyone on your
system can easily use it.

EXAMPLE: suppose the file was named sro.pz and you want to remove the
instrument response from station ABC.Z.

u: READ ABC.Z

u: TRANSFER FROM POLEZERO SUBTYPE SRO.PZ TO NONE


  • Kuang He
    2009-04-24 23:10:24
    On Fri, Apr 24, 2009 at 3:25 PM, Arthur Snoke <snoke<at>vt.edu> wrote:
    Unfortunately, the file I sent was the unaltered "transfer' help file,
    rather than my revised "polezero" subset of that file.  The desired file (I
    hope) is attached.

    Dear Arthur,

    There is something wrong with the equation. The following equation has
    some unbalanced parentheses.

    (s-z1)(s-z2)...*s-zn)
    _____________________

    s-p1))(s-p2)...*s-pm)


    Best regards,

    --
    Kuang


  • George Helffrich
    2009-04-25 21:14:53
    Dear All -

    I will provide a rewrite suggestion after some further research. Here
    are my initial comments, however.

    ----

    POLEZERO OPTION:

    %%%Comments indicated flagged with this notation.
    %%%This paragraph is jumbled. It confusingly combines information about
    %%%the concepts underlying a pole-zero representation with the way to
    specify
    %%%a response to SAC. They should be separated.

    POLEZERO is an instrument type that can be used to put in or take out
    the
    (analog) seismometer response. A good reference is Appendix C in the
    SEED
    manual. The current version can be downloaded from IRIS at URL
    http://www.iris.edu/software/downloads/seed_tools/, and a good way to
    get a
    polezero file in the correct format is to download data as a SEED
    volume and use
    program rdseed to extract the data, the polezero file(s) and the
    response file.
    Program rdseed can be downloaded from the same Web site. The response
    file for
    a specified channel/station is useful to see the "response in" and
    "response
    out" units for the transfer function. Typically, the "response in"
    listed in
    the response file is velocity, in m/s, but the polezero file has a
    "response in"
    of displacement.

    %%%As Kuang He points out, this equation is syntactically incorrect.
    Pole-zero
    %%%filters aren't causal, either!
    %%%Using TeX-style expressions isn't a good idea -- it assumes the
    reader knows
    %%%TeX, when many use nothing more than Word to typeset equations. Lay
    them
    %%%out graphically in text, assuming a fixed-pitch font.

    A polezero file is a listing of complex zeros and poles of a
    causal filter
    that represents the seismometer. The transfer function is of the form

    (s-z1)(s-z2)...*s-zn)
    _____________________

    s-p1))(s-p2)...*s-pm)

    where the z1 ... zn are the N zeros and the p1 ... pm are the m poles
    of the
    transfer function. The convention used is a Laplacian transform, with
    s = 2\pi
    i f with f the frequency in Hz. The sign convention is e^{-st} for the
    forward
    transform (from the t domain to the s domain).
    Here is a polezero file for the LHZ channel from station JCC
    returned by program rdseed for a 28 June 2007 teleseism:

    ZEROS 3
    POLES 5
    -0.0370 0.0370
    -0.0370 -0.0370
    -118.7520 423.4880
    -118.7520 -423.4880
    -251.3270 0.0000
    CONSTANT 3.056572e+16

    %%%The information about the input units and output units needs to be
    presented
    %%%more clearly. The description here jumbles what rdseed does with
    what SAC
    %%%does.

    For this transfer function, there are five poles, for which the complex
    values
    are listed on the five lines following the line POLES 5. Also there
    are three
    zeros. None are listed, and the convention is that an unlisted zero
    has the
    value of zero. Hence if there were five zeros, for which three were
    actually
    zero, one could either write out five lines for which three of them
    would be
    0.00 0.00 and the other two the complex, nonzero values, or one could
    have ZEROs
    5 with only the two nonzero zeros explicitly written out. In the
    response file
    for this channel, there are only two zeros because the "response in" is
    velocity
    but rdseed "knows" that the user wants to work with waveforms corrected
    to
    displacement. The CONSTANT is a multiplicative factor that rescales the
    "response in" units to the "response out" units at the normalization
    frequency.
    The derivation of CONSTANT is described in the SEED manual and can be
    pieced
    together for a particular channel from that channel's response file.

    The default for CONSTANT is 1.0, the options can be written in any
    order,
    and one can add a comment line by starting that line with a *
    (asterisk).

    To use this option you specify the type to be POLEZERO and the
    subtype to
    be the name of the file. This may be a file in the current directory
    or in some
    other directory if you specify the absolute or relative pathname. It
    may also
    the the name of a global file contained in the sac subdirectory
    sac/aux/polezero/. By putting a file in this global directory, anyone
    on your
    system can easily use it.

    EXAMPLE: suppose the file was named sro.pz and you want to remove the
    instrument response from station ABC.Z.

    u: READ ABC.Z

    u: TRANSFER FROM POLEZERO SUBTYPE SRO.PZ TO NONE

    On 24 Apr 2009, at 20:25, Arthur Snoke wrote:

    Unfortunately, the file I sent was the unaltered "transfer' help file,
    rather than my revised "polezero" subset of that file. The desired
    file (I hope) is attached.

    ---------- Forwarded message ----------
    Date: Fri, 24 Apr 2009 14:36:39 -0400 (EDT)
    From: Arthur Snoke <snoke<at>vt.edu>
    To: SAC-help Listserv <sac-help<at>iris.washington.edu>
    Subject: [SAC-HELP] polezero option

    We are preparing the next update for SAC, and I have been looking at
    some "help" files called from within SAC (and in the computer
    accessible manual), and have changed a few. Because there were
    several e-mail exchanges regarding the polezero option of transfer, I
    looked closely at

    SAC> help transfer

    I am attaching my first draft for a replacement of that section of the
    transfer help command. Please share comments/corrections, etc.

    Others I have already worked on are 04graphics, 09file_format,
    begindevices, enddevices.

    If there are others you think need updating, please share. It is more
    likely they will be included if you send me a suggested revision!

    Finally, I have written a C program for doing endian swapping for .sgf
    files (SAC Graphics Format files). I have tested it on several
    platforms, but if someone would like to try it -- or just want an
    advance copy -- let me know.

    Arthur Snoke
    snoke<at>vt.edu<polezero>_______________________________________________
    sac-help mailing list
    sac-help<at>iris.washington.edu
    http://www.iris.washington.edu/mailman/listinfo/sac-help

    George Helffrich
    george<at>geology.bristol.ac.uk


    • Arthur Snoke
      2009-04-26 16:26:24
      Thank you George and Kuang-He for comments. Kuang-He picked up on a typo
      in the equation I wrote. I wrote him off list with a corrected version
      that he said was okay:

      (s-z1)*(s-z2)*...*(s-zn)
      ________________________

      (s-p1)*(s-p2)*...*(s-pm)

      I give some replies to George's comments below. I welcome
      comments/suggestions/corrections from others as well.

      %%%Comments indicated flagged with this notation.
      %%%This paragraph is jumbled. It confusingly combines information about
      %%%the concepts underlying a pole-zero representation with the way to specify
      %%%a response to SAC. They should be separated.

      I agree that the paragraph could be improved, and am looking for better
      ways to untangle SAC from RDSEED. A couple of things came up as I was
      writing this:

      1. There is a question of units: the RDSEED "response in" units use m as
      a length measure, while SAC's IDEP uses nm. I doubt that either are going
      to change, but I welcome suggestions to state this efficiently.

      2. As i note, the values given for the polezero transfer function in the
      RESP file is for velocity "response in" (with two zeros) but the polezero
      file returned by RDSEED is for displacement (three zeros). Is there
      nothing within RDSEED that makes that clear? Or am I missing something?

      %%%filters aren't causal, either!

      The polezero transfer functions are analog filters and in themselves are
      causal. The one I give as an example is an STS-2 response function, which
      is mostly a damped harmonic oscillator. (Aside: I have read that there
      are three versions/generations of STS-2 seismometers, but so far as I can
      tell the analog-stage response is always the same. Can anyone clarify?)

      %%%Using TeX-style expressions isn't a good idea -- it assumes the reader
      %%%knows TeX, when many use nothing more than Word to typeset equations.
      %%%Lay them out graphically in text, assuming a fixed-pitch font.

      As of now, SAC help files use 7-bit ASCII. The minimal use I made of TeX
      notation should be transparent to anyone who understands what a Laplace
      transform is. Note I resisted the temptation to use \cdots in the
      equation above. Given that one cannot underline letters in 7-bit ASCII, I
      have not figured out a good way to show the subset of letters need (e.g.,
      TRANS for TRANSFER).


      %%%The information about the input units and output units needs to be
      %%%presented more clearly. The description here jumbles what rdseed
      %%%does with what SAC does.

      See above comment.

      u: READ ABC.Z

      u: TRANSFER FROM POLEZERO SUBTYPE SRO.PZ TO NONE


      I do not use SAC to do my instrument correction, but I do use polezero
      files. The above example as written would probably get one in trouble at
      very low frequencies, as all seismometers have zero response at zero
      frequency. If I understand the notation correctly, "FROM" means a
      deconvolution, which means it divides the input waveform by, in this case,
      the polezero expression. To avoid the output blowing up, this expression
      should be amended to include the FREQLIMITS option. Putting these in
      definitely makes the total transfer function noncausal.

      Arthur Snoke

      • Chad Trabant
        2009-04-27 23:46:47

        On Apr 26, 2009, at 6:26 AM, Arthur Snoke wrote:

        The polezero transfer functions are analog filters and in themselves
        are causal. The one I give as an example is an STS-2 response
        function, which is mostly a damped harmonic oscillator. (Aside: I
        have read that there are three versions/generations of STS-2
        seismometers, but so far as I can tell the analog-stage response is
        always the same. Can anyone clarify?)

        Responding to the aside, there are 3 generations of electronics for
        STS-2s and three different sets of poles and zeros to represent them.
        To figure out which generation sensor you might have there are some
        general guidelines based on date of manufacture, but it remains
        possible that the electronics were upgraded if the sensor was returned
        to the factory. The nominal responses for the 3 generations are
        available in SEED RESP format here:

        http://www.iris.edu/NRL/sensors/streckeisen/streckeisen_sts2_sensors.html

        The responses of the different generations only differ significantly
        at high frequencies. I'm not quite sure how high is too high, I have
        heard 35Hz signals and above are where the differences between
        generations become significant.

        To further complicate matters a "truncated" pole and zero response for
        STS-2s has been in common use for many years and it is different than
        any of the factory nominal responses. It generally works fine for all
        the generations of sensors with the same caveat that it does not
        represent the sensor at high frequencies.

        Apologies for the off topic message, seems like useful information to
        spread around.

        Chad Trabant
        IRIS Data Management Center

21:48:10 v.b4412d20