Station - QC - Evaluator and Re-Configurator based on QC messages and configured thresholds.


scqceval dynamically re-configures the network processing based on waveform quality (QC) parameters. These data are typically provided by the SeisComP module scqc [1]. In case of inhomogeneous stations geometry of an earthquake monitoring setup where, e.g. an array is included within a network, the earthquake solution may be biased. Therefore only a subset of the station, e.g. the reference station of the array, may be used for the monitoring network. However, this or other stations may be of variable data quality. In case of low data quality alternative stations should be used. scqceval realizes such a re-configuration in real time based on the data quality parameters. Therefore scqceval allows to maintain homogeneous networks with high monitoring quality. The changes in the network configuration effects other parameters such as the amount of time required to locate events or the minimum magnitude which can be detected. Such changes in network performance are automatically monitored and reported by npeval.


scqceval dynamically re-configures the data processing of a SeisComP system in real time by:

  • Evaluating station quality (QC) parameters. It can take any QC parameters delivered by any plugin for scqc [1].

  • Activation and deactivation (enable / disable) of single stations with their location and streams based on the QC parameters

  • Dynamic switching between a primary and a secondary station or even station chains based on the QC parameters

  • Considering interactive re-configurations by other modules, e.g.

    • scrttv.


scqceval requires:

  • Waveform QC parameters, typically provided by scqc [1]. Thus, configure and start scqc in real-time applications.

  • Bindings configuration:

    • create scqceval bindings for each station to be considered by scqceval

    • enable or disable the stations for control by scqceval.

  • Module configuration:

    • defined primary and seconday stations by qc.pairs. Station not being members of pairs but having scqceval bindigs will be enabled or disabled depending on their QC parameters without considering alternatives.

    • set the time which prevents scqceval from reconfiguration after an initial reconfiguration by other modules: qc.resetAuthorAfter

    • decide which QC parameters define enabling a stations: qc.parameters within the configured ranges. Stations with QC parameter values outside the ranges are disabled by scqceval.

      qc.parameters can be either configured with:

QC: Boolean expressions

Boolean expressions allow the definition of advanced conditions for QC parameters including multiple ranges, e.g. for intervals or spikes, gaps, overlaps.

As an alternative of specifying individual rules, qc.parameters can be set to a single boolean expression. This expression is evaluated as a whole to determine whether a station can be enabled or needs to be disabled.

The following operators are available:

  • Arithmetic operators:

    • +a

    • -a

    • a + b

    • a - b

    • a * b

    • a / b

    All operators return the result of their specific arithmetic operation. The common precedence rules apply when combining different operators.

  • Comparison operators:

    • a < b - Evaluates to true if and only if a is less than b.

    • a > b - Evaluates to true if and only if a is greater than b.

    • a <= b - Evaluates to true if and only if a is less than or equal to b.

    • a >= b - Evaluates to true if and only if a is greater than or equal to b.

    • a == b - Evaluates to true if and only if a is equal to b.

    • a != b - Evaluates to true if and only if a is not equal to b.

  • Logical operators (ordered by precedence):

    • !a - Evaluates to true if and only if the operand is false.

    • a && b - Evaluates to true if and only if both operands are true.

    • a || b - Evaluates to true if and only if at least one operand is true.

Predefined precedence rules can be overridden by parentheses.


  • (latency < 600 || delay < 60) && (gaps count > 0 && gaps count <= 1)

  • gaps count + overlaps count < 20

Configuration with (conservative) choices resembling the default range but adding ranges for intervals of gaps, spikes and overlaps:

qc.parameters = "(availability>=40)" \
                "&& (gaps count<=1)" \
                "&& (overlaps count<=1)" \
                "&& (timing quality>=40)" \
                "&& (rms>=20)" \
                "&& (spikes count<=60)" \
                "&& (gaps interval>=60 || gaps interval<=0)" \
                "&& (spikes interval>=60 || spikes interval<=0)" \
                "&& (overlaps interval>=60 || overlaps interval<=0)"


Double quotes around the parameters are mandatory for correctly reading the parameter names.

QC: simple ranges

Parameter ranges define the start and the end of intervals which are exceptable for enabling a station. Stations are disbaled if they have any QC parameter outside the range.

Configuration with default (conservative) choices are:

qc.parameters = "availability: 40.0,100.0",\
                "gaps count: 0,1",\
                "overlaps count: 0,1",\
                "timing quality: 40,Inf",\
                "rms: 20,Inf",\
                "spikes count: -Inf,60"


Double quotes around the parameters are mandatory for correctly reading the parameter names.

Other recommendations are:

  • availability: 40.0,100.0

  • gaps count: 0,10

  • overlaps count: 0,10

  • latency: -Inf,600

  • delay: 0,60

  • timing quality: 90,Inf

  • offset: -700000,700000

  • spikes count: -Inf,0

  • timing quality: 40,Inf

  • rms: 20,Inf

  • gaps length: -Inf,60

  • overlaps length: 0,60


The intervals of QC measures such as spikes, gaps and overlaps is 0 s if the measure is found only once. While accepting stations with spikes, gaps, overlaps at large intervals, a 0 s interval may also be acceptable. Use boolean expressions to define multiple acceptance intervals. Otherwise, stations may be disabled unexpectedly.


  • The stations GE.VAL and GE.RGN are automatically disabled by scqceval and their alternatives are activated.


    Figure 1: Primary:secondary configuration: GE.VAL : GE.WLF ; GE.RGN : GE.SBV : GE.UGM


    Figure 2: Switch to secondary configuration due to exceedance of QC parameters gaps and delay: GE.VAL : GE.WLF ; GE.RGN : GE.SBV : GE.UGM


In real-time waveform playbacks the waveforms are fed to the data server, e.g. using msrtsimul. The QC parameters can then be provided by scqc. However, scqc reports the parameters in intervals and based on buffer periods which are specific to each QC parameter. These report parameters are configured in scqc. Read the documentation of scqc [1] or the tool tips in scconfig for the module parameters of scqc for the details.

In order to be able to provide the configured QC parameters to scqceval, an amount of data sufficient to fill the buffer for these QC parameters must be provided to scqc. Configure the scqceval parameter qc.ignoreMissingParametersAfter to allow initialisation and to ignore QC parameters missing thereafter, e.g.:

qc.ignoreMissingParametersAfter = 600

Actual waveform playback:

  1. Start all required data acquisition and processing modules including scqc and scqceval,

  2. Inject the waveform data to the data server using msrtsimul,

  3. Observe the enabled and disabled stations in scqcv, scrttv and scmv or read the debug output of data processing modules.

Module Configuration


scqceval inherits global options.


Modules/plugins may require a license file. The default path to license files is @DATADIR@/licenses/ which can be overridden by global configuration of the parameter gempa.licensePath. Example:

gempa.licensePath = @CONFIGDIR@/licenses

Type: list:string

Defines QC parameters to observe. Each parameter is associated with a value range. If any of the defined ranges is exceeded the corresponding station is disabled. Use ‘-Inf’ resp. ‘Inf’ if no upper or lower bound should exist. Supported QC parameters are availability, gaps count, overlaps count, latency, delay, timing quality, offset, rms and spikes count.


qc.parameters = "availability: 40.0,100.0", "gaps count: 0,1", "overlaps count: 0,1"

Alternatively, it is possible to define a single boolean expression which will be evaluated by scqceval. A station is disabled if the given expression evaluates to false. See section "Setup" for a list of available operators.


qc.parameters = "(availability >= 40) && (gaps count <= 1) && (overlaps count <= 1) && (spikes interval <= 0 || spikes interval >= 60)"


Type: list:string

Define the primary and secondary station sorted by their priority in descending order. The station with the highest priority that fulfills all QC parameters is enabled. Primary stations outside a QC parameter range are disabled. Stations not listed here are simply enabled or disabled based on the QC parameters without a replacement by a secondary station. All stations to be considered must be enabled by scqceval bindings.




Default: -1

Unit: s

Type: int

Allow control over foreign stations after the specified time following a reconfiguration. A re-configuration can be e.g. enabling or disabling of a station in scrttv or scqcv. which have not been modified within the given number of seconds.

0: immediate control over all reconfigured stations

-1: control is disabled, scqceval will not reconfigure a foreign station


Default: 0

Unit: s

Type: int

On startup, wait the given number of seconds to retrieve QC messages for all of the configured parameters before toggling a station. After this period, QC parameters without a value will be ignored. Use -1 to wait indefinitely.


Default: false

Type: bool

Load initial QC parameters from the database.

Bindings Parameters


Default: true

Type: boolean

Enables/disables usage of station with qceval.