.. highlight:: rst

.. _scamp:

#####
scamp
#####

**Calculates amplitudes on basis of incoming origins and the associated picks.**


Description
===========

scamp measures several different kinds of amplitudes from waveform data.
It listens for origins and measures amplitudes in time windows determined
from the origin. Thus, in contrast to amplitudes measured by :ref:`scautopick`
the considered time windows can depend on epicentral distance.
The resulting amplitude objects are sent to the "AMPLITUDE"
messaging group. scamp is the counterpart of :ref:`scmag`. Usually, all
amplitudes are computed at once by scamp and then published.
Only very rarely an amplitude needs to be recomputed if the location of an
origin changes significantly. The amplitude can be reused by :ref:`scmag`, making
magnitude computation and update efficient. Currently, the automatic picker
in SeisComP, scautopick, also measures a small set of amplitudes
(namely "snr" and "mb", the signal-to-noise ratio and the amplitude used in
mb magnitude computation, respectively) for each automatic pick in fixed
time windows. If there already exists an amplitude, e.g. a previously determined
one by scautopick, scamp will not measure it again for the respective stream.

Amplitudes are also needed, however, for manual picks. scamp does this as well.
Arrivals with weight smaller than 0.5 (default) in the corresponding Origin are
discarded. This minimum weight can be configured with
:confval:`amptool.minimumPickWeight`.


Amplitude Types
===============

Amplitudes of many types are currently computed for their corresponding
magnitudes.

.. note::

   In order to be used by scmag, the input amplitude names for the
   various magnitude types must typically match exactly. Exceptions:

   * :term:`MN <magnitude, Nuttli (MN)>` requires *AMN* amplitudes,
   * :term:`MLr <magnitude, local GNS/GEONET (MLr)>` requires *MLv* amplitudes.


Local distances
---------------

:term:`Md <magnitude, duration (Md)>`
   Duration magnitude as described in HYPOINVERSE (:cite:t:`klein-2002`).

:term:`Mjma <magnitude, JMA (M_JMA)>`
   Mjma is computed on displacement data using body waves of period < 30s.

:term:`ML <magnitude, local (ML)>`
   Local (Richter) magnitude calculated on the horizontal components using a
   correction term to fit with the standard ML (:cite:t:`richter-1935`).

:term:`MLc <magnitude, local custom (MLc)>`
   Local custom magnitude calculated on the horizontal components according to
   Hessian Earthquake Service and :cite:t:`stange-2006`

:term:`MLh <magnitude, local horizontal (MLh)>`
   Local magnitude calculated on the horizontal components according to SED
   specifications.

:term:`MLv <magnitude, local vertical (MLv)>`
   Local magnitude calculated on the vertical component using a correction term
   to fit with the standard ML.

AMN for :term:`MN <magnitude, Nuttli (MN)>`
   Nuttli magnitude for Canada and other Cratonic regions (:cite:t:`nuttli-1973`).


Teleseismic distances
---------------------

:term:`mb <magnitude, body-wave (mb)>`
   Narrow band body wave magnitude measured on a WWSSN-SP filtered trace

:term:`mBc <magnitude, cumulative body-wave (mBc)>`
   Cumulative body wave magnitude

:term:`mB <magnitude, broadband body-wave (mB)>`
   Broad band body wave magnitude after :cite:t:`bormann-2008`

:term:`Mwp <magnitude, broadband P-wave moment (Mwp)>`
   The body wave magnitude of :cite:t:`tsuboi-1995`

:term:`Ms_20 <magnitude, surface wave (Ms_20)>`
   Surface-wave magnitude at 20 s period

:term:`Ms(BB) <magnitude, broadband surface wave (Ms(BB))>`
   Broad band surface-wave magnitude


Acceleration Input Data
=======================

For amplitudes to be computed, the input waveforms are usually given in velocity.
Acceleration data, e.g. from strong-motion instruments must therefore be transformed
to velocity. The transformation is enabled by activating the response correction.
Activate the correction in the global bindings for all
types or in a new Amplitude type profile for specific types.

Example global binding parameters for computing MLv amplitudes from accleration
data. Here, the frequency range is limited to 0.5 - 20 Hz: ::

   amplitudes.MLv.enableResponses = true
   amplitudes.MLv.resp.taper = 5
   amplitudes.MLv.resp.minFreq = 0.5
   amplitudes.MLv.resp.maxFreq = 20


Re-processing
=============

*scamp* can be used to reprocess and to update amplitudes, e.g. when inventory paramters
had to be changed retrospectively. Updating ampitudes requires waveform access.
The update can be performed

1. In **offline processing** based on XML files (:confval:`--ep`). :confval:`--reprocess<reprocess>`
   will replace exisiting amplitudes. Updated values can be dispatched to the messing by
   :ref:`scdispatch` making them available for further processing, e.g. by :ref:`scmag`.

   **Example:**

   .. code-block:: sh

      $ scamp --ep evtID.xml -d [type]://[host]/[database] --reprocess > evtID_update.xml
      $ scdispatch -O merge -H [host] -i evtID_update.xml

#. **With messaging** by setting :confval:`start-time` or :confval:`end-time`.
   All parameters are read from the database. :confval:`--commit<commit>` will
   send the updated parameters to the messing system making them available for
   further processing, e.g. by :ref:`scmag`. Otherwise, XML output is generated.

   **Example:**

   .. code-block:: sh

      $ scamp -u testuser -H [host] --commit \
              --start-time '2016-10-15 00:00:00' --end-time '2016-10-16 19:20:00'


.. _scamp_configuration:

Module Configuration
====================

| :file:`etc/defaults/global.cfg`
| :file:`etc/defaults/scamp.cfg`
| :file:`etc/global.cfg`
| :file:`etc/scamp.cfg`
| :file:`~/.seiscomp/global.cfg`
| :file:`~/.seiscomp/scamp.cfg`

scamp inherits :ref:`global options<global-configuration>`.



.. confval:: amplitudes

   Default: ``MLv, mb, mB, Mwp``

   Type: *list:string*

   Definition of magnitude types for which amplitudes are to be calculated.


.. confval:: amptool.minimumPickWeight

   Default: ``0.5``

   Type: *double*

   The minimum arrival weight within an origin to compute amplitudes for the associated pick.


.. confval:: amptool.streamFromBindings

   Default: ``false``

   Type: *boolean*

   If enabled then global bindings will be used to replace
   location code and channel code of a pick with the configured
   values of detecLocid and detecStream for amplitude computation.


.. confval:: amptool.initialAcquisitionTimeout

   Default: ``30``

   Type: *double*

   Unit: *s*

   Timeout in seconds of the first data packet of waveform data acquisition.


.. confval:: amptool.runningAcquisitionTimeout

   Default: ``2``

   Type: *double*

   Unit: *s*

   Timeout in seconds of any subsequent data packet of waveform data acquisition.



Command-Line Options
====================

.. program:: scamp


Generic
-------

.. option:: -h, --help

   Show help message.

.. option:: -V, --version

   Show version information.

.. option:: --config-file arg

   Use alternative configuration file. When this option is
   used the loading of all stages is disabled. Only the
   given configuration file is parsed and used. To use
   another name for the configuration create a symbolic
   link of the application or copy it. Example:
   scautopick \-> scautopick2.

.. option:: --plugins arg

   Load given plugins.

.. option:: -D, --daemon

   Run as daemon. This means the application will fork itself
   and doesn't need to be started with \&.

.. option:: --auto-shutdown arg

   Enable\/disable self\-shutdown because a master module shutdown.
   This only works when messaging is enabled and the master
   module sends a shutdown message \(enabled with \-\-start\-stop\-msg
   for the master module\).

.. option:: --shutdown-master-module arg

   Set the name of the master\-module used for auto\-shutdown.
   This is the application name of the module actually
   started. If symlinks are used, then it is the name of
   the symlinked application.

.. option:: --shutdown-master-username arg

   Set the name of the master\-username of the messaging
   used for auto\-shutdown. If \"shutdown\-master\-module\" is
   given as well, this parameter is ignored.

.. option:: -x, --expiry time

   Time span in hours after which objects expire.

.. option:: -O, --origin-id publicID

   OriginID to calculate amplitudes for and exit.

.. option:: --dump-records

   Dumps the filtered traces to ASCII when using \-O.


Verbosity
---------

.. option:: --verbosity arg

   Verbosity level [0..4]. 0:quiet, 1:error, 2:warning, 3:info,
   4:debug.

.. option:: -v, --v

   Increase verbosity level \(may be repeated, eg. \-vv\).

.. option:: -q, --quiet

   Quiet mode: no logging output.

.. option:: --component arg

   Limit the logging to a certain component. This option can
   be given more than once.

.. option:: -s, --syslog

   Use syslog logging backend. The output usually goes to
   \/var\/lib\/messages.

.. option:: -l, --lockfile arg

   Path to lock file.

.. option:: --console arg

   Send log output to stdout.

.. option:: --debug

   Execute in debug mode.
   Equivalent to \-\-verbosity\=4 \-\-console\=1 .

.. option:: --log-file arg

   Use alternative log file.


Messaging
---------

.. option:: -u, --user arg

   Overrides configuration parameter :confval:`connection.username`.

.. option:: -H, --host arg

   Overrides configuration parameter :confval:`connection.server`.

.. option:: -t, --timeout arg

   Overrides configuration parameter :confval:`connection.timeout`.

.. option:: -g, --primary-group arg

   Overrides configuration parameter :confval:`connection.primaryGroup`.

.. option:: -S, --subscribe-group arg

   A group to subscribe to.
   This option can be given more than once.

.. option:: --content-type arg

   Overrides configuration parameter :confval:`connection.contentType`.

.. option:: --start-stop-msg arg

   Set sending of a start and a stop message.

.. option:: --test

   Test mode where no messages are sent.


Database
--------

.. option:: --db-driver-list

   List all supported database drivers.

.. option:: -d, --database arg

   The database connection string, format:
   service:\/\/user:pwd\@host\/database.
   \"service\" is the name of the database driver which
   can be queried with \"\-\-db\-driver\-list\".

.. option:: --config-module arg

   The config module to use.

.. option:: --inventory-db arg

   Load the inventory from the given database or file, format:
   [service:\/\/]location .

.. option:: --db-disable

   Do not use the database at all


Records
-------

.. option:: --record-driver-list

   List all supported record stream drivers.

.. option:: -I, --record-url arg

   The recordstream source URL, format:
   [service:\/\/]location[#type].
   \"service\" is the name of the recordstream driver
   which can be queried with \"\-\-record\-driver\-list\".
   If \"service\" is not given, \"file:\/\/\" is
   used.

.. option:: --record-file arg

   Specify a file as record source.

.. option:: --record-type arg

   Specify a type for the records being read.


Input
-----

.. option:: --ep file

   Defines an event parameters XML file to be read and processed. This
   implies offline mode and only processes all origins contained
   in that file. It computes amplitudes for all picks associated
   with an origin and outputs an XML file that additionally
   contains the amplitudes.

.. option:: -p, --picks

   Force measuring amplitudes for picks only. Origins are
   ignored and time windows are independent of distance. Works
   only in combination with \-\-ep.

.. option:: --reprocess

   Reprocess and update existing amplitudes. Manual amplitudes
   will be skipped. Works only in combination with \-\-ep.
   This option can be used, e.g., for reprocessing amplitudes
   with new inventory information. Waveform access is required.


Reprocess
---------

.. option:: --force

   Forces reprocessing of all amplitudes, even manual ones.

.. option:: --start-time time

   

.. option:: --end-time time

   

.. option:: --commit

   Send amplitude updates to the messaging otherwise an XML
   document will be output.

