Amplitude Processing and Onsite Early Warning

In earthquake early warning (EEW) systems speed matters and is of highest priority along with the reliability of the measured or predicted parameters. Instead of measuring amplitudes and predicting parameters in a data center after the location of a seismic event is available, the most relevant parameters can be measured during phase detection before a hypocenter is available. The amplitude measurements can even be made at the station allowing for a rapid onsite early warning system.

For measuring these amplitudes the sigma package provides the plugins for application by external modules outside of AUTOSIGMA or SIGMA:

  • sigmaamps,

  • sigmaampsp1,

  • sigmaampsp2.

If these plugins are added to the SeisComP modules scautopick or scamp and available amplitudes are configured, the modules measure configured amplitudes from waveforms. The amplitudes include types which are typically required for

  • Onsite early warning,

  • Earthquake Early Warning (EEW),

  • Strong motion earthquake analysis,

  • Seismic engineering purposes.

Concept

The plugins measure the amplitudes of a particular type in a specific time window on the respective components of the amplitude type. One plugin can take exactly one configuration for one amplitude type. In order to facilitate the computation of the same amplitude type with up to three different set of parameters, e.g. different time windows around P and S waves, the plugin exists three times in the same form with the different names.

Amplitude types

The plugins compute values for the following quantities as SeisComP amplitude objects of different kind.

Available amplitude types are:

  • CAV: Cumulative absolute velocity

  • CI: Characteristic intensity

  • duration: Duration (95%-5%)

  • I05: Arias intensity at 5%

  • I95: Arias intensity at 95%

  • pdPvR: PGD/PGV ratio. The actual values are given by pgd and pgv amplitudes which must be configured.

    Note

    • snrPd and pdPvR are implemented according to Caruso et al. [14] without the threshold check suggested therein. The check can be made by an external script after reading the amplitudes.

    • For computing snrPd and pdPvR identical time windows for pgd and pgv amplitudes must be configured to be complient with Caruso et al. [14].

    • The incrementation of the time window for measuring pgd and pgv (e.g. 1 s, 2 s, 3 s) can be realized by running 3 the different plugins in parallel with their specific configuration of the time windows. The sections Configuration parameters and Setup provide examples.

  • pga: Peak ground acceleration, PGA

  • pgd: Peak ground disaplacement, PGD

  • psa_0_3: Pseudo Spectral Amplitude measured at 0.3 s period

  • psa_1_0: Pseudo Spectral Amplitude measured at 1.0 s period

  • psa_3_0: Pseudo Spectral Amplitude measured at 3.0 s period

  • pgv: Peak ground velocity, PGV

  • SED: Specific energy density

  • snrPd: Signal-to-Noise ratio of PGD in the data time window after the trigger and the PGD within the noise time window before (PGD_N):

    snrPd = 20 * log_{10}(PGD/PGD_N)

    PGD is the measured pgd amplitude and PGD_N is PGD measured in the noise time window.

  • Tm: Mean period

  • Tp: Predominant period

Data streams and time windows

The amplitude types can be computed on four different data streams, the components:

  • NONE: vertical component

  • h1: first horizontal component

  • h2: second horizontal component

  • l: the sample-wise vector sum of the vertical and the horizontal components: l = \sqrt {v^2 + h_1^2 + h_2^2}

The time windows for computation of amplitudes are relative to a reference time: either a pick time or a predicted phase onset. Generally a noise and a signal window are considered. While the noise window typically starts and ends before the reference time, the signal window is around or after it. Reference time and window parameters are configurable per component. Read Configuration parameters for more details.

Amplitude names

The names of the amplitude types start with the name of the used plugin:

  • sigma: sigmaamps plugin

  • sigma_p1: sigmaampsp1 plugin

  • sigma_p2: sigmaampsp2 plugin

The names of the computed amplitude types are formed from the plugin name, the name of the quantity and the components:

[plugin]_[type][_component]

Examples:

  • pga computed by the sigmaamps plugin on the vertical (NONE) component:

    sigma_pga
    
  • pga computed by the sigmaampsp1 plugin on the first horizontal (h1) component:

    sigma_p1_pga_h1
    

Configuration parameters

Each amplitude type takes up to 8 parameters defining the time windows for computing the amplitudes and the waveform filtering.

  • Reference phase types for calculating time windows (optional, only used considered by scamp):

    • phaseStart: phase type defining the reference for the start of the time window, e.g.

      phaseStart = P
      
    • phaseEnd: phase type defining the reference for the end of the time window, e.g.

      phaseEnd = S
      

    Note

    The parameters phaseStart and phaseEnd are optional configuration parameters. They are used for prediction of arrival times of the configured phase types. They are only considered when computing the amplitudes by scamp where origins exist and the arrival times of P and S waves can be predicted. If phaseStart or phaseEnd are not set, the respective time-window parameters are relative to the pick time.

  • Phase-type or pick-related time windows:

    • noiseBegin: start of the noise window relative to phaseStart or pick time. Default:

      noiseBegin = -8
      
    • noiseEnd: end of the noise window relative to phaseStart or pick time. Default:

      noiseEnd = -4
      
    • signalBegin: start of the noise window relative to phaseStart or pick time. Default:

      signalBegin = -4
      
    • signalEnd: end of the noise window relative to phaseEnd or pick time. Default:

      signalEnd = 4
      

    Note

    • The default values apply if the parameter is not explicitly configured.

    • The noise time window parameters are used to compute the SNR which is written to the resulting amplitude.

  • Filter parameters for band-pass filtering. Positive values of frequencies refer to frequencies in units of Hz (1/s, not angular frequency!). Negative values refer to the fraction of the Nyquist frequency:

    • loFilterFreq: lower cut-off frequency. Example setting the frequency to 1 Hz:

      loFilterFreq = 1
      
    • hiFilterFreq: upper cut-off frequency. Example setting the frequency to 80% of the Nyquist frequency:

      highFilterFreq = -0.8
      
    • order: order of the Butterworth filter frequency. Default:

      order = 4
      

    Note

    The filter frequency parameters are optional. If not set, no filtering is applied.

The actual configuration parameters for the sigma amplitudes are currently NOT configurable in the global bindings as other amplitude types. Instead, the alternative configuration in the global configuration can be used. It takes the structure

module.trunk.global.amplitudes.[name].[parameter] = [value]

where [name], [parameter] and [value] are to be replaced by actual values.

While the filter parameters are set to values common for all plugin amplitude parameters, e.g.

module.trunk.global.amplitudes.sigma.loFilterFreq = -loFF-
module.trunk.global.amplitudes.sigma.hiFilterFreq = -hiFF-
module.trunk.global.amplitudes.sigma.order = -order-

the time windows are configured for each amplitude type individually, e.g. for the amplitude type sigma_I05:

module.trunk.global.amplitudes.sigma_I05.phaseStart = -P-
module.trunk.global.amplitudes.sigma_I05.phaseEnd = -S-
module.trunk.global.amplitudes.sigma_I05.noiseBegin = -noiseBegin-
module.trunk.global.amplitudes.sigma_I05.noiseEnd = -noiseEnd-
module.trunk.global.amplitudes.sigma_I05.signalBegin = -signalBegin-
module.trunk.global.amplitudes.sigma_I05.signalEnd = -signalEnd-

where the values enclosed by “-” are to be replaced in the configuration by actual values.

Setup

The configuration of the amplitude computation requires the steps set out below. Make all configurations for the considered modules either in the

  • Global module configuration (global.cfg) or

  • Module configurations of scautopick (scautopick.cfg) or scamp (scamp.cfg).

  1. Plugins selection: Add the plugins to the list of loaded plugins:

    plugins = ${plugins}, sigmaamps, sigmaampsp1, sigmaampsp2
    
  2. Choose amplitude names: Add the amplitude names to be calculated by scautopick or scamp and the respective plugin and component, e.g.

    amplitudes = sigma_I05, sigma_I95, sigma_duration, sigma_CI, sigma_SED, sigma_CAV, \
      sigma_Tp, sigma_Tm, sigma_pga, sigma_pgv, sigma_pgd, \
      sigma_I05_h1, sigma_I95_h1, sigma_duration_h1, sigma_CI_h1, sigma_SED_h1, sigma_CAV_h1, sigma_Tp_h1, \
      sigma_Tm_h1, sigma_pga_h1, sigma_pgv_h1, sigma_pgd_h1, \
      sigma_I05_h2, sigma_I95_h2, sigma_duration_h2, sigma_CI_h2, sigma_SED_h2, sigma_CAV_h2, sigma_Tp_h2, \
      sigma_Tm_h2, sigma_pga_h2, sigma_pgv_h2, sigma_pgd_h2, \
      sigma_I05_l, sigma_I95_l, sigma_duration_l, sigma_CI_l, sigma_SED_l, sigma_CAV_l, sigma_Tp_l, sigma_Tm_l, \
      sigma_pga_l, sigma_pgv_l, sigma_pgd_l, \
      sigma_p1_I05, sigma_p1_I95, sigma_p1_duration, sigma_p1_CI, sigma_p1_SED, sigma_p1_CAV, sigma_p1_Tp, \
      sigma_p1_Tm, sigma_p1_pga, sigma_p1_pgv, sigma_p1_pgd, \
      sigma_p1_I05_h1, sigma_p1_I95_h1, sigma_p1_duration_h1, sigma_p1_CI_h1, sigma_p1_SED_h1, \
      sigma_p1_CAV_h1, sigma_p1_Tp_h1, sigma_p1_Tm_h1, sigma_p1_pga_h1, sigma_p1_pgv_h1, sigma_p1_pgd_h1, \
      sigma_p1_I05_h2, sigma_p1_I95_h2, sigma_p1_duration_h2, sigma_p1_CI_h2, sigma_p1_SED_h2, sigma_p1_CAV_h2, \
      sigma_p1_Tp_h2, sigma_p1_Tm_h2, sigma_p1_pga_h2, sigma_p1_pgv_h2, sigma_p1_pgd_h2, \
      sigma_p1_I05_l, sigma_p1_I95_l, sigma_p1_duration_l, sigma_p1_CI_l, sigma_p1_SED_l,
      sigma_p1_CAV_l, sigma_p1_Tp_l, sigma_p1_Tm_l, sigma_p1_pga_l, sigma_p1_pgv_l, sigma_p1_pgd_l, \
      sigma_p2_I05, sigma_p2_I95, sigma_p2_duration, sigma_p2_CI, sigma_p2_SED, sigma_p2_CAV, sigma_p2_Tp, \
      sigma_p2_Tm, sigma_p2_pga, sigma_p2_pgv, sigma_p2_pgd, \
      sigma_p2_I05_h1, sigma_p2_I95_h1, sigma_p2_duration_h1, sigma_p2_CI_h1, sigma_p2_SED_h1, sigma_p2_CAV_h1, \
      sigma_p2_Tp_h1, sigma_p2_Tm_h1, sigma_p2_pga_h1, sigma_p2_pgv_h1, sigma_p2_pgd_h1, \
      sigma_p2_I05_h2, sigma_p2_I95_h2, sigma_p2_duration_h2, sigma_p2_CI_h2, sigma_p2_SED_h2, sigma_p2_CAV_h2, \
      sigma_p2_Tp_h2, sigma_p2_Tm_h2, sigma_p2_pga_h2, sigma_p2_pgv_h2, sigma_p2_pgd_h2, \
      sigma_p2_I05_l, sigma_p2_I95_l, sigma_p2_duration_l, sigma_p2_CI_l, sigma_p2_SED_l, \
      sigma_p2_CAV_l, sigma_p2_Tp_l, sigma_p2_Tm_l, sigma_p2_pga_l, sigma_p2_pgv_l, sigma_p2_pgd_l
    

    Hint

    The list of amplitude names is long and may be incompletely documented. To see a complete list, simply add the plugins to scolv and re-compute magnitudes from the scolv Location tab. When prompted to select the types you may read the amplitude names.

    Warning

    The names of amplitude types are case sensitive and may not be fully consistent with names used in scientific literature.

  3. Configure the amplitude parameters: Add the set of configuration parameters for each configured amplitude type.

    • Example configuration for the amplitude type sigma_pga, time window parameters are related to actual pick times:

      module.trunk.global.amplitudes.sigma.loFilterFreq = 2
      module.trunk.global.amplitudes.sigma.hiFilterFreq = 6
      module.trunk.global.amplitudes.sigma.order = 4
      
      module.trunk.global.amplitudes.sigma_pga.noiseBegin = -8
      module.trunk.global.amplitudes.sigma_pga.noiseEnd = -4
      module.trunk.global.amplitudes.sigma_pga.signalBegin = -4
      module.trunk.global.amplitudes.sigma_pga.signalEnd = 4
      
    • Example configuration for the amplitude type sigma_p2_pga_l, time window parameters are related to predicted arrival times of the first arrival P phase. No filtering is applied:

      module.trunk.global.amplitudes.sigma_p2_pga_l.phaseStart = P
      module.trunk.global.amplitudes.sigma_p2_pga_l.phaseEnd = P
      
      module.trunk.global.amplitudes.sigma_p2_pga_l.noiseBegin = -8
      module.trunk.global.amplitudes.sigma_p2_pga_l.noiseEnd = -4
      module.trunk.global.amplitudes.sigma_p2_pga_l.signalBegin = -4
      module.trunk.global.amplitudes.sigma_p2_pga_l.signalEnd = 4
      

    Repeat the configuration for all amplitude types selected in amplitudes. Default values apply for amplitudes and parameters without a configuration.

Application

  1. Run scautopick or scamp in real time or in non-real-time XML-based playbacks. In non-real-time XML-based playbacks the created XML files contain the amplitudes among all other parameters.

    Examples of non-real-time XML-based playbacks:

    • For scautopick simply provide the waveforms:

      $ scautopick --ep --playback -I [waveform data source] -d [database] > picks.xml
      
    • For scamp: provide the waveforms and the Origins with Arrivals and Picks in origins.xml:

      $ scamp --ep origins.xml -I [waveform data source] -d [database] > amplitudes.xml
      
  2. Read the amplitude values from the created XML files or from the database.

Results

The computed values are written to amplitude objects which can be found in the database or the XML files.

Example for I05 and CAV amplitudes computed by the plugins sigmaamps and sigmaampsp2, respectively:

<?xml version="1.0" encoding="UTF-8"?>
<seiscomp xmlns="http://geofon.gfz-potsdam.de/ns/seiscomp3-schema/0.11" version="0.11">
  <EventParameters>
     ...
     <amplitude publicID="Amplitude/20200824082953.802835.11139">
       <type>sigma_I05</type>
       <amplitude>
         <value>0.04988864196</value>
       </amplitude>
       <timeWindow>
         <reference>2020-08-01T11:00:00.000000Z</reference>
         <begin>-4</begin>
         <end>4</end>
       </timeWindow>
       <snr>45.57455237</snr>
       <pickID>20000621.005250.79-GR.CLL..BHZ</pickID>
       <waveformID networkCode="GR" stationCode="CLL" channelCode="BHE"/>
       <creationInfo>
         <agencyID>gempa</agencyID>
         <author>scamp@localhost</author>
         <creationTime>2020-08-01T12:00:00.000000Z</creationTime>
       </creationInfo>
     </amplitude>
     ...
     <amplitude publicID="Amplitude/20200824082953.829365.11156">
       <type>sigma_p2_CAV</type>
       <amplitude>
         <value>0.2932203282</value>
       </amplitude>
       <timeWindow>
         <reference>2020-08-01T11:00:00.000000Z</reference>
         <begin>-4</begin>
         <end>4</end>
       </timeWindow>
       <snr>45.57455237</snr>
       <pickID>20000621.005250.79-GR.CLL..BHZ</pickID>
       <waveformID networkCode="GR" stationCode="CLL" channelCode="BHE"/>
       <creationInfo>
         <agencyID>gempa</agencyID>
         <author>scamp@localhost</author>
         <creationTime>2020-08-01T12:00:00.000000Z</creationTime>
       </creationInfo>
     </amplitude>
     ...
   </EventParameters>
</seiscomp>