[installation] Change to nightly
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								bin/Hypo71PC
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/Hypo71PC
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/dlsv2inv
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/dlsv2inv
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							@ -1,28 +0,0 @@
 | 
				
			|||||||
#!/usr/bin/env seiscomp-python
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
from __future__ import print_function
 | 
					 | 
				
			||||||
import sys
 | 
					 | 
				
			||||||
from seiscomp import mseedlite as mseed
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
open_files = {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if len(sys.argv) != 2:
 | 
					 | 
				
			||||||
    print("Usage: extr_file FILE")
 | 
					 | 
				
			||||||
    sys.exit(1)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
for rec in mseed.Input(open(sys.argv[1], "rb")):
 | 
					 | 
				
			||||||
    oname = "%s.%s.%s.%s" % (rec.sta, rec.net, rec.loc, rec.cha)
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    if oname not in open_files:
 | 
					 | 
				
			||||||
        postfix = ".D.%04d.%03d.%02d%02d" % (rec.begin_time.year,
 | 
					 | 
				
			||||||
            rec.begin_time.timetuple()[7], rec.begin_time.hour,
 | 
					 | 
				
			||||||
            rec.begin_time.minute)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        open_files[oname] = open(oname + postfix, "ab")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    ofile = open_files[oname]
 | 
					 | 
				
			||||||
    ofile.write(rec.header + rec.data)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
for oname in open_files:
 | 
					 | 
				
			||||||
    open_files[oname].close()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
							
								
								
									
										106
									
								
								bin/fdsnws
									
									
									
									
									
								
							
							
						
						
									
										106
									
								
								bin/fdsnws
									
									
									
									
									
								
							@ -40,7 +40,7 @@ import seiscomp.logging
 | 
				
			|||||||
import seiscomp.client
 | 
					import seiscomp.client
 | 
				
			||||||
import seiscomp.system
 | 
					import seiscomp.system
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from seiscomp.math import KM_OF_DEGREE
 | 
					from seiscomp.math import WGS84_KM_OF_DEGREE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from seiscomp.fdsnws.utils import isRestricted, u_str, b_str
 | 
					from seiscomp.fdsnws.utils import isRestricted, u_str, b_str
 | 
				
			||||||
from seiscomp.fdsnws.dataselect import (
 | 
					from seiscomp.fdsnws.dataselect import (
 | 
				
			||||||
@ -72,6 +72,14 @@ from seiscomp.fdsnws.http import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
from seiscomp.fdsnws.log import Log
 | 
					from seiscomp.fdsnws.log import Log
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					try:
 | 
				
			||||||
 | 
					    from seiscomp.fdsnws.jwt import JWT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    _jwtSupported = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					except ImportError:
 | 
				
			||||||
 | 
					    _jwtSupported = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def logSC3(entry):
 | 
					def logSC3(entry):
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
@ -411,6 +419,14 @@ class FDSNWS(seiscomp.client.Application):
 | 
				
			|||||||
        self._access = None
 | 
					        self._access = None
 | 
				
			||||||
        self._checker = None
 | 
					        self._checker = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self._jwtEnabled = False
 | 
				
			||||||
 | 
					        self._jwtIssuers = ["https://geofon.gfz.de/eas2", "https://login.earthscope.org/"]
 | 
				
			||||||
 | 
					        self._jwtAudience = ["eas", "fdsn"]
 | 
				
			||||||
 | 
					        self._jwtAlgorithms = ["RS256"]
 | 
				
			||||||
 | 
					        self._jwtUpdateMin = 300
 | 
				
			||||||
 | 
					        self._jwtUpdateMax = 86400
 | 
				
			||||||
 | 
					        self._jwt = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self._requestLog = None
 | 
					        self._requestLog = None
 | 
				
			||||||
        self.__reloadRequested = False
 | 
					        self.__reloadRequested = False
 | 
				
			||||||
        self.__timeInventoryLoaded = None
 | 
					        self.__timeInventoryLoaded = None
 | 
				
			||||||
@ -745,6 +761,42 @@ class FDSNWS(seiscomp.client.Application):
 | 
				
			|||||||
        except Exception:
 | 
					        except Exception:
 | 
				
			||||||
            pass
 | 
					            pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # enable JWT extension?
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            self._jwtEnabled = self.configGetBool("jwt.enable")
 | 
				
			||||||
 | 
					        except Exception:
 | 
				
			||||||
 | 
					            pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # JWT issuers
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            self._jwtIssuers = self.configGetStrings("jwt.issuers")
 | 
				
			||||||
 | 
					        except Exception:
 | 
				
			||||||
 | 
					            pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # JWT audience
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            self._jwtAudience = self.configGetStrings("jwt.audience")
 | 
				
			||||||
 | 
					        except Exception:
 | 
				
			||||||
 | 
					            pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # JWT algorithms
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            self._jwtAlgorithms = self.configGetStrings("jwt.algorithms")
 | 
				
			||||||
 | 
					        except Exception:
 | 
				
			||||||
 | 
					            pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # JWT minimum update period
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            self._jwtUpdateMin = self.configGetStrings("jwt.updateMinSeconds")
 | 
				
			||||||
 | 
					        except Exception:
 | 
				
			||||||
 | 
					            pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # JWT maximum update period
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            self._jwtUpdateMax = self.configGetStrings("jwt.updateMaxSeconds")
 | 
				
			||||||
 | 
					        except Exception:
 | 
				
			||||||
 | 
					            pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # If the database connection is passed via command line or
 | 
					        # If the database connection is passed via command line or
 | 
				
			||||||
        # configuration file then messaging is disabled. Messaging is only used
 | 
					        # configuration file then messaging is disabled. Messaging is only used
 | 
				
			||||||
        # to get the configured database connection URI.
 | 
					        # to get the configured database connection URI.
 | 
				
			||||||
@ -878,7 +930,7 @@ Execute on command line with debug output
 | 
				
			|||||||
        if self._invCoordinatePrecision is not None:
 | 
					        if self._invCoordinatePrecision is not None:
 | 
				
			||||||
            invCoordinatePrecisionStr = (
 | 
					            invCoordinatePrecisionStr = (
 | 
				
			||||||
                f"{self._invCoordinatePrecision} decimal places (≅"
 | 
					                f"{self._invCoordinatePrecision} decimal places (≅"
 | 
				
			||||||
                f"{int(KM_OF_DEGREE * 1000 / 10**self._invCoordinatePrecision)}m)"
 | 
					                f"{int(WGS84_KM_OF_DEGREE * 1000 / 10**self._invCoordinatePrecision)}m)"
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            invCoordinatePrecisionStr = "unlimited"
 | 
					            invCoordinatePrecisionStr = "unlimited"
 | 
				
			||||||
@ -926,6 +978,13 @@ configuration read:
 | 
				
			|||||||
  auth
 | 
					  auth
 | 
				
			||||||
    enabled                : {self._authEnabled}
 | 
					    enabled                : {self._authEnabled}
 | 
				
			||||||
    gnupgHome              : {self._authGnupgHome}
 | 
					    gnupgHome              : {self._authGnupgHome}
 | 
				
			||||||
 | 
					  JWT
 | 
				
			||||||
 | 
					    enabled                : {self._jwtEnabled}
 | 
				
			||||||
 | 
					    issuers                : {self._jwtIssuers}
 | 
				
			||||||
 | 
					    audience               : {self._jwtAudience}
 | 
				
			||||||
 | 
					    algorithms             : {self._jwtAlgorithms}
 | 
				
			||||||
 | 
					    updateMinSeconds       : {self._jwtUpdateMin}
 | 
				
			||||||
 | 
					    updateMaxSeconds       : {self._jwtUpdateMax}
 | 
				
			||||||
  requestLog               : {self._requestLogFile}"""
 | 
					  requestLog               : {self._requestLogFile}"""
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -937,6 +996,17 @@ configuration read:
 | 
				
			|||||||
            seiscomp.logging.error("all services disabled through configuration")
 | 
					            seiscomp.logging.error("all services disabled through configuration")
 | 
				
			||||||
            return None
 | 
					            return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if self._jwtEnabled:
 | 
				
			||||||
 | 
					            if not _jwtSupported:
 | 
				
			||||||
 | 
					                seiscomp.logging.error(
 | 
				
			||||||
 | 
					                    "JWT is not supported due to missing dependencies"
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					                return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            self._jwt = JWT(
 | 
				
			||||||
 | 
					                self._jwtIssuers, self._jwtAudience, self._jwtAlgorithms, self._jwtUpdateMin, self._jwtUpdateMax
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # access logger if requested
 | 
					        # access logger if requested
 | 
				
			||||||
        if self._accessLogFile:
 | 
					        if self._accessLogFile:
 | 
				
			||||||
            self._accessLog = Log(self._accessLogFile)
 | 
					            self._accessLog = Log(self._accessLogFile)
 | 
				
			||||||
@ -1019,9 +1089,16 @@ configuration read:
 | 
				
			|||||||
            dataselect.putChild(b"1", dataselect1)
 | 
					            dataselect.putChild(b"1", dataselect1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # query
 | 
					            # query
 | 
				
			||||||
            dataselect1.putChild(
 | 
					            if self._jwtEnabled:
 | 
				
			||||||
                b"query", FDSNDataSelect(dataSelectInv, self._recordBulkSize)
 | 
					                authSession = self._jwt.getAuthSessionWrapper(
 | 
				
			||||||
            )
 | 
					                    FDSNDataSelect, dataSelectInv, self._recordBulkSize, self._access
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					                dataselect1.putChild(b"query", authSession)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                dataselect1.putChild(
 | 
				
			||||||
 | 
					                    b"query", FDSNDataSelect(dataSelectInv, self._recordBulkSize)
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # queryauth
 | 
					            # queryauth
 | 
				
			||||||
            if self._authEnabled:
 | 
					            if self._authEnabled:
 | 
				
			||||||
@ -1050,7 +1127,8 @@ configuration read:
 | 
				
			|||||||
            dataselect1.putChild(b"builder", fileRes)
 | 
					            dataselect1.putChild(b"builder", fileRes)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if self._authEnabled:
 | 
					            if self._authEnabled:
 | 
				
			||||||
                from seiscomp.fdsnws.http import AuthResource
 | 
					                from seiscomp.fdsnws.authresource import AuthResource
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                dataselect1.putChild(
 | 
					                dataselect1.putChild(
 | 
				
			||||||
                    b"auth",
 | 
					                    b"auth",
 | 
				
			||||||
                    AuthResource(DataSelectVersion, self._authGnupgHome, self._userdb),
 | 
					                    AuthResource(DataSelectVersion, self._authGnupgHome, self._userdb),
 | 
				
			||||||
@ -1180,7 +1258,13 @@ configuration read:
 | 
				
			|||||||
            availability.putChild(b"1", availability1)
 | 
					            availability.putChild(b"1", availability1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # query
 | 
					            # query
 | 
				
			||||||
            availability1.putChild(b"query", FDSNAvailabilityQuery())
 | 
					            if self._jwtEnabled:
 | 
				
			||||||
 | 
					                authSession = self._jwt.getAuthSessionWrapper(
 | 
				
			||||||
 | 
					                    FDSNAvailabilityQuery, self._access
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					                availability1.putChild(b"query", authSession)
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                availability1.putChild(b"query", FDSNAvailabilityQuery())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # queryauth
 | 
					            # queryauth
 | 
				
			||||||
            if self._authEnabled:
 | 
					            if self._authEnabled:
 | 
				
			||||||
@ -1192,7 +1276,13 @@ configuration read:
 | 
				
			|||||||
            availability1.putChild(b"queryauth", authSession)
 | 
					            availability1.putChild(b"queryauth", authSession)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # extent
 | 
					            # extent
 | 
				
			||||||
            availability1.putChild(b"extent", FDSNAvailabilityExtent())
 | 
					            if self._jwtEnabled:
 | 
				
			||||||
 | 
					                authSession = self._jwt.getAuthSessionWrapper(
 | 
				
			||||||
 | 
					                    FDSNAvailabilityExtent, self._access
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					                availability1.putChild(b"extent", authSession)
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                availability1.putChild(b"extent", FDSNAvailabilityExtent())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # extentauth
 | 
					            # extentauth
 | 
				
			||||||
            if self._authEnabled:
 | 
					            if self._authEnabled:
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								bin/fdsnxml2inv
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/fdsnxml2inv
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										105
									
								
								bin/inv2dlsv
									
									
									
									
									
								
							
							
						
						
									
										105
									
								
								bin/inv2dlsv
									
									
									
									
									
								
							@ -1,105 +0,0 @@
 | 
				
			|||||||
#!/usr/bin/env seiscomp-python
 | 
					 | 
				
			||||||
# -*- coding: utf-8 -*-
 | 
					 | 
				
			||||||
############################################################################
 | 
					 | 
				
			||||||
# Copyright (C) GFZ Potsdam                                                #
 | 
					 | 
				
			||||||
# All rights reserved.                                                     #
 | 
					 | 
				
			||||||
#                                                                          #
 | 
					 | 
				
			||||||
# GNU Affero General Public License Usage                                  #
 | 
					 | 
				
			||||||
# This file may be used under the terms of the GNU Affero                  #
 | 
					 | 
				
			||||||
# Public License version 3.0 as published by the Free Software Foundation  #
 | 
					 | 
				
			||||||
# and appearing in the file LICENSE included in the packaging of this      #
 | 
					 | 
				
			||||||
# file. Please review the following information to ensure the GNU Affero   #
 | 
					 | 
				
			||||||
# Public License version 3.0 requirements will be met:                     #
 | 
					 | 
				
			||||||
# https://www.gnu.org/licenses/agpl-3.0.html.                              #
 | 
					 | 
				
			||||||
############################################################################
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import sys
 | 
					 | 
				
			||||||
import io
 | 
					 | 
				
			||||||
from seiscomp.legacy.fseed import *
 | 
					 | 
				
			||||||
from seiscomp.legacy.db.seiscomp3 import sc3wrap
 | 
					 | 
				
			||||||
from seiscomp.legacy.db.seiscomp3.inventory import Inventory
 | 
					 | 
				
			||||||
import seiscomp.datamodel
 | 
					 | 
				
			||||||
import seiscomp.io
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ORGANIZATION = "EIDA"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def iterinv(obj):
 | 
					 | 
				
			||||||
    return (j for i in obj.values() for j in i.values())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def main():
 | 
					 | 
				
			||||||
    if len(sys.argv) < 1 or len(sys.argv) > 3:
 | 
					 | 
				
			||||||
        print("Usage inv2dlsv [in_xml [out_dataless]]", file=sys.stderr)
 | 
					 | 
				
			||||||
        return 1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if len(sys.argv) > 1:
 | 
					 | 
				
			||||||
        inFile = sys.argv[1]
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        inFile = "-"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if len(sys.argv) > 2:
 | 
					 | 
				
			||||||
        out = sys.argv[2]
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        out = ""
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    sc3wrap.dbQuery = None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    ar = seiscomp.io.XMLArchive()
 | 
					 | 
				
			||||||
    if not ar.open(inFile):
 | 
					 | 
				
			||||||
        raise IOError(inFile + ": unable to open")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    obj = ar.readObject()
 | 
					 | 
				
			||||||
    if obj is None:
 | 
					 | 
				
			||||||
        raise TypeError(inFile + ": invalid format")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    sc3inv = seiscomp.datamodel.Inventory.Cast(obj)
 | 
					 | 
				
			||||||
    if sc3inv is None:
 | 
					 | 
				
			||||||
        raise TypeError(inFile + ": invalid format")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    inv = Inventory(sc3inv)
 | 
					 | 
				
			||||||
    inv.load_stations("*", "*", "*", "*")
 | 
					 | 
				
			||||||
    inv.load_instruments()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    vol = SEEDVolume(inv, ORGANIZATION, "", resp_dict=False)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for net in iterinv(inv.network):
 | 
					 | 
				
			||||||
        for sta in iterinv(net.station):
 | 
					 | 
				
			||||||
            for loc in iterinv(sta.sensorLocation):
 | 
					 | 
				
			||||||
                for strm in iterinv(loc.stream):
 | 
					 | 
				
			||||||
                    try:
 | 
					 | 
				
			||||||
                        vol.add_chan(
 | 
					 | 
				
			||||||
                            net.code,
 | 
					 | 
				
			||||||
                            sta.code,
 | 
					 | 
				
			||||||
                            loc.code,
 | 
					 | 
				
			||||||
                            strm.code,
 | 
					 | 
				
			||||||
                            strm.start,
 | 
					 | 
				
			||||||
                            strm.end,
 | 
					 | 
				
			||||||
                        )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    except SEEDError as exc:
 | 
					 | 
				
			||||||
                        print(
 | 
					 | 
				
			||||||
                            f"Error ({net.code},{sta.code},{loc.code},{strm.code}): {str(exc)}",
 | 
					 | 
				
			||||||
                            file=sys.stderr,
 | 
					 | 
				
			||||||
                        )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if not out or out == "-":
 | 
					 | 
				
			||||||
        output = io.BytesIO()
 | 
					 | 
				
			||||||
        vol.output(output)
 | 
					 | 
				
			||||||
        stdout = sys.stdout.buffer if hasattr(sys.stdout, "buffer") else sys.stdout
 | 
					 | 
				
			||||||
        stdout.write(output.getvalue())
 | 
					 | 
				
			||||||
        stdout.flush()
 | 
					 | 
				
			||||||
        output.close()
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        with open(sys.argv[2], "wb") as fd:
 | 
					 | 
				
			||||||
            vol.output(fd)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return 0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if __name__ == "__main__":
 | 
					 | 
				
			||||||
    try:
 | 
					 | 
				
			||||||
        sys.exit(main())
 | 
					 | 
				
			||||||
    except Exception as e:
 | 
					 | 
				
			||||||
        print(f"Error: {str(e)}", file=sys.stderr)
 | 
					 | 
				
			||||||
        sys.exit(1)
 | 
					 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								bin/invextr
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/invextr
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							@ -107,19 +107,19 @@ def rt_simul(f, speed=1.0, jump=0.0, delaydict=None):
 | 
				
			|||||||
# ------------------------------------------------------------------------------
 | 
					# ------------------------------------------------------------------------------
 | 
				
			||||||
def usage():
 | 
					def usage():
 | 
				
			||||||
    print(
 | 
					    print(
 | 
				
			||||||
        """Usage:
 | 
					        f"""Usage:
 | 
				
			||||||
  msrtsimul [options] file
 | 
					  {os.path.basename(__file__)} [options] file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
miniSEED real-time playback and simulation
 | 
					miniSEED real-time playback and simulation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msrtsimul reads sorted (and possibly multiplexed) miniSEED files and writes
 | 
					{os.path.basename(__file__)} reads sorted (and possibly multiplexed) miniSEED files and
 | 
				
			||||||
individual records in pseudo-real-time. This is useful e.g. for testing and
 | 
					writes individual records in pseudo-real-time. This is useful e.g. for testing and
 | 
				
			||||||
simulating data acquisition. Output is
 | 
					simulating data acquisition. Output is
 | 
				
			||||||
$SEISCOMP_ROOT/var/run/seedlink/mseedfifo unless --seedlink or -c is used.
 | 
					$SEISCOMP_ROOT/var/run/seedlink/mseedfifo unless --seedlink or -c is used.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Verbosity:
 | 
					Verbosity:
 | 
				
			||||||
  -h, --help            Display this help message
 | 
					  -h, --help            Display this help message.
 | 
				
			||||||
  -v, --verbose         Verbose mode
 | 
					  -v, --verbose         Verbose mode.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Playback:
 | 
					Playback:
 | 
				
			||||||
  -j, --jump            Minutes to skip (float).
 | 
					  -j, --jump            Minutes to skip (float).
 | 
				
			||||||
@ -131,14 +131,15 @@ Playback:
 | 
				
			|||||||
  -m  --mode            Choose between 'realtime' and 'historic'.
 | 
					  -m  --mode            Choose between 'realtime' and 'historic'.
 | 
				
			||||||
  -s, --speed           Speed factor (float).
 | 
					  -s, --speed           Speed factor (float).
 | 
				
			||||||
      --test            Test mode.
 | 
					      --test            Test mode.
 | 
				
			||||||
  -u, --unlimited       Allow miniSEED records which are not 512 bytes
 | 
					  -u, --unlimited       Allow miniSEED records which are not 512 bytes. By default
 | 
				
			||||||
 | 
					                        seedlink supports 512 bytes only.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Examples:
 | 
					Examples:
 | 
				
			||||||
Play back miniSEED waveforms in real time with verbose output
 | 
					Play back miniSEED waveforms in real time with verbose output
 | 
				
			||||||
  msrtsimul -v data.mseed
 | 
					  {os.path.basename(__file__)} -v data.mseed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Play back miniSEED waveforms in real time skipping the first 1.5 minutes
 | 
					Play back miniSEED waveforms in real time skipping the first 1.5 minutes
 | 
				
			||||||
  msrtsimul -j 1.5 data.mseed
 | 
					  {os.path.basename(__file__)} -j 1.5 data.mseed
 | 
				
			||||||
"""
 | 
					"""
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -170,7 +171,7 @@ def main():
 | 
				
			|||||||
                "help",
 | 
					                "help",
 | 
				
			||||||
                "mode=",
 | 
					                "mode=",
 | 
				
			||||||
                "seedlink=",
 | 
					                "seedlink=",
 | 
				
			||||||
                "unlimited"
 | 
					                "unlimited",
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
    except GetoptError:
 | 
					    except GetoptError:
 | 
				
			||||||
@ -278,7 +279,7 @@ Check if SeedLink is running and configured for real-time playback.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        time_diff = None
 | 
					        time_diff = None
 | 
				
			||||||
        print(
 | 
					        print(
 | 
				
			||||||
            f"Starting msrtsimul at {datetime.datetime.utcnow()}",
 | 
					            f"Starting msrtsimul at {datetime.datetime.now(datetime.UTC)}",
 | 
				
			||||||
            file=sys.stderr,
 | 
					            file=sys.stderr,
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        for rec in inp:
 | 
					        for rec in inp:
 | 
				
			||||||
@ -292,7 +293,7 @@ starting on {str(rec.begin_time)}: length != 512 Bytes.",
 | 
				
			|||||||
            if time_diff is None:
 | 
					            if time_diff is None:
 | 
				
			||||||
                ms = 1000000.0 * (rec.nsamp / rec.fsamp)
 | 
					                ms = 1000000.0 * (rec.nsamp / rec.fsamp)
 | 
				
			||||||
                time_diff = (
 | 
					                time_diff = (
 | 
				
			||||||
                    datetime.datetime.utcnow()
 | 
					                    datetime.datetime.now(datetime.UTC).replace(tzinfo=None)
 | 
				
			||||||
                    - rec.begin_time
 | 
					                    - rec.begin_time
 | 
				
			||||||
                    - datetime.timedelta(microseconds=ms)
 | 
					                    - datetime.timedelta(microseconds=ms)
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
 | 
				
			|||||||
@ -84,7 +84,7 @@ def main():
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    resp = seiscomp.datamodel.ResponsePAZ_Create()
 | 
					    resp = seiscomp.datamodel.ResponsePAZ_Create()
 | 
				
			||||||
    resp.setType("A")
 | 
					    resp.setType("A")
 | 
				
			||||||
    resp.setGain(args.gain * header["sensitivities"][0]["factor"] / header["dataScale"])
 | 
					    resp.setGain(args.gain / header["dataScale"])
 | 
				
			||||||
    resp.setGainFrequency(0)
 | 
					    resp.setGainFrequency(0)
 | 
				
			||||||
    resp.setNormalizationFactor(1)
 | 
					    resp.setNormalizationFactor(1)
 | 
				
			||||||
    resp.setNormalizationFrequency(0)
 | 
					    resp.setNormalizationFrequency(0)
 | 
				
			||||||
@ -93,9 +93,9 @@ def main():
 | 
				
			|||||||
    inv.add(resp)
 | 
					    inv.add(resp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sensor = seiscomp.datamodel.Sensor_Create()
 | 
					    sensor = seiscomp.datamodel.Sensor_Create()
 | 
				
			||||||
    sensor.setName(header["instrument"])
 | 
					    sensor.setName(header["experiment"])
 | 
				
			||||||
    sensor.setDescription(header["instrument"])
 | 
					    sensor.setDescription(header["measurement"])
 | 
				
			||||||
    sensor.setUnit(header["sensitivities"][0]["unit"])
 | 
					    sensor.setUnit(header["unit"])
 | 
				
			||||||
    sensor.setResponse(resp.publicID())
 | 
					    sensor.setResponse(resp.publicID())
 | 
				
			||||||
    inv.add(sensor)
 | 
					    inv.add(sensor)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -131,8 +131,8 @@ def main():
 | 
				
			|||||||
            cha = seiscomp.datamodel.Stream_Create()
 | 
					            cha = seiscomp.datamodel.Stream_Create()
 | 
				
			||||||
            cha.setCode(args.channel)
 | 
					            cha.setCode(args.channel)
 | 
				
			||||||
            cha.setStart(net.start())
 | 
					            cha.setStart(net.start())
 | 
				
			||||||
            cha.setGain(args.gain * header["sensitivities"][0]["factor"] / header["dataScale"])
 | 
					            cha.setGain(args.gain / header["dataScale"])
 | 
				
			||||||
            cha.setGainUnit(header["sensitivities"][0]["unit"])
 | 
					            cha.setGainUnit(header["unit"])
 | 
				
			||||||
            cha.setGainFrequency(0)
 | 
					            cha.setGainFrequency(0)
 | 
				
			||||||
            cha.setSensor(sensor.publicID())
 | 
					            cha.setSensor(sensor.publicID())
 | 
				
			||||||
            cha.setDatalogger(datalogger.publicID())
 | 
					            cha.setDatalogger(datalogger.publicID())
 | 
				
			||||||
 | 
				
			|||||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										31
									
								
								bin/sc2pa
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								bin/sc2pa
									
									
									
									
									
								
							@ -13,11 +13,14 @@
 | 
				
			|||||||
# https://www.gnu.org/licenses/agpl-3.0.html.                              #
 | 
					# https://www.gnu.org/licenses/agpl-3.0.html.                              #
 | 
				
			||||||
############################################################################
 | 
					############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import time
 | 
					 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
import time
 | 
					
 | 
				
			||||||
import seiscomp.core, seiscomp.client, seiscomp.datamodel, seiscomp.logging
 | 
					import seiscomp.core
 | 
				
			||||||
 | 
					import seiscomp.client
 | 
				
			||||||
 | 
					import seiscomp.datamodel
 | 
				
			||||||
 | 
					import seiscomp.logging
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from seiscomp.scbulletin import Bulletin, stationCount
 | 
					from seiscomp.scbulletin import Bulletin, stationCount
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -40,8 +43,8 @@ class ProcAlert(seiscomp.client.Application):
 | 
				
			|||||||
        self.minPickCount = 25
 | 
					        self.minPickCount = 25
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.procAlertScript = ""
 | 
					        self.procAlertScript = ""
 | 
				
			||||||
 | 
					        self.bulletin = None
 | 
				
			||||||
        ep = seiscomp.datamodel.EventParameters()
 | 
					        self.cache = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def createCommandLineDescription(self):
 | 
					    def createCommandLineDescription(self):
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
@ -61,7 +64,8 @@ class ProcAlert(seiscomp.client.Application):
 | 
				
			|||||||
            self.commandline().addStringOption(
 | 
					            self.commandline().addStringOption(
 | 
				
			||||||
                "Publishing",
 | 
					                "Publishing",
 | 
				
			||||||
                "procalert-script",
 | 
					                "procalert-script",
 | 
				
			||||||
                "Specify the script to publish an event. The ProcAlert file and the event id are passed as parameter $1 and $2",
 | 
					                "Specify the script to publish an event. The ProcAlert file and the "
 | 
				
			||||||
 | 
					                "event id are passed as parameter $1 and $2",
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            self.commandline().addOption(
 | 
					            self.commandline().addOption(
 | 
				
			||||||
                "Publishing", "test", "Test mode, no messages are sent"
 | 
					                "Publishing", "test", "Test mode, no messages are sent"
 | 
				
			||||||
@ -174,13 +178,14 @@ class ProcAlert(seiscomp.client.Application):
 | 
				
			|||||||
        return False
 | 
					        return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def send_procalert(self, txt, evid):
 | 
					    def send_procalert(self, txt, evid):
 | 
				
			||||||
        if self.procAlertScript:
 | 
					        if not self.procAlertScript:
 | 
				
			||||||
            tmp = f"/tmp/yyy{evid.replace('/', '_').replace(':', '-')}"
 | 
					            return
 | 
				
			||||||
            f = file(tmp, "w")
 | 
					 | 
				
			||||||
            f.write(f"{txt}")
 | 
					 | 
				
			||||||
            f.close()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            os.system(self.procAlertScript + " " + tmp + " " + evid)
 | 
					        file = f"/tmp/yyy{evid.replace('/', '_').replace(':', '-')}"
 | 
				
			||||||
 | 
					        with open(file, "w", encoding="utf8") as f:
 | 
				
			||||||
 | 
					            print(txt, file=f)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        os.system(self.procAlertScript + " " + file + " " + evid)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def coordinates(self, org):
 | 
					    def coordinates(self, org):
 | 
				
			||||||
        return org.latitude().value(), org.longitude().value(), org.depth().value()
 | 
					        return org.latitude().value(), org.longitude().value(), org.depth().value()
 | 
				
			||||||
@ -194,7 +199,7 @@ class ProcAlert(seiscomp.client.Application):
 | 
				
			|||||||
            seiscomp.logging.error("suspicious region/depth - ignored")
 | 
					            seiscomp.logging.error("suspicious region/depth - ignored")
 | 
				
			||||||
            publish = False
 | 
					            publish = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if stationCount(org) < self.minPickCount:
 | 
					        if stationCount(org, 0.5) < self.minPickCount:
 | 
				
			||||||
            seiscomp.logging.error("too few picks - ignored")
 | 
					            seiscomp.logging.error("too few picks - ignored")
 | 
				
			||||||
            publish = False
 | 
					            publish = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1 +0,0 @@
 | 
				
			|||||||
scml2inv
 | 
					 | 
				
			||||||
							
								
								
									
										60
									
								
								bin/scalert
									
									
									
									
									
								
							
							
						
						
									
										60
									
								
								bin/scalert
									
									
									
									
									
								
							@ -39,6 +39,8 @@ class ObjectAlert(seiscomp.client.Application):
 | 
				
			|||||||
        self.addMessagingSubscription("EVENT")
 | 
					        self.addMessagingSubscription("EVENT")
 | 
				
			||||||
        self.addMessagingSubscription("LOCATION")
 | 
					        self.addMessagingSubscription("LOCATION")
 | 
				
			||||||
        self.addMessagingSubscription("MAGNITUDE")
 | 
					        self.addMessagingSubscription("MAGNITUDE")
 | 
				
			||||||
 | 
					        self.addMessagingSubscription("AMPLITUDE")
 | 
				
			||||||
 | 
					        self.addMessagingSubscription("PICK")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.setAutoApplyNotifierEnabled(True)
 | 
					        self.setAutoApplyNotifierEnabled(True)
 | 
				
			||||||
        self.setInterpretNotifierEnabled(True)
 | 
					        self.setInterpretNotifierEnabled(True)
 | 
				
			||||||
@ -76,50 +78,57 @@ class ObjectAlert(seiscomp.client.Application):
 | 
				
			|||||||
        self.commandline().addOption(
 | 
					        self.commandline().addOption(
 | 
				
			||||||
            "Generic",
 | 
					            "Generic",
 | 
				
			||||||
            "first-new",
 | 
					            "first-new",
 | 
				
			||||||
            "calls an event a new event when it is seen the first time",
 | 
					            "Calls an event a new event when it is seen the first time.",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addGroup("Alert")
 | 
					        self.commandline().addGroup("Alert")
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Alert", "amp-type", "amplitude type to listen to", self._ampType
 | 
					            "Alert",
 | 
				
			||||||
 | 
					            "amp-type",
 | 
				
			||||||
 | 
					            "Amplitude type to listen to.",
 | 
				
			||||||
 | 
					            self._ampType,
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Alert",
 | 
					            "Alert",
 | 
				
			||||||
            "pick-script",
 | 
					            "pick-script",
 | 
				
			||||||
            "script to be called when a pick arrived, network-, station code pick "
 | 
					            "Script to be called when a pick arrived, network-, station code pick "
 | 
				
			||||||
            "publicID are passed as parameters $1, $2, $3 and $4",
 | 
					            "publicID are passed as parameters $1, $2, $3 and $4.",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Alert",
 | 
					            "Alert",
 | 
				
			||||||
            "amp-script",
 | 
					            "amp-script",
 | 
				
			||||||
            "script to be called when a station amplitude arrived, network-, station "
 | 
					            "Script to be called when a station amplitude arrived, network-, station "
 | 
				
			||||||
            "code, amplitude and amplitude publicID are passed as parameters $1, $2, $3 and $4",
 | 
					            "code, amplitude and amplitude publicID are passed as parameters $1, $2, "
 | 
				
			||||||
 | 
					            "$3 and $4.",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Alert",
 | 
					            "Alert",
 | 
				
			||||||
            "alert-script",
 | 
					            "alert-script",
 | 
				
			||||||
            "script to be called when a preliminary origin arrived, latitude and "
 | 
					            "Script to be called when a preliminary origin arrived, latitude and "
 | 
				
			||||||
            "longitude are passed as parameters $1 and $2",
 | 
					            "longitude are passed as parameters $1 and $2.",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Alert",
 | 
					            "Alert",
 | 
				
			||||||
            "event-script",
 | 
					            "event-script",
 | 
				
			||||||
            "script to be called when an event has been declared; the message string, a "
 | 
					            "Script to be called when an event has been declared; the message string, "
 | 
				
			||||||
            "flag (1=new event, 0=update event), the EventID, the arrival count and the "
 | 
					            "a flag (1=new event, 0=update event), the EventID, the arrival count and "
 | 
				
			||||||
            "magnitude (optional when set) are passed as parameter $1, $2, $3, $4 and $5",
 | 
					            "the magnitude (optional when set) are passed as parameter $1, $2, $3, $4 "
 | 
				
			||||||
 | 
					            "and $5.",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addGroup("Cities")
 | 
					        self.commandline().addGroup("Cities")
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Cities",
 | 
					            "Cities",
 | 
				
			||||||
            "max-dist",
 | 
					            "max-dist",
 | 
				
			||||||
            "maximum distance for using the distance from a city to the earthquake",
 | 
					            "Maximum distance for using the distance from a city to the earthquake.",
 | 
				
			||||||
 | 
					            str(self._citiesMaxDist),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Cities",
 | 
					            "Cities",
 | 
				
			||||||
            "min-population",
 | 
					            "min-population",
 | 
				
			||||||
            "minimum population for a city to become a point of interest",
 | 
					            "Minimum population for a city to become a point of interest.",
 | 
				
			||||||
 | 
					            str(self._citiesMinPopulation),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addGroup("Debug")
 | 
					        self.commandline().addGroup("Debug")
 | 
				
			||||||
        self.commandline().addStringOption("Debug", "eventid,E", "specify Event ID")
 | 
					        self.commandline().addStringOption("Debug", "eventid,E", "Specify event ID.")
 | 
				
			||||||
        return True
 | 
					        return True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def init(self):
 | 
					    def init(self):
 | 
				
			||||||
@ -174,7 +183,7 @@ class ObjectAlert(seiscomp.client.Application):
 | 
				
			|||||||
            phaseStreams = self.configGetStrings("constraints.phaseStreams")
 | 
					            phaseStreams = self.configGetStrings("constraints.phaseStreams")
 | 
				
			||||||
            for item in phaseStreams:
 | 
					            for item in phaseStreams:
 | 
				
			||||||
                rule = item.strip()
 | 
					                rule = item.strip()
 | 
				
			||||||
                # rule is NET.STA.LOC.CHA and the special charactes ? * | ( ) are allowed
 | 
					                # allowned: NET.STA.LOC.CHA and the special charactes ? * | ( )
 | 
				
			||||||
                if not re.fullmatch(r"[A-Z|a-z|0-9|\?|\*|\||\(|\)|\.]+", rule):
 | 
					                if not re.fullmatch(r"[A-Z|a-z|0-9|\?|\*|\||\(|\)|\.]+", rule):
 | 
				
			||||||
                    seiscomp.logging.error(
 | 
					                    seiscomp.logging.error(
 | 
				
			||||||
                        f"Wrong stream ID format in `constraints.phaseStreams`: {item}"
 | 
					                        f"Wrong stream ID format in `constraints.phaseStreams`: {item}"
 | 
				
			||||||
@ -559,7 +568,8 @@ class ObjectAlert(seiscomp.client.Application):
 | 
				
			|||||||
                            break
 | 
					                            break
 | 
				
			||||||
                    if not matched:
 | 
					                    if not matched:
 | 
				
			||||||
                        seiscomp.logging.debug(
 | 
					                        seiscomp.logging.debug(
 | 
				
			||||||
                            f" + stream ID {waveformID} does not match constraints.phaseStreams rules"
 | 
					                            f" + stream ID {waveformID} does not match "
 | 
				
			||||||
 | 
					                            "constraints.phaseStreams rules"
 | 
				
			||||||
                        )
 | 
					                        )
 | 
				
			||||||
                        return
 | 
					                        return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -568,7 +578,8 @@ class ObjectAlert(seiscomp.client.Application):
 | 
				
			|||||||
                        self.notifyPick(obj)
 | 
					                        self.notifyPick(obj)
 | 
				
			||||||
                    else:
 | 
					                    else:
 | 
				
			||||||
                        seiscomp.logging.debug(
 | 
					                        seiscomp.logging.debug(
 | 
				
			||||||
                            f" + phase hint {phaseHint} does not match '{self._phaseHints}'"
 | 
					                            f" + phase hint {phaseHint} does not match "
 | 
				
			||||||
 | 
					                            f"'{self._phaseHints}'"
 | 
				
			||||||
                        )
 | 
					                        )
 | 
				
			||||||
                else:
 | 
					                else:
 | 
				
			||||||
                    seiscomp.logging.debug(
 | 
					                    seiscomp.logging.debug(
 | 
				
			||||||
@ -739,6 +750,11 @@ class ObjectAlert(seiscomp.client.Application):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            seiscomp.logging.debug(f"desc: {dsc}")
 | 
					            seiscomp.logging.debug(f"desc: {dsc}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
 | 
					                evType = seiscomp.datamodel.EEventTypeNames.name(evt.type())
 | 
				
			||||||
 | 
					            except Exception:
 | 
				
			||||||
 | 
					                evType = "earthquake"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            dep = org.depth().value()
 | 
					            dep = org.depth().value()
 | 
				
			||||||
            now = seiscomp.core.Time.GMT()
 | 
					            now = seiscomp.core.Time.GMT()
 | 
				
			||||||
            otm = org.time().value()
 | 
					            otm = org.time().value()
 | 
				
			||||||
@ -756,14 +772,10 @@ class ObjectAlert(seiscomp.client.Application):
 | 
				
			|||||||
                dt = f"{int(dt)} seconds ago"
 | 
					                dt = f"{int(dt)} seconds ago"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if preliminary:
 | 
					            if preliminary:
 | 
				
			||||||
                message = f"earthquake, XXL, preliminary, {dt}, {dsc}"
 | 
					                message = f"{evType}, XXL, preliminary, {dt}, {dsc}"
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                message = "earthquake, %s, %s, %s, depth %d kilometers" % (
 | 
					                message = f"{evType}, {dt}, {dsc}, {mag}, depth {int(dep + 0.5)} kilometers" 
 | 
				
			||||||
                    dt,
 | 
					
 | 
				
			||||||
                    dsc,
 | 
					 | 
				
			||||||
                    mag,
 | 
					 | 
				
			||||||
                    int(dep + 0.5),
 | 
					 | 
				
			||||||
                )
 | 
					 | 
				
			||||||
            seiscomp.logging.info(message)
 | 
					            seiscomp.logging.info(message)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if not self._eventScript:
 | 
					            if not self._eventScript:
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								bin/scanloc
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scanloc
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/scardac
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scardac
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										183
									
								
								bin/scart
									
									
									
									
									
								
							
							
						
						
									
										183
									
								
								bin/scart
									
									
									
									
									
								
							@ -300,10 +300,15 @@ class StreamIterator:
 | 
				
			|||||||
        self.file = workdir + file
 | 
					        self.file = workdir + file
 | 
				
			||||||
        # print "Starting at file %s" % self.file
 | 
					        # print "Starting at file %s" % self.file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.record, self.index = ar.findIndex(begin, end, self.file)
 | 
					        while begin < end:
 | 
				
			||||||
        if self.record:
 | 
					            self.record, self.index = ar.findIndex(begin, end, self.file)
 | 
				
			||||||
            self.current = self.record.startTime()
 | 
					            if self.record:
 | 
				
			||||||
            self.currentEnd = self.record.endTime()
 | 
					                self.current = self.record.startTime()
 | 
				
			||||||
 | 
					                self.currentEnd = self.record.endTime()
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            begin = self.archive.stepTime(begin)
 | 
				
			||||||
 | 
					            workdir, file = ar.location(begin, net, sta, loc, cha)
 | 
				
			||||||
 | 
					            self.file = workdir + file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __next__(self):
 | 
					    def __next__(self):
 | 
				
			||||||
        while True:
 | 
					        while True:
 | 
				
			||||||
@ -458,7 +463,8 @@ class RecordRenamer:
 | 
				
			|||||||
    def printRules(self):
 | 
					    def printRules(self):
 | 
				
			||||||
        for r in self.renameRules:
 | 
					        for r in self.renameRules:
 | 
				
			||||||
            print(
 | 
					            print(
 | 
				
			||||||
                f"Renaming {(r.pattern.pattern if r.pattern is not None else '*.*.*.*')} "
 | 
					                "Renaming "
 | 
				
			||||||
 | 
					                f"{(r.pattern.pattern if r.pattern is not None else '*.*.*.*')} "
 | 
				
			||||||
                f"to {r.newNet}.{r.newSta}.{r.newLoc}.{r.newCha}",
 | 
					                f"to {r.newNet}.{r.newSta}.{r.newLoc}.{r.newCha}",
 | 
				
			||||||
                file=sys.stderr,
 | 
					                file=sys.stderr,
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
@ -805,10 +811,9 @@ Usage:
 | 
				
			|||||||
  {os.path.basename(__file__)} -d [options] [archive]
 | 
					  {os.path.basename(__file__)} -d [options] [archive]
 | 
				
			||||||
  {os.path.basename(__file__)} --check [options] [archive]
 | 
					  {os.path.basename(__file__)} --check [options] [archive]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Import miniSEED waveforms or dump records from an SDS structure, sort them,
 | 
					Import or export miniSEED waveforms into/from an SDS structure. Also check files and
 | 
				
			||||||
modify the time and replay them. Also check files and archives.
 | 
					archives. Data streams can be selected in three ways using the combinations of options:
 | 
				
			||||||
For Import and Dump mode the data streams can be selected in three ways
 | 
					-n -c -t  or --nslc -t or --list.
 | 
				
			||||||
using the combinations of options: -n -c -t  or --nslc -t or --list
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Verbosity:
 | 
					Verbosity:
 | 
				
			||||||
  -h, --help       Display this help message.
 | 
					  -h, --help       Display this help message.
 | 
				
			||||||
@ -843,7 +848,7 @@ Processing:
 | 
				
			|||||||
                        2007-03-28 15:48;2007-03-28 16:18;GE.LAST.*.*
 | 
					                        2007-03-28 15:48;2007-03-28 16:18;GE.LAST.*.*
 | 
				
			||||||
                        2007-03-28 15:48;2007-03-28 16:18;GE.PMBI..BH?
 | 
					                        2007-03-28 15:48;2007-03-28 16:18;GE.PMBI..BH?
 | 
				
			||||||
  -m, --modify      Dump mode: Modify the record time for real time playback
 | 
					  -m, --modify      Dump mode: Modify the record time for real time playback
 | 
				
			||||||
                    when dumping.
 | 
					                    when dumping. Implicitly sets the speed parameter to 1.
 | 
				
			||||||
  -n arg            Import, dump mode: Data stream selection as a comma separated
 | 
					  -n arg            Import, dump mode: Data stream selection as a comma separated
 | 
				
			||||||
                    list "stream1,stream2,streamX" where each stream can be NET or
 | 
					                    list "stream1,stream2,streamX" where each stream can be NET or
 | 
				
			||||||
                    NET.STA or NET.STA.LOC or NET.STA.LOC.CHA. If CHA is omitted,
 | 
					                    NET.STA or NET.STA.LOC or NET.STA.LOC.CHA. If CHA is omitted,
 | 
				
			||||||
@ -858,16 +863,18 @@ Processing:
 | 
				
			|||||||
                    A rule is "[match-stream:]rename-stream" and match-stream
 | 
					                    A rule is "[match-stream:]rename-stream" and match-stream
 | 
				
			||||||
                    is optional. match-stream and rename-stream are in the
 | 
					                    is optional. match-stream and rename-stream are in the
 | 
				
			||||||
                    "NET.STA.LOC.CHA" format. match-stream supports special
 | 
					                    "NET.STA.LOC.CHA" format. match-stream supports special
 | 
				
			||||||
                    charactes "?" "*" "|" "(" ")". rename-stream supports the
 | 
					                    characters "?" "*" "|" "(" ")". rename-stream supports the
 | 
				
			||||||
                    special character "-" that can be used in place of NET, STA,
 | 
					                    special character "-" that can be used in place of NET, STA,
 | 
				
			||||||
                    LOC, CHA codes with the meaning of not renaming those.
 | 
					                    LOC, CHA codes with the meaning of not renaming those.
 | 
				
			||||||
                    "-" can also be used as the last character in CHA code.
 | 
					                    "-" can also be used as the last character in CHA code.
 | 
				
			||||||
                    Multiple rules can be provided as a comma separated list
 | 
					                    Multiple rules can be provided as a comma separated list
 | 
				
			||||||
                    or by providing multiple --rename options.
 | 
					                    or by providing multiple --rename options.
 | 
				
			||||||
  -s, --sort        Dump mode: Sort records.
 | 
					  -s, --sort        Dump mode: Sort records.
 | 
				
			||||||
  --speed arg       Dump mode: Specify the speed to dump the records. A value
 | 
					  --speed arg       Dump mode: Specify the speed to dump the records as a
 | 
				
			||||||
                    of 0 means no delay. Otherwise speed is a multiplier of
 | 
					                    multiplier of the real time difference between the records.
 | 
				
			||||||
                    the real time difference between the records.
 | 
					                    A value > 1 will speed up the playback while a value > 0
 | 
				
			||||||
 | 
					                    and < 1 will slow the playback down. This option implies
 | 
				
			||||||
 | 
					                    sorting of the records.
 | 
				
			||||||
  -t, --time-window t1~t2
 | 
					  -t, --time-window t1~t2
 | 
				
			||||||
                    Import, dump mode: UTC time window filter to be applied to
 | 
					                    Import, dump mode: UTC time window filter to be applied to
 | 
				
			||||||
                    the data streams. Format: "StartTime~EndTime". Example:
 | 
					                    the data streams. Format: "StartTime~EndTime". Example:
 | 
				
			||||||
@ -886,7 +893,7 @@ Output:
 | 
				
			|||||||
                    --print-streams.
 | 
					                    --print-streams.
 | 
				
			||||||
  --with-filecheck  Import mode: Check all accessed files after import. Unsorted
 | 
					  --with-filecheck  Import mode: Check all accessed files after import. Unsorted
 | 
				
			||||||
                    or unreadable files are reported to stderr. Checks are only
 | 
					                    or unreadable files are reported to stderr. Checks are only
 | 
				
			||||||
                    complete for files containing exactly one stream. More 
 | 
					                    complete for files containing exactly one stream. More
 | 
				
			||||||
                    complete checks are made with scmssort.
 | 
					                    complete checks are made with scmssort.
 | 
				
			||||||
  --with-filename   Import mode: Print all accessed files to sterr after import.
 | 
					  --with-filename   Import mode: Print all accessed files to sterr after import.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -901,11 +908,16 @@ Import miniSEED data into a SDS archive, check all modified files for errors
 | 
				
			|||||||
  {os.path.basename(__file__)} -I file.mseed --with-filecheck $SEISCOMP_ROOT/var/lib/archive
 | 
					  {os.path.basename(__file__)} -I file.mseed --with-filecheck $SEISCOMP_ROOT/var/lib/archive
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Import miniSEED data from FDSNWS into a SDS archive for specific time range and streams
 | 
					Import miniSEED data from FDSNWS into a SDS archive for specific time range and streams
 | 
				
			||||||
  {os.path.basename(__file__)} -I fdsnws://geofon.gfz-potsdam.de \
 | 
					  {os.path.basename(__file__)} -I fdsnws://geofon.gfz.de \
 | 
				
			||||||
-t 2022-03-28T15:48~2022-03-28T16:18 --nslc list.file $SEISCOMP_ROOT/var/lib/archive
 | 
					-t 2022-03-28T15:48~2022-03-28T16:18 --nslc list.file $SEISCOMP_ROOT/var/lib/archive
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Check an archive for files with out-of-order records
 | 
					Check an archive for files with out-of-order records
 | 
				
			||||||
  {os.path.basename(__file__)} --check /archive
 | 
					  {os.path.basename(__file__)} --check /archive
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Play back miniSEED data from archive at normal speed as in real time and pipe \
 | 
				
			||||||
 | 
					them into another application, here scrttv
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  {os.path.basename(__file__)} -dmv -t 2026-05-01~2026-05-02 /archive | scrttv -I - --offline --no-inventory
 | 
				
			||||||
"""
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -964,7 +976,7 @@ def main():
 | 
				
			|||||||
    # default = stdin
 | 
					    # default = stdin
 | 
				
			||||||
    recordURL = "file://-"
 | 
					    recordURL = "file://-"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    speed = 0
 | 
					    speed = None
 | 
				
			||||||
    stdout = False
 | 
					    stdout = False
 | 
				
			||||||
    outputFile = None
 | 
					    outputFile = None
 | 
				
			||||||
    ignoreRecords = False
 | 
					    ignoreRecords = False
 | 
				
			||||||
@ -1038,7 +1050,23 @@ def main():
 | 
				
			|||||||
        else:
 | 
					        else:
 | 
				
			||||||
            usage(exitcode=1)
 | 
					            usage(exitcode=1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if not dump and not checkSDS and not importMode:
 | 
					    if dump:
 | 
				
			||||||
 | 
					        if modifyTime and speed is None:
 | 
				
			||||||
 | 
					            speed = 1
 | 
				
			||||||
 | 
					            sort = True
 | 
				
			||||||
 | 
					        elif speed is not None:
 | 
				
			||||||
 | 
					            if speed <= 0:
 | 
				
			||||||
 | 
					                print("'--speed' must be greater than 0", file=sys.stderr)
 | 
				
			||||||
 | 
					                return -1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            sort = True
 | 
				
			||||||
 | 
					            if modifyTime and speed != 1:
 | 
				
			||||||
 | 
					                print(
 | 
				
			||||||
 | 
					                    "Modify time requested with '--speed' value other than 1. Gaps "
 | 
				
			||||||
 | 
					                    "or overlaps will be created.",
 | 
				
			||||||
 | 
					                    file=sys.stderr,
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					    elif not checkSDS and not importMode:
 | 
				
			||||||
        importMode = True
 | 
					        importMode = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if files:
 | 
					    if files:
 | 
				
			||||||
@ -1116,18 +1144,21 @@ def main():
 | 
				
			|||||||
            print(f"Stream file: '{nslcFile}'", file=sys.stderr)
 | 
					            print(f"Stream file: '{nslcFile}'", file=sys.stderr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if dump:
 | 
					        if dump:
 | 
				
			||||||
            if not sort and not modifyTime:
 | 
					            flags = []
 | 
				
			||||||
                print("Mode: DUMP", file=sys.stderr)
 | 
					            if speed:
 | 
				
			||||||
            elif sort and not modifyTime:
 | 
					                flags.append(f"speed={speed}")
 | 
				
			||||||
                print("Mode: DUMP & SORT", file=sys.stderr)
 | 
					            if sort:
 | 
				
			||||||
            elif not sort and modifyTime:
 | 
					                flags.append("sort")
 | 
				
			||||||
                print("Mode: DUMP & MODIFY_TIME", file=sys.stderr)
 | 
					            if modifyTime:
 | 
				
			||||||
            elif sort and modifyTime:
 | 
					                flags.append("modify time")
 | 
				
			||||||
                print("Mode: DUMP & SORT & MODIFY_TIME", file=sys.stderr)
 | 
					            flagStr = ""
 | 
				
			||||||
 | 
					            if flags:
 | 
				
			||||||
 | 
					                flagStr = f" ({', '.join(flags)})"
 | 
				
			||||||
 | 
					            print(f"Mode: DUMP{flagStr}", file=sys.stderr)
 | 
				
			||||||
            print(f"Archive: {archiveDirectory}", file=sys.stderr)
 | 
					            print(f"Archive: {archiveDirectory}", file=sys.stderr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if checkSDS:
 | 
					        if checkSDS:
 | 
				
			||||||
            print("Mode: Check", file=sys.stderr)
 | 
					            print("Mode: CHECK", file=sys.stderr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if importMode:
 | 
					        if importMode:
 | 
				
			||||||
            print("Mode: IMPORT", file=sys.stderr)
 | 
					            print("Mode: IMPORT", file=sys.stderr)
 | 
				
			||||||
@ -1157,7 +1188,7 @@ def main():
 | 
				
			|||||||
        else:
 | 
					        else:
 | 
				
			||||||
            out = sys.stdout.buffer
 | 
					            out = sys.stdout.buffer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # list file witht times takes priority over nslc list
 | 
					    # list file with times takes priority over nslc list
 | 
				
			||||||
    if listFile:
 | 
					    if listFile:
 | 
				
			||||||
        nslcFile = None
 | 
					        nslcFile = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1174,7 +1205,8 @@ def main():
 | 
				
			|||||||
        for stream in streamFilter:
 | 
					        for stream in streamFilter:
 | 
				
			||||||
            if stream.tmin >= stream.tmax:
 | 
					            if stream.tmin >= stream.tmax:
 | 
				
			||||||
                print(
 | 
					                print(
 | 
				
			||||||
                    f"Info: ignoring {stream.net}.{stream.sta}.{stream.loc}.{stream.cha} - "
 | 
					                    "Info: "
 | 
				
			||||||
 | 
					                    f"ignoring {stream.net}.{stream.sta}.{stream.loc}.{stream.cha} - "
 | 
				
			||||||
                    f"start {stream.tmin} after end {stream.tmax}",
 | 
					                    f"start {stream.tmin} after end {stream.tmax}",
 | 
				
			||||||
                    file=sys.stderr,
 | 
					                    file=sys.stderr,
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
@ -1228,8 +1260,9 @@ def main():
 | 
				
			|||||||
                    f"{stream.cha} {stream.tmin} - {stream.tmax}",
 | 
					                    f"{stream.cha} {stream.tmin} - {stream.tmax}",
 | 
				
			||||||
                    file=sys.stderr,
 | 
					                    file=sys.stderr,
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
        stime = None
 | 
					
 | 
				
			||||||
        realTime = seiscomp.core.Time.GMT()
 | 
					        firstRecordEndTime = None
 | 
				
			||||||
 | 
					        startTime = seiscomp.core.Time.UTC()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if sort:
 | 
					        if sort:
 | 
				
			||||||
            records = Sorter(archiveIterator)
 | 
					            records = Sorter(archiveIterator)
 | 
				
			||||||
@ -1245,36 +1278,34 @@ def main():
 | 
				
			|||||||
                if ignoreRecords:
 | 
					                if ignoreRecords:
 | 
				
			||||||
                    continue
 | 
					                    continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            etime = seiscomp.core.Time(rec.endTime())
 | 
					            etime = rec.endTime()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if stime is None:
 | 
					            if not firstRecordEndTime:
 | 
				
			||||||
                stime = etime
 | 
					                firstRecordEndTime = seiscomp.core.Time(etime)
 | 
				
			||||||
                if verbose:
 | 
					                if verbose:
 | 
				
			||||||
                    print(f"First record: {stime.iso()}", file=sys.stderr)
 | 
					                    print(
 | 
				
			||||||
 | 
					                        f"First record end time: {firstRecordEndTime.iso()}",
 | 
				
			||||||
 | 
					                        file=sys.stderr,
 | 
				
			||||||
 | 
					                    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            dt = etime - stime
 | 
					            if speed:
 | 
				
			||||||
 | 
					                dt = (etime - firstRecordEndTime).length()
 | 
				
			||||||
 | 
					                playTime = startTime + seiscomp.core.TimeSpan(dt / speed)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            now = seiscomp.core.Time.GMT()
 | 
					                if modifyTime:
 | 
				
			||||||
 | 
					                    recLength = etime - rec.startTime()
 | 
				
			||||||
 | 
					                    rec.setStartTime(seiscomp.core.Time(playTime) - recLength)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if speed > 0:
 | 
					                sleepSeconds = (playTime - seiscomp.core.Time.UTC()).length()
 | 
				
			||||||
                playTime = (realTime + dt).toDouble() / speed
 | 
					                if sleepSeconds > 0:
 | 
				
			||||||
            else:
 | 
					                    time.sleep(sleepSeconds)
 | 
				
			||||||
                playTime = now.toDouble()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            sleepTime = playTime - now.toDouble()
 | 
					 | 
				
			||||||
            if sleepTime > 0:
 | 
					 | 
				
			||||||
                time.sleep(sleepTime)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if modifyTime:
 | 
					 | 
				
			||||||
                recLength = etime - rec.startTime()
 | 
					 | 
				
			||||||
                rec.setStartTime(seiscomp.core.Time(playTime) - recLength)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if verbose:
 | 
					            if verbose:
 | 
				
			||||||
                etime = rec.endTime()
 | 
					 | 
				
			||||||
                print(
 | 
					                print(
 | 
				
			||||||
                    f"{rec.streamID()} time current: "
 | 
					                    f"{rec.streamID()} "
 | 
				
			||||||
                    f"{seiscomp.core.Time.LocalTime().iso()} start: "
 | 
					                    f"current time: {seiscomp.core.Time.LocalTime().iso()}"
 | 
				
			||||||
                    f"{rec.startTime().iso()} end: {etime.iso()}",
 | 
					                    f", rec start: {rec.startTime().iso()}"
 | 
				
			||||||
 | 
					                    f", rec end: {rec.startTime().iso()}",
 | 
				
			||||||
                    file=sys.stderr,
 | 
					                    file=sys.stderr,
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1529,7 +1560,8 @@ def main():
 | 
				
			|||||||
                            f = open(archiveDirectory + file, "ab")
 | 
					                            f = open(archiveDirectory + file, "ab")
 | 
				
			||||||
                        except BaseException:
 | 
					                        except BaseException:
 | 
				
			||||||
                            print(
 | 
					                            print(
 | 
				
			||||||
                                f"File {archiveDirectory + file} could not be opened for writing",
 | 
					                                f"File {archiveDirectory + file} could not be opened "
 | 
				
			||||||
 | 
					                                f"for writing",
 | 
				
			||||||
                                file=sys.stderr,
 | 
					                                file=sys.stderr,
 | 
				
			||||||
                            )
 | 
					                            )
 | 
				
			||||||
                            return -1
 | 
					                            return -1
 | 
				
			||||||
@ -1605,8 +1637,8 @@ def main():
 | 
				
			|||||||
                    print(fileName, file=sys.stderr)
 | 
					                    print(fileName, file=sys.stderr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if printStreams and streamDict:
 | 
					    if printStreams and streamDict:
 | 
				
			||||||
        minTime = seiscomp.core.Time.GMT()
 | 
					        minTime = None
 | 
				
			||||||
        maxTime = str2time("1970-01-01 00:00:00")
 | 
					        maxTime = None
 | 
				
			||||||
        totalRecs = 0
 | 
					        totalRecs = 0
 | 
				
			||||||
        totalSamples = 0
 | 
					        totalSamples = 0
 | 
				
			||||||
        totalChans = set()
 | 
					        totalChans = set()
 | 
				
			||||||
@ -1624,8 +1656,12 @@ def main():
 | 
				
			|||||||
                file=sys.stderr,
 | 
					                file=sys.stderr,
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            maxTime = max(maxTime, str2time(end))
 | 
					            if minTime:
 | 
				
			||||||
            minTime = min(minTime, str2time(start))
 | 
					                minTime = min(minTime, str2time(start))
 | 
				
			||||||
 | 
					                maxTime = max(maxTime, str2time(end))
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                minTime = str2time(start)
 | 
				
			||||||
 | 
					                maxTime = str2time(end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            totalChans.add(key)
 | 
					            totalChans.add(key)
 | 
				
			||||||
            totalNetworks.add(key.split(".")[0])
 | 
					            totalNetworks.add(key.split(".")[0])
 | 
				
			||||||
@ -1637,28 +1673,17 @@ def main():
 | 
				
			|||||||
            "# Summary",
 | 
					            "# Summary",
 | 
				
			||||||
            file=sys.stderr,
 | 
					            file=sys.stderr,
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					        if minTime and maxTime:
 | 
				
			||||||
 | 
					            print(
 | 
				
			||||||
 | 
					                f"#   time range: {minTime.iso()} - {maxTime.iso()}",
 | 
				
			||||||
 | 
					                file=sys.stderr,
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
        print(
 | 
					        print(
 | 
				
			||||||
            f"#   time range: {minTime.iso()} - {maxTime.iso()}",
 | 
					            f""""#   networks:   {len(totalNetworks)}
 | 
				
			||||||
            file=sys.stderr,
 | 
					#   stations:   {len(totalStations)}
 | 
				
			||||||
        )
 | 
					#   streams:    {len(totalChans)}
 | 
				
			||||||
        print(
 | 
					#   records:    {totalRecs}
 | 
				
			||||||
            f"#   networks:   {len(totalNetworks)}",
 | 
					#   samples:    {totalSamples}""",
 | 
				
			||||||
            file=sys.stderr,
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
        print(
 | 
					 | 
				
			||||||
            f"#   stations:   {len(totalStations)}",
 | 
					 | 
				
			||||||
            file=sys.stderr,
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
        print(
 | 
					 | 
				
			||||||
            f"#   streams:    {len(totalChans)}",
 | 
					 | 
				
			||||||
            file=sys.stderr,
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
        print(
 | 
					 | 
				
			||||||
            f"#   records:    {totalRecs}",
 | 
					 | 
				
			||||||
            file=sys.stderr,
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
        print(
 | 
					 | 
				
			||||||
            f"#   samples:    {totalSamples}",
 | 
					 | 
				
			||||||
            file=sys.stderr,
 | 
					            file=sys.stderr,
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								bin/scautoloc
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scautoloc
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/scautopick
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scautopick
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/scchkcfg
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scchkcfg
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/scconfig
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scconfig
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										146
									
								
								bin/scdbstrip
									
									
									
									
									
								
							
							
						
						
									
										146
									
								
								bin/scdbstrip
									
									
									
									
									
								
							@ -81,25 +81,20 @@ class MySQLDB(QueryInterface):
 | 
				
			|||||||
        return tmp_tables
 | 
					        return tmp_tables
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def deleteObjectQuery(self, *v):
 | 
					    def deleteObjectQuery(self, *v):
 | 
				
			||||||
        if v[0]:
 | 
					        q = (
 | 
				
			||||||
            q = (
 | 
					            "delete "
 | 
				
			||||||
                "delete "
 | 
					            + v[0]
 | 
				
			||||||
                + v[0]
 | 
					            + " from "
 | 
				
			||||||
                + " from "
 | 
					            + ", ".join(v)
 | 
				
			||||||
                + ", ".join(v)
 | 
					            + " where "
 | 
				
			||||||
                + " where "
 | 
					            + v[0]
 | 
				
			||||||
                + v[0]
 | 
					            + "._oid="
 | 
				
			||||||
                + "._oid="
 | 
					            + v[1]
 | 
				
			||||||
                + v[1]
 | 
					            + "._oid"
 | 
				
			||||||
                + "._oid and "
 | 
					        )
 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            q = "delete " + v[1] + " from " + ", ".join(v[1:]) + " where "
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for i in range(1, len(v) - 1):
 | 
					        for i in range(1, len(v) - 1):
 | 
				
			||||||
            if i > 1:
 | 
					            q += " and " + v[i] + "._oid=" + v[i + 1] + "._oid"
 | 
				
			||||||
                q += " and "
 | 
					 | 
				
			||||||
            q += v[i] + "._oid=" + v[i + 1] + "._oid"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return q
 | 
					        return q
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -211,25 +206,20 @@ class PostgresDB(QueryInterface):
 | 
				
			|||||||
        return tmp_tables
 | 
					        return tmp_tables
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def deleteObjectQuery(self, *v):
 | 
					    def deleteObjectQuery(self, *v):
 | 
				
			||||||
        if v[0]:
 | 
					        q = (
 | 
				
			||||||
            q = (
 | 
					            "delete from "
 | 
				
			||||||
                "delete from "
 | 
					            + v[0]
 | 
				
			||||||
                + v[0]
 | 
					            + " using "
 | 
				
			||||||
                + " using "
 | 
					            + ", ".join(v[1:])
 | 
				
			||||||
                + ", ".join(v[1:])
 | 
					            + " where "
 | 
				
			||||||
                + " where "
 | 
					            + v[0]
 | 
				
			||||||
                + v[0]
 | 
					            + "._oid="
 | 
				
			||||||
                + "._oid="
 | 
					            + v[1]
 | 
				
			||||||
                + v[1]
 | 
					            + "._oid"
 | 
				
			||||||
                + "._oid and "
 | 
					        )
 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            q = "delete from " + v[1] + " using " + ", ".join(v[2:]) + " where "
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for i in range(1, len(v) - 1):
 | 
					        for i in range(1, len(v) - 1):
 | 
				
			||||||
            if i > 1:
 | 
					            q += " and " + v[i] + "._oid=" + v[i + 1] + "._oid"
 | 
				
			||||||
                q += " and "
 | 
					 | 
				
			||||||
            q += v[i] + "._oid=" + v[i + 1] + "._oid"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return q
 | 
					        return q
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -333,6 +323,8 @@ class DBCleaner(seiscomp.client.Application):
 | 
				
			|||||||
        self._invertMode = False
 | 
					        self._invertMode = False
 | 
				
			||||||
        self._stripEP = True
 | 
					        self._stripEP = True
 | 
				
			||||||
        self._stripQC = True
 | 
					        self._stripQC = True
 | 
				
			||||||
 | 
					        self._keepModes = [] # Array with modes to keep
 | 
				
			||||||
 | 
					        self._keepStatus = [] # Array with status to keep
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self._steps = 0
 | 
					        self._steps = 0
 | 
				
			||||||
        self._currentStep = 0
 | 
					        self._currentStep = 0
 | 
				
			||||||
@ -368,6 +360,18 @@ class DBCleaner(seiscomp.client.Application):
 | 
				
			|||||||
                    "Event-IDs to keep in the database. Combining with 'qc-only' "
 | 
					                    "Event-IDs to keep in the database. Combining with 'qc-only' "
 | 
				
			||||||
                    "is invalid.",
 | 
					                    "is invalid.",
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
 | 
					                self.commandline().addStringOption(
 | 
				
			||||||
 | 
					                    "Objects",
 | 
				
			||||||
 | 
					                    "keep-event-modes",
 | 
				
			||||||
 | 
					                    "Keep all events where is evaluation mode of the preferred origin is "
 | 
				
			||||||
 | 
					                    "one of the given modes."
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					                self.commandline().addStringOption(
 | 
				
			||||||
 | 
					                    "Objects",
 | 
				
			||||||
 | 
					                    "keep-event-status",
 | 
				
			||||||
 | 
					                    "Keep all events where is evaluation status of the preferred origin is "
 | 
				
			||||||
 | 
					                    "one of the given status."
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
                self.commandline().addOption(
 | 
					                self.commandline().addOption(
 | 
				
			||||||
                    "Objects",
 | 
					                    "Objects",
 | 
				
			||||||
                    "qc-only,Q",
 | 
					                    "qc-only,Q",
 | 
				
			||||||
@ -473,7 +477,7 @@ class DBCleaner(seiscomp.client.Application):
 | 
				
			|||||||
            f"""Usage:
 | 
					            f"""Usage:
 | 
				
			||||||
  {os.path.basename(__file__)} [options]
 | 
					  {os.path.basename(__file__)} [options]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Remove event and waveform quality parameters from the database in a timespan. Use 
 | 
					Remove event and waveform quality parameters from the database in a timespan. Use
 | 
				
			||||||
scardac for removing data availability parameters."""
 | 
					scardac for removing data availability parameters."""
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -543,6 +547,19 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
 | 
				
			|||||||
            except RuntimeError:
 | 
					            except RuntimeError:
 | 
				
			||||||
                pass
 | 
					                pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
 | 
					                status = self.commandline().optionString("keep-event-status")
 | 
				
			||||||
 | 
					                self._keepStatus = [s.strip() for s in status.split(",")]
 | 
				
			||||||
 | 
					                print(status, self._keepStatus)
 | 
				
			||||||
 | 
					            except RuntimeError:
 | 
				
			||||||
 | 
					                pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
 | 
					                modes = self.commandline().optionString("keep-event-modes")
 | 
				
			||||||
 | 
					                self._keepModes = [m.strip() for m in modes.split(",")]
 | 
				
			||||||
 | 
					            except RuntimeError:
 | 
				
			||||||
 | 
					                pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
                dateTime = self.commandline().optionString("datetime")
 | 
					                dateTime = self.commandline().optionString("datetime")
 | 
				
			||||||
            except RuntimeError:
 | 
					            except RuntimeError:
 | 
				
			||||||
@ -694,6 +711,11 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
 | 
				
			|||||||
            self.beginMessage("Search objects")
 | 
					            self.beginMessage("Search objects")
 | 
				
			||||||
            if not self.runCommand(tmp_object):
 | 
					            if not self.runCommand(tmp_object):
 | 
				
			||||||
                return False
 | 
					                return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            tmp_object = "create index idx_oid on tmp_object(_oid)"
 | 
				
			||||||
 | 
					            if not self.runCommand(tmp_object):
 | 
				
			||||||
 | 
					                return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            self.endMessage(self.globalCount("tmp_object"))
 | 
					            self.endMessage(self.globalCount("tmp_object"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for table in tables:
 | 
					            for table in tables:
 | 
				
			||||||
@ -783,6 +805,7 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
 | 
				
			|||||||
                self.beginMessage("Deleting waveform quality parameters")
 | 
					                self.beginMessage("Deleting waveform quality parameters")
 | 
				
			||||||
                if not self.runCommand(
 | 
					                if not self.runCommand(
 | 
				
			||||||
                    self._query.deleteObjectQuery("Object", "WaveformQuality")
 | 
					                    self._query.deleteObjectQuery("Object", "WaveformQuality")
 | 
				
			||||||
 | 
					                    + " and "
 | 
				
			||||||
                    + timeRangeSelection(f"WaveformQuality.{self.cnvCol('end')}")
 | 
					                    + timeRangeSelection(f"WaveformQuality.{self.cnvCol('end')}")
 | 
				
			||||||
                ):
 | 
					                ):
 | 
				
			||||||
                    return False
 | 
					                    return False
 | 
				
			||||||
@ -822,9 +845,28 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
 | 
				
			|||||||
                    + " not in ('%s')" % "','".join(self._keepEvents)
 | 
					                    + " not in ('%s')" % "','".join(self._keepEvents)
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if len(self._keepModes) > 0:
 | 
				
			||||||
 | 
					                old_events += (
 | 
				
			||||||
 | 
					                    " and Origin."
 | 
				
			||||||
 | 
					                    + self.cnvCol("evaluationMode")
 | 
				
			||||||
 | 
					                    + " not in ('%s')" % "','".join(self._keepModes)
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if len(self._keepStatus) > 0:
 | 
				
			||||||
 | 
					                old_events += (
 | 
				
			||||||
 | 
					                    " and Origin."
 | 
				
			||||||
 | 
					                    + self.cnvCol("evaluationStatus")
 | 
				
			||||||
 | 
					                    + " not in ('%s')" % "','".join(self._keepStatus)
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            self.beginMessage("Find old events")
 | 
					            self.beginMessage("Find old events")
 | 
				
			||||||
            if not self.runCommand(old_events):
 | 
					            if not self.runCommand(old_events):
 | 
				
			||||||
                return False
 | 
					                return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            old_events = "create index idx_oid on old_events(_oid)"
 | 
				
			||||||
 | 
					            if not self.runCommand(old_events):
 | 
				
			||||||
 | 
					                return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            self.endMessage(self.globalCount("old_events"))
 | 
					            self.endMessage(self.globalCount("old_events"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Delete OriginReferences of old events
 | 
					            # Delete OriginReferences of old events
 | 
				
			||||||
@ -879,6 +921,10 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            self.beginMessage("Find unassociated focal mechanisms")
 | 
					            self.beginMessage("Find unassociated focal mechanisms")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if not self.runCommand(tmp_fm):
 | 
				
			||||||
 | 
					                return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            tmp_fm = "create index idx_oid on tmp_fm(_oid)"
 | 
				
			||||||
            if not self.runCommand(tmp_fm):
 | 
					            if not self.runCommand(tmp_fm):
 | 
				
			||||||
                return False
 | 
					                return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -990,6 +1036,10 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            self.beginMessage("Find unassociated origins")
 | 
					            self.beginMessage("Find unassociated origins")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if not self.runCommand(tmp_origin):
 | 
				
			||||||
 | 
					                return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            tmp_origin = "create index idx_oid on tmp_origin(_oid)"
 | 
				
			||||||
            if not self.runCommand(tmp_origin):
 | 
					            if not self.runCommand(tmp_origin):
 | 
				
			||||||
                return False
 | 
					                return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -998,7 +1048,7 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
 | 
				
			|||||||
      update tmp_origin set used=1 \
 | 
					      update tmp_origin set used=1 \
 | 
				
			||||||
      where ("
 | 
					      where ("
 | 
				
			||||||
                + self.cnvCol("publicID")
 | 
					                + self.cnvCol("publicID")
 | 
				
			||||||
                + " in (select distinct "
 | 
					                + " in (select "
 | 
				
			||||||
                + self.cnvCol("originID")
 | 
					                + self.cnvCol("originID")
 | 
				
			||||||
                + " from OriginReference)) \
 | 
					                + " from OriginReference)) \
 | 
				
			||||||
      or ("
 | 
					      or ("
 | 
				
			||||||
@ -1093,6 +1143,10 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
 | 
				
			|||||||
                )
 | 
					                )
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if not self.runCommand(tmp_pick):
 | 
				
			||||||
 | 
					                return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            tmp_pick = "create index idx_oid on tmp_pick(_oid)"
 | 
				
			||||||
            if not self.runCommand(tmp_pick):
 | 
					            if not self.runCommand(tmp_pick):
 | 
				
			||||||
                return False
 | 
					                return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1145,6 +1199,10 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
 | 
				
			|||||||
                )
 | 
					                )
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if not self.runCommand(tmp_amp):
 | 
				
			||||||
 | 
					                return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            tmp_amp = "create index idx_oid on tmp_amp(_oid)"
 | 
				
			||||||
            if not self.runCommand(tmp_amp):
 | 
					            if not self.runCommand(tmp_amp):
 | 
				
			||||||
                return False
 | 
					                return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1287,27 +1345,27 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
 | 
				
			|||||||
            self._query.deleteJournalQuery("PublicObject", *v) + " and used=0"
 | 
					            self._query.deleteJournalQuery("PublicObject", *v) + " and used=0"
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.runCommand(
 | 
					        self.runCommand(
 | 
				
			||||||
            self._query.deleteObjectQuery(None, "Object", *v) + " and used=0"
 | 
					            self._query.deleteObjectQuery("Object", *v) + " and used=0"
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.runCommand(
 | 
					        self.runCommand(
 | 
				
			||||||
            self._query.deleteObjectQuery(None, "PublicObject", *v) + " and used=0"
 | 
					            self._query.deleteObjectQuery("PublicObject", *v) + " and used=0"
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def deleteObjects(self, *v):
 | 
					    def deleteObjects(self, *v):
 | 
				
			||||||
        self.runCommand(self._query.deleteJournalQuery("PublicObject", *v))
 | 
					        self.runCommand(self._query.deleteJournalQuery("PublicObject", *v))
 | 
				
			||||||
        self.runCommand(self._query.deleteObjectQuery("Object", *v))
 | 
					        self.runCommand(self._query.deleteObjectQuery(*v))
 | 
				
			||||||
        self.runCommand(self._query.deleteObjectQuery("PublicObject", *v))
 | 
					        self.runCommand(self._query.deleteObjectQuery("PublicObject", *v[1:]))
 | 
				
			||||||
        self.runCommand(self._query.deleteObjectQuery(None, *v))
 | 
					        self.runCommand(self._query.deleteObjectQuery("Object", *v[1:]))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def deleteUnusedObjects(self, *v):
 | 
					    def deleteUnusedObjects(self, *v):
 | 
				
			||||||
        self.runCommand(
 | 
					        self.runCommand(
 | 
				
			||||||
            self._query.deleteJournalQuery("PublicObject", *v) + " and used=0"
 | 
					            self._query.deleteJournalQuery("PublicObject", *v) + " and used=0"
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.runCommand(self._query.deleteObjectQuery("Object", *v) + " and used=0")
 | 
					        self.runCommand(self._query.deleteObjectQuery(*v) + " and used=0")
 | 
				
			||||||
        self.runCommand(
 | 
					        self.runCommand(
 | 
				
			||||||
            self._query.deleteObjectQuery("PublicObject", *v) + " and used=0"
 | 
					            self._query.deleteObjectQuery("PublicObject", *v[1:]) + " and used=0"
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.runCommand(self._query.deleteObjectQuery(None, *v) + " and used=0")
 | 
					        self.runCommand(self._query.deleteObjectQuery("Object", *v[1:]) + " and used=0")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def delete(self, message, func, *v):
 | 
					    def delete(self, message, func, *v):
 | 
				
			||||||
        self.beginMessage(message)
 | 
					        self.beginMessage(message)
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								bin/scdispatch
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scdispatch
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							@ -1,84 +0,0 @@
 | 
				
			|||||||
#!/usr/bin/env seiscomp-python
 | 
					 | 
				
			||||||
# -*- coding: utf-8 -*-
 | 
					 | 
				
			||||||
############################################################################
 | 
					 | 
				
			||||||
# Copyright (C) GFZ Potsdam                                                #
 | 
					 | 
				
			||||||
# All rights reserved.                                                     #
 | 
					 | 
				
			||||||
#                                                                          #
 | 
					 | 
				
			||||||
# GNU Affero General Public License Usage                                  #
 | 
					 | 
				
			||||||
# This file may be used under the terms of the GNU Affero                  #
 | 
					 | 
				
			||||||
# Public License version 3.0 as published by the Free Software Foundation  #
 | 
					 | 
				
			||||||
# and appearing in the file LICENSE included in the packaging of this      #
 | 
					 | 
				
			||||||
# file. Please review the following information to ensure the GNU Affero   #
 | 
					 | 
				
			||||||
# Public License version 3.0 requirements will be met:                     #
 | 
					 | 
				
			||||||
# https://www.gnu.org/licenses/agpl-3.0.html.                              #
 | 
					 | 
				
			||||||
############################################################################
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import sys
 | 
					 | 
				
			||||||
import seiscomp.client, seiscomp.datamodel, seiscomp.io
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class ObjectDumper(seiscomp.client.Application):
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def __init__(self):
 | 
					 | 
				
			||||||
        seiscomp.client.Application.__init__(self, len(sys.argv), sys.argv)
 | 
					 | 
				
			||||||
        self.setMessagingEnabled(True)
 | 
					 | 
				
			||||||
        self.setDatabaseEnabled(True, False)
 | 
					 | 
				
			||||||
        self.setMessagingUsername("")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def createCommandLineDescription(self):
 | 
					 | 
				
			||||||
        seiscomp.client.Application.createCommandLineDescription(self)
 | 
					 | 
				
			||||||
        self.commandline().addGroup("Dump")
 | 
					 | 
				
			||||||
        self.commandline().addStringOption("Dump", "public-id,P", "publicID")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def loadEventParametersObject(self, publicID):
 | 
					 | 
				
			||||||
        for tp in (
 | 
					 | 
				
			||||||
            seiscomp.datamodel.Pick,
 | 
					 | 
				
			||||||
            seiscomp.datamodel.Amplitude,
 | 
					 | 
				
			||||||
            seiscomp.datamodel.Origin,
 | 
					 | 
				
			||||||
            seiscomp.datamodel.Event,
 | 
					 | 
				
			||||||
            seiscomp.datamodel.FocalMechanism,
 | 
					 | 
				
			||||||
            seiscomp.datamodel.Magnitude,
 | 
					 | 
				
			||||||
            seiscomp.datamodel.StationMagnitude,
 | 
					 | 
				
			||||||
        ):
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            obj = self.query().loadObject(tp.TypeInfo(), publicID)
 | 
					 | 
				
			||||||
            obj = tp.Cast(obj)
 | 
					 | 
				
			||||||
            if obj:
 | 
					 | 
				
			||||||
                ep = seiscomp.datamodel.EventParameters()
 | 
					 | 
				
			||||||
                ep.add(obj)
 | 
					 | 
				
			||||||
                return ep
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def loadInventoryObject(self, publicID):
 | 
					 | 
				
			||||||
        for tp in (
 | 
					 | 
				
			||||||
            seiscomp.datamodel.Network,
 | 
					 | 
				
			||||||
            seiscomp.datamodel.Station,
 | 
					 | 
				
			||||||
            seiscomp.datamodel.Sensor,
 | 
					 | 
				
			||||||
            seiscomp.datamodel.SensorLocation,
 | 
					 | 
				
			||||||
            seiscomp.datamodel.Stream,
 | 
					 | 
				
			||||||
        ):
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            obj = self.query().loadObject(tp.TypeInfo(), publicID)
 | 
					 | 
				
			||||||
            obj = tp.Cast(obj)
 | 
					 | 
				
			||||||
            if obj:
 | 
					 | 
				
			||||||
                return obj
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def run(self):
 | 
					 | 
				
			||||||
        publicID = self.commandline().optionString("public-id")
 | 
					 | 
				
			||||||
        obj = self.loadEventParametersObject(publicID)
 | 
					 | 
				
			||||||
        if obj is None:
 | 
					 | 
				
			||||||
            obj = self.loadInventoryObject(publicID)
 | 
					 | 
				
			||||||
        if obj is None:
 | 
					 | 
				
			||||||
            raise ValueError("unknown object '" + publicID + "'")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        # dump formatted XML archive to stdout
 | 
					 | 
				
			||||||
        ar = seiscomp.io.XMLArchive()
 | 
					 | 
				
			||||||
        ar.setFormattedOutput(True)
 | 
					 | 
				
			||||||
        ar.create("-")
 | 
					 | 
				
			||||||
        ar.writeObject(obj)
 | 
					 | 
				
			||||||
        ar.close()
 | 
					 | 
				
			||||||
        return True
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if __name__ == "__main__":
 | 
					 | 
				
			||||||
    app = ObjectDumper()
 | 
					 | 
				
			||||||
    app()
 | 
					 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								bin/scevent
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scevent
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										16
									
								
								bin/scevtls
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								bin/scevtls
									
									
									
									
									
								
							@ -53,7 +53,7 @@ def readXML(self):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if self._eventType:
 | 
					        if self._eventType:
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
                eventType = seiscomp.datamodel.EEventTypeNames_name(evt.type())
 | 
					                eventType = seiscomp.datamodel.EEventTypeNames.name(evt.type())
 | 
				
			||||||
                if eventType != self._eventType:
 | 
					                if eventType != self._eventType:
 | 
				
			||||||
                    continue
 | 
					                    continue
 | 
				
			||||||
            except ValueError:
 | 
					            except ValueError:
 | 
				
			||||||
@ -108,10 +108,16 @@ class EventList(seiscomp.client.Application):
 | 
				
			|||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addGroup("Events")
 | 
					        self.commandline().addGroup("Events")
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Events", "begin", "Specify the lower bound of the time interval."
 | 
					            "Events",
 | 
				
			||||||
 | 
					            "begin",
 | 
				
			||||||
 | 
					            "Specify the lower bound of the time interval. Uses 1900-01-01T00:00:00 "
 | 
				
			||||||
 | 
					            "unless given.",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Events", "end", "Specify the upper bound of the time interval."
 | 
					            "Events",
 | 
				
			||||||
 | 
					            "end",
 | 
				
			||||||
 | 
					            "Specify the upper bound of the time interval Uses 2500-01-01T00:00:00 "
 | 
				
			||||||
 | 
					            "unless given.",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Events",
 | 
					            "Events",
 | 
				
			||||||
@ -266,7 +272,7 @@ List event IDs available in a given time range and print to stdout."""
 | 
				
			|||||||
            f"""Examples:
 | 
					            f"""Examples:
 | 
				
			||||||
Print all event IDs from year 2022 and thereafter
 | 
					Print all event IDs from year 2022 and thereafter
 | 
				
			||||||
  {os.path.basename(__file__)} -d mysql://sysop:sysop@localhost/seiscomp \
 | 
					  {os.path.basename(__file__)} -d mysql://sysop:sysop@localhost/seiscomp \
 | 
				
			||||||
--begin "2022-01-01 00:00:00"
 | 
					--begin 2022-01-01T00:00:00
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Print all event IDs with event type 'quarry blast'
 | 
					Print all event IDs with event type 'quarry blast'
 | 
				
			||||||
  {os.path.basename(__file__)} -d mysql://sysop:sysop@localhost/seiscomp --event-type 'quarry blast'
 | 
					  {os.path.basename(__file__)} -d mysql://sysop:sysop@localhost/seiscomp --event-type 'quarry blast'
 | 
				
			||||||
@ -303,7 +309,7 @@ Print IDs of all events in XML file
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            if self._eventType:
 | 
					            if self._eventType:
 | 
				
			||||||
                try:
 | 
					                try:
 | 
				
			||||||
                    eventType = seiscomp.datamodel.EEventTypeNames_name(evt.type())
 | 
					                    eventType = seiscomp.datamodel.EEventTypeNames.name(evt.type())
 | 
				
			||||||
                    if eventType != self._eventType:
 | 
					                    if eventType != self._eventType:
 | 
				
			||||||
                        continue
 | 
					                        continue
 | 
				
			||||||
                except ValueError:
 | 
					                except ValueError:
 | 
				
			||||||
 | 
				
			|||||||
@ -295,7 +295,7 @@ class EventStreams(client.Application):
 | 
				
			|||||||
            """Usage:
 | 
					            """Usage:
 | 
				
			||||||
  scevtstreams [options]
 | 
					  scevtstreams [options]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Extract stream information and time windows from an event"""
 | 
					Extract stream information and time windows from picks of an event or solitary picks."""
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        client.Application.printUsage(self)
 | 
					        client.Application.printUsage(self)
 | 
				
			||||||
@ -305,8 +305,8 @@ Extract stream information and time windows from an event"""
 | 
				
			|||||||
Get the time windows for an event in the database:
 | 
					Get the time windows for an event in the database:
 | 
				
			||||||
  scevtstreams -E gfz2012abcd -d mysql://sysop:sysop@localhost/seiscomp
 | 
					  scevtstreams -E gfz2012abcd -d mysql://sysop:sysop@localhost/seiscomp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Create lists compatible with fdsnws:
 | 
					Get the time windows for all picks given in an XML file without origins and events:
 | 
				
			||||||
  scevtstreams -E gfz2012abcd -i event.xml -m 120,500 --fdsnws
 | 
					  scevtstreams -i picks.xml -m 120,500
 | 
				
			||||||
"""
 | 
					"""
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -314,10 +314,14 @@ Create lists compatible with fdsnws:
 | 
				
			|||||||
        resolveWildcards = self.commandline().hasOption("resolve-wildcards")
 | 
					        resolveWildcards = self.commandline().hasOption("resolve-wildcards")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        picks = []
 | 
					        picks = []
 | 
				
			||||||
 | 
					 | 
				
			||||||
        # read picks from input file
 | 
					        # read picks from input file
 | 
				
			||||||
        if self.inputFile:
 | 
					        if self.inputFile:
 | 
				
			||||||
            picks = self.readXML()
 | 
					            try:
 | 
				
			||||||
 | 
					                picks = self.readXML()
 | 
				
			||||||
 | 
					            except IOError as e:
 | 
				
			||||||
 | 
					                print(f"Error: {e}", file=sys.stderr)
 | 
				
			||||||
 | 
					                return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if not picks:
 | 
					            if not picks:
 | 
				
			||||||
                raise ValueError("Could not find picks in input file")
 | 
					                raise ValueError("Could not find picks in input file")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -327,6 +331,7 @@ Create lists compatible with fdsnws:
 | 
				
			|||||||
                pick = datamodel.Pick.Cast(obj)
 | 
					                pick = datamodel.Pick.Cast(obj)
 | 
				
			||||||
                if pick is None:
 | 
					                if pick is None:
 | 
				
			||||||
                    continue
 | 
					                    continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                picks.append(pick)
 | 
					                picks.append(pick)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if not picks:
 | 
					            if not picks:
 | 
				
			||||||
@ -502,11 +507,18 @@ Create lists compatible with fdsnws:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        ep = datamodel.EventParameters.Cast(obj)
 | 
					        ep = datamodel.EventParameters.Cast(obj)
 | 
				
			||||||
        if ep is None:
 | 
					        if ep is None:
 | 
				
			||||||
            raise ValueError("no event parameters found in input file")
 | 
					            # pick may be provided as base object, only one can be read
 | 
				
			||||||
 | 
					            pick = datamodel.Pick.Cast(obj)
 | 
				
			||||||
 | 
					            if pick is None:
 | 
				
			||||||
 | 
					                raise ValueError(
 | 
				
			||||||
 | 
					                    "Neither event parameters nor pick found in input file"
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                return [pick]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # we require at least one origin which references to picks via arrivals
 | 
					        # we require at least one origin which references to picks via arrivals
 | 
				
			||||||
        if ep.originCount() == 0:
 | 
					        if ep.originCount() == 0 and ep.pickCount() == 0:
 | 
				
			||||||
            raise ValueError("no origin found in input file")
 | 
					            raise ValueError("No origin found in input file")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        originIDs = []
 | 
					        originIDs = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -524,7 +536,7 @@ Create lists compatible with fdsnws:
 | 
				
			|||||||
        # use first event/origin if no id was specified
 | 
					        # use first event/origin if no id was specified
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            # no event, use first available origin
 | 
					            # no event, use first available origin
 | 
				
			||||||
            if ep.eventCount() == 0:
 | 
					            if ep.eventCount() == 0 and ep.originCount() > 0:
 | 
				
			||||||
                if ep.originCount() > 1:
 | 
					                if ep.originCount() > 1:
 | 
				
			||||||
                    print(
 | 
					                    print(
 | 
				
			||||||
                        "WARNING: Input file contains no event but more than "
 | 
					                        "WARNING: Input file contains no event but more than "
 | 
				
			||||||
@ -534,7 +546,7 @@ Create lists compatible with fdsnws:
 | 
				
			|||||||
                originIDs.append(ep.origin(0).publicID())
 | 
					                originIDs.append(ep.origin(0).publicID())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # use origin references of first available event
 | 
					            # use origin references of first available event
 | 
				
			||||||
            else:
 | 
					            elif ep.eventCount() > 0 and ep.originCount() > 0:
 | 
				
			||||||
                if ep.eventCount() > 1:
 | 
					                if ep.eventCount() > 1:
 | 
				
			||||||
                    print(
 | 
					                    print(
 | 
				
			||||||
                        "WARNING: Input file contains more than 1 event. "
 | 
					                        "WARNING: Input file contains more than 1 event. "
 | 
				
			||||||
@ -546,10 +558,18 @@ Create lists compatible with fdsnws:
 | 
				
			|||||||
                    ev.originReference(i).originID()
 | 
					                    ev.originReference(i).originID()
 | 
				
			||||||
                    for i in range(ev.originReferenceCount())
 | 
					                    for i in range(ev.originReferenceCount())
 | 
				
			||||||
                ]
 | 
					                ]
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                print("Found no origins, trying to continue with picks only.")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if originIDs:
 | 
				
			||||||
 | 
					            print(
 | 
				
			||||||
 | 
					                f"Considering all arrivals from {len(originIDs)} origin(s).",
 | 
				
			||||||
 | 
					                file=sys.stderr,
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # collect pickIDs
 | 
					 | 
				
			||||||
        pickIDs = set()
 | 
					        pickIDs = set()
 | 
				
			||||||
        for oID in originIDs:
 | 
					        for oID in originIDs:
 | 
				
			||||||
 | 
					            # collect pickIDs from origins
 | 
				
			||||||
            o = datamodel.Origin.Find(oID)
 | 
					            o = datamodel.Origin.Find(oID)
 | 
				
			||||||
            if o is None:
 | 
					            if o is None:
 | 
				
			||||||
                continue
 | 
					                continue
 | 
				
			||||||
@ -557,6 +577,11 @@ Create lists compatible with fdsnws:
 | 
				
			|||||||
            for i in range(o.arrivalCount()):
 | 
					            for i in range(o.arrivalCount()):
 | 
				
			||||||
                pickIDs.add(o.arrival(i).pickID())
 | 
					                pickIDs.add(o.arrival(i).pickID())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if len(pickIDs) == 0:
 | 
				
			||||||
 | 
					            #  try reading picks only
 | 
				
			||||||
 | 
					            for i in range(ep.pickCount()):
 | 
				
			||||||
 | 
					                pickIDs.add(ep.pick(i).publicID())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # lookup picks
 | 
					        # lookup picks
 | 
				
			||||||
        picks = []
 | 
					        picks = []
 | 
				
			||||||
        for pickID in pickIDs:
 | 
					        for pickID in pickIDs:
 | 
				
			||||||
@ -564,6 +589,9 @@ Create lists compatible with fdsnws:
 | 
				
			|||||||
            if pick:
 | 
					            if pick:
 | 
				
			||||||
                picks.append(pick)
 | 
					                picks.append(pick)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if len(pickIDs) == 0:
 | 
				
			||||||
 | 
					            print("Found no picks.", file=sys.stderr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return picks
 | 
					        return picks
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								bin/scheli
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scheli
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/scimex
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scimex
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/scimport
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scimport
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/scmapcut
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scmapcut
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/scmaster
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scmaster
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										144
									
								
								bin/scmsdemux
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										144
									
								
								bin/scmsdemux
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,144 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env seiscomp-python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					############################################################################
 | 
				
			||||||
 | 
					# Copyright (C) gempa GmbH                                                 #
 | 
				
			||||||
 | 
					# All rights reserved.                                                     #
 | 
				
			||||||
 | 
					# Contact: gempa GmbH (seiscomp-dev@gempa.de)                              #
 | 
				
			||||||
 | 
					#                                                                          #
 | 
				
			||||||
 | 
					# GNU Affero General Public License Usage                                  #
 | 
				
			||||||
 | 
					# This file may be used under the terms of the GNU Affero                  #
 | 
				
			||||||
 | 
					# Public License version 3.0 as published by the Free Software Foundation  #
 | 
				
			||||||
 | 
					# and appearing in the file LICENSE included in the packaging of this      #
 | 
				
			||||||
 | 
					# file. Please review the following information to ensure the GNU Affero   #
 | 
				
			||||||
 | 
					# Public License version 3.0 requirements will be met:                     #
 | 
				
			||||||
 | 
					# https://www.gnu.org/licenses/agpl-3.0.html.                              #
 | 
				
			||||||
 | 
					#                                                                          #
 | 
				
			||||||
 | 
					# Other Usage                                                              #
 | 
				
			||||||
 | 
					# Alternatively, this file may be used in accordance with the terms and    #
 | 
				
			||||||
 | 
					# conditions contained in a signed written agreement between you and       #
 | 
				
			||||||
 | 
					# gempa GmbH.                                                              #
 | 
				
			||||||
 | 
					############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					import sys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from getopt import gnu_getopt, GetoptError
 | 
				
			||||||
 | 
					from seiscomp import mseedlite as mseed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def usage():
 | 
				
			||||||
 | 
					    print(
 | 
				
			||||||
 | 
					        f"""Usage:
 | 
				
			||||||
 | 
					  {os.path.basename(__file__)} source
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Demultiplex all miniSEED records found in the given source by stream code writing them
 | 
				
			||||||
 | 
					into separate new files. The source can be files or stdin. One file per stream is
 | 
				
			||||||
 | 
					generated. File names are derived from stream codes and the begin time of the records.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Verbosity:
 | 
				
			||||||
 | 
					  -h, --help            Display this help message.
 | 
				
			||||||
 | 
					  -v, --verbose         Verbose mode.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Examples:
 | 
				
			||||||
 | 
					Demultiplex the miniSEED records contained in data.mseed and additionally print the
 | 
				
			||||||
 | 
					names of created files to stderr
 | 
				
			||||||
 | 
					  {os.path.basename(__file__)} -v data.mseed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Demultiplex the miniSEED records received from stdin
 | 
				
			||||||
 | 
					  scmssort -u -E data.mseed | {os.path.basename(__file__)} -
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def main():
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        opts, args = gnu_getopt(
 | 
				
			||||||
 | 
					            sys.argv[1:],
 | 
				
			||||||
 | 
					            "hv",
 | 
				
			||||||
 | 
					            [
 | 
				
			||||||
 | 
					                "help",
 | 
				
			||||||
 | 
					                "verbose",
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    except GetoptError:
 | 
				
			||||||
 | 
					        print(
 | 
				
			||||||
 | 
					            f"{os.path.basename(__file__)}: Unknown option",
 | 
				
			||||||
 | 
					            file=sys.stderr,
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        usage()
 | 
				
			||||||
 | 
					        return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    verbosity = False
 | 
				
			||||||
 | 
					    for flag, arg in opts:
 | 
				
			||||||
 | 
					        if flag in ("-h", "--help"):
 | 
				
			||||||
 | 
					            usage()
 | 
				
			||||||
 | 
					            return True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if flag in ("-v", "--verbose"):
 | 
				
			||||||
 | 
					            verbosity = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    inFile = sys.stdin.buffer
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        if len(args[0]) > 0:
 | 
				
			||||||
 | 
					            openFiles = {}
 | 
				
			||||||
 | 
					    except Exception:
 | 
				
			||||||
 | 
					        print(
 | 
				
			||||||
 | 
					            f"{os.path.basename(__file__)}: Missing source",
 | 
				
			||||||
 | 
					            file=sys.stderr,
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        usage()
 | 
				
			||||||
 | 
					        sys.exit(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if len(args) == 1:
 | 
				
			||||||
 | 
					        if args[0] != "-":
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
 | 
					                inFile = open(args[0], "rb")
 | 
				
			||||||
 | 
					            except IOError as e:
 | 
				
			||||||
 | 
					                print(
 | 
				
			||||||
 | 
					                    f"Could not open input file '{args[0]}' for reading: {e}",
 | 
				
			||||||
 | 
					                    file=sys.stderr,
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					                return False
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            print(
 | 
				
			||||||
 | 
					                "Waiting for miniSEED records on stdin. Use Ctrl + C to interrupt.",
 | 
				
			||||||
 | 
					                file=sys.stderr,
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					    elif len(args) != 0:
 | 
				
			||||||
 | 
					        usage()
 | 
				
			||||||
 | 
					        sys.exit(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        for rec in mseed.Input(inFile):
 | 
				
			||||||
 | 
					            oName = "%s.%s.%s.%s" % (rec.sta, rec.net, rec.loc, rec.cha)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if oName not in openFiles:
 | 
				
			||||||
 | 
					                postfix = ".D.%04d.%03d.%02d%02d" % (
 | 
				
			||||||
 | 
					                    rec.begin_time.year,
 | 
				
			||||||
 | 
					                    rec.begin_time.timetuple()[7],
 | 
				
			||||||
 | 
					                    rec.begin_time.hour,
 | 
				
			||||||
 | 
					                    rec.begin_time.minute,
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                openFiles[oName] = open(oName + postfix, "ab")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            oFile = openFiles[oName]
 | 
				
			||||||
 | 
					            oFile.write(rec.header + rec.data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if verbosity:
 | 
				
			||||||
 | 
					            print("Generated output files:", file=sys.stderr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for oName in openFiles:
 | 
				
			||||||
 | 
					            if verbosity:
 | 
				
			||||||
 | 
					                print(f"  {oName}", file=sys.stderr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            openFiles[oName].close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    except KeyboardInterrupt:
 | 
				
			||||||
 | 
					        return True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == "__main__":
 | 
				
			||||||
 | 
					    sys.exit(main())
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								bin/scorg2nll
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scorg2nll
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							@ -89,12 +89,14 @@ class OriginList(seiscomp.client.Application):
 | 
				
			|||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Origins",
 | 
					            "Origins",
 | 
				
			||||||
            "begin",
 | 
					            "begin",
 | 
				
			||||||
            "The lower bound of the time interval. Format: '1970-01-01 00:00:00'.",
 | 
					            "The lower bound of the time interval. Uses 1900-01-01T00:00:00 unless "
 | 
				
			||||||
 | 
					            "given.",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Origins",
 | 
					            "Origins",
 | 
				
			||||||
            "end",
 | 
					            "end",
 | 
				
			||||||
            "The upper bound of the time interval. Format: '1970-01-01 00:00:00'.",
 | 
					            "The upper bound of the time interval. Format: 1970-01-01T00:00:00. Uses "
 | 
				
			||||||
 | 
					            "2500-01-01T00:00:00 unless given.",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Origins", "author", "The author of the origins."
 | 
					            "Origins", "author", "The author of the origins."
 | 
				
			||||||
@ -179,7 +181,7 @@ List origin IDs available in a given time range and print to stdout."""
 | 
				
			|||||||
            f"""Examples:
 | 
					            f"""Examples:
 | 
				
			||||||
Print all origin IDs from year 2022 and thereafter
 | 
					Print all origin IDs from year 2022 and thereafter
 | 
				
			||||||
  {os.path.basename(__file__)} -d mysql://sysop:sysop@localhost/seiscomp \
 | 
					  {os.path.basename(__file__)} -d mysql://sysop:sysop@localhost/seiscomp \
 | 
				
			||||||
--begin "2022-01-01 00:00:00"
 | 
					--begin 2022-01-01T00:00:00
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Print IDs of all events in XML file
 | 
					Print IDs of all events in XML file
 | 
				
			||||||
  {os.path.basename(__file__)} -i origins.xml
 | 
					  {os.path.basename(__file__)} -i origins.xml
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								bin/scplot
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scplot
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							@ -13,19 +13,25 @@
 | 
				
			|||||||
# https://www.gnu.org/licenses/agpl-3.0.html.                              #
 | 
					# https://www.gnu.org/licenses/agpl-3.0.html.                              #
 | 
				
			||||||
############################################################################
 | 
					############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import time, sys, os, traceback
 | 
					import os
 | 
				
			||||||
import seiscomp.core, seiscomp.client, seiscomp.datamodel
 | 
					import sys
 | 
				
			||||||
import seiscomp.logging, seiscomp.system
 | 
					import traceback
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import seiscomp.core
 | 
				
			||||||
 | 
					import seiscomp.client
 | 
				
			||||||
 | 
					import seiscomp.datamodel
 | 
				
			||||||
 | 
					import seiscomp.logging
 | 
				
			||||||
 | 
					import seiscomp.system
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def createDirectory(dir):
 | 
					def createDirectory(directory):
 | 
				
			||||||
    if os.access(dir, os.W_OK):
 | 
					    if os.access(directory, os.W_OK):
 | 
				
			||||||
        return True
 | 
					        return True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
        os.makedirs(dir)
 | 
					        os.makedirs(directory)
 | 
				
			||||||
        return True
 | 
					        return True
 | 
				
			||||||
    except:
 | 
					    except OSError:
 | 
				
			||||||
        return False
 | 
					        return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -46,8 +52,8 @@ def timeSpanToString(ts):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if neg:
 | 
					    if neg:
 | 
				
			||||||
        return "-%.2d:%.2d:%.2d:%.2d.%06d" % (days, hours, mins, secs, usecs)
 | 
					        return "-%.2d:%.2d:%.2d:%.2d.%06d" % (days, hours, mins, secs, usecs)
 | 
				
			||||||
    else:
 | 
					
 | 
				
			||||||
        return "%.2d:%.2d:%.2d:%.2d.%06d" % (days, hours, mins, secs, usecs)
 | 
					    return "%.2d:%.2d:%.2d:%.2d.%06d" % (days, hours, mins, secs, usecs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ProcLatency(seiscomp.client.Application):
 | 
					class ProcLatency(seiscomp.client.Application):
 | 
				
			||||||
@ -135,8 +141,6 @@ class ProcLatency(seiscomp.client.Application):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def logObject(self, parentID, obj, update):
 | 
					    def logObject(self, parentID, obj, update):
 | 
				
			||||||
        now = seiscomp.core.Time.GMT()
 | 
					        now = seiscomp.core.Time.GMT()
 | 
				
			||||||
        time = None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        pick = seiscomp.datamodel.Pick.Cast(obj)
 | 
					        pick = seiscomp.datamodel.Pick.Cast(obj)
 | 
				
			||||||
        if pick:
 | 
					        if pick:
 | 
				
			||||||
            phase = ""
 | 
					            phase = ""
 | 
				
			||||||
@ -199,7 +203,7 @@ class ProcLatency(seiscomp.client.Application):
 | 
				
			|||||||
                pass
 | 
					                pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
                status = seiscomp.datamodel.EOriginStatusNames.name(org.status())
 | 
					                status = seiscomp.datamodel.EEvaluationStatusNames.name(org.status())
 | 
				
			||||||
            except:
 | 
					            except:
 | 
				
			||||||
                pass
 | 
					                pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -286,7 +290,7 @@ class ProcLatency(seiscomp.client.Application):
 | 
				
			|||||||
        sys.stdout.write(f"{timeToString(received)};{logEntry}\n")
 | 
					        sys.stdout.write(f"{timeToString(received)};{logEntry}\n")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if nowDirectory != self._nowDirectory:
 | 
					        if nowDirectory != self._nowDirectory:
 | 
				
			||||||
            if createDirectory(nowDirectory) == False:
 | 
					            if not createDirectory(nowDirectory):
 | 
				
			||||||
                seiscomp.logging.error(f"Unable to create directory {nowDirectory}")
 | 
					                seiscomp.logging.error(f"Unable to create directory {nowDirectory}")
 | 
				
			||||||
                return False
 | 
					                return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -298,7 +302,7 @@ class ProcLatency(seiscomp.client.Application):
 | 
				
			|||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if triggeredDirectory != self._triggeredDirectory:
 | 
					        if triggeredDirectory != self._triggeredDirectory:
 | 
				
			||||||
            if createDirectory(triggeredDirectory) == False:
 | 
					            if not createDirectory(triggeredDirectory):
 | 
				
			||||||
                seiscomp.logging.error(
 | 
					                seiscomp.logging.error(
 | 
				
			||||||
                    f"Unable to create directory {triggeredDirectory}"
 | 
					                    f"Unable to create directory {triggeredDirectory}"
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
@ -321,7 +325,7 @@ class ProcLatency(seiscomp.client.Application):
 | 
				
			|||||||
        # logEntry = timeToString(received)
 | 
					        # logEntry = timeToString(received)
 | 
				
			||||||
        logEntry = ""
 | 
					        logEntry = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if not triggered is None:
 | 
					        if triggered is not None:
 | 
				
			||||||
            aTriggered = triggered.get()
 | 
					            aTriggered = triggered.get()
 | 
				
			||||||
            triggeredDirectory = (
 | 
					            triggeredDirectory = (
 | 
				
			||||||
                self._directory + "/".join(["%.2d" % i for i in aTriggered[1:4]]) + "/"
 | 
					                self._directory + "/".join(["%.2d" % i for i in aTriggered[1:4]]) + "/"
 | 
				
			||||||
@ -341,7 +345,7 @@ class ProcLatency(seiscomp.client.Application):
 | 
				
			|||||||
        sys.stdout.write(f"{timeToString(received)};{logEntry}\n")
 | 
					        sys.stdout.write(f"{timeToString(received)};{logEntry}\n")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if nowDirectory != self._nowDirectory:
 | 
					        if nowDirectory != self._nowDirectory:
 | 
				
			||||||
            if createDirectory(nowDirectory) == False:
 | 
					            if not createDirectory(nowDirectory):
 | 
				
			||||||
                seiscomp.logging.error(f"Unable to create directory {nowDirectory}")
 | 
					                seiscomp.logging.error(f"Unable to create directory {nowDirectory}")
 | 
				
			||||||
                return False
 | 
					                return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -353,7 +357,7 @@ class ProcLatency(seiscomp.client.Application):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if triggeredDirectory:
 | 
					        if triggeredDirectory:
 | 
				
			||||||
            if triggeredDirectory != self._triggeredDirectory:
 | 
					            if triggeredDirectory != self._triggeredDirectory:
 | 
				
			||||||
                if createDirectory(triggeredDirectory) == False:
 | 
					                if not createDirectory(triggeredDirectory):
 | 
				
			||||||
                    seiscomp.logging.error(
 | 
					                    seiscomp.logging.error(
 | 
				
			||||||
                        f"Unable to create directory {triggeredDirectory}"
 | 
					                        f"Unable to create directory {triggeredDirectory}"
 | 
				
			||||||
                    )
 | 
					                    )
 | 
				
			||||||
@ -369,11 +373,8 @@ class ProcLatency(seiscomp.client.Application):
 | 
				
			|||||||
        return True
 | 
					        return True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def writeLog(self, file, text):
 | 
					    def writeLog(self, file, text):
 | 
				
			||||||
        of = open(file, "a")
 | 
					        with open(file, "a", encoding="utf8") as of:
 | 
				
			||||||
        if of:
 | 
					            of.print(text, file=of)
 | 
				
			||||||
            of.write(text)
 | 
					 | 
				
			||||||
            of.write("\n")
 | 
					 | 
				
			||||||
            of.close()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
app = ProcLatency(len(sys.argv), sys.argv)
 | 
					app = ProcLatency(len(sys.argv), sys.argv)
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								bin/scquery
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scquery
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							@ -105,10 +105,14 @@ class WfqQuery(seiscomp.client.Application):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        self.commandline().addGroup("Query")
 | 
					        self.commandline().addGroup("Query")
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Query", "begin,b", "Begin time of query: 'YYYY-MM-DD hh:mm:ss'"
 | 
					            "Query",
 | 
				
			||||||
 | 
					            "begin,b",
 | 
				
			||||||
 | 
					            "Begin time of query. Uses 1900-01-01T00:00:00 unless given.",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Query", "end,e", "End time of query: 'YYYY-MM-DD hh:mm:ss'"
 | 
					            "Query",
 | 
				
			||||||
 | 
					            "end,e",
 | 
				
			||||||
 | 
					            "End time of query. Uses current time unless given.",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Query",
 | 
					            "Query",
 | 
				
			||||||
@ -116,7 +120,7 @@ class WfqQuery(seiscomp.client.Application):
 | 
				
			|||||||
            "Waveform stream ID to search for QC parameters: net.sta.loc.cha -"
 | 
					            "Waveform stream ID to search for QC parameters: net.sta.loc.cha -"
 | 
				
			||||||
            " [networkCode].[stationCode].[sensorLocationCode].[channelCode]. "
 | 
					            " [networkCode].[stationCode].[sensorLocationCode].[channelCode]. "
 | 
				
			||||||
            "Provide a single ID or a comma-separated list. Overrides "
 | 
					            "Provide a single ID or a comma-separated list. Overrides "
 | 
				
			||||||
            "--streams-from-inventory",
 | 
					            "--streams-from-inventory.",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Query",
 | 
					            "Query",
 | 
				
			||||||
@ -151,8 +155,8 @@ Query a database for waveform quality control (QC) parameters.""",
 | 
				
			|||||||
        print(
 | 
					        print(
 | 
				
			||||||
            f"""Examples:
 | 
					            f"""Examples:
 | 
				
			||||||
Query rms and delay values for streams 'AU.AS18..SHZ' and 'AU.AS19..SHZ' from \
 | 
					Query rms and delay values for streams 'AU.AS18..SHZ' and 'AU.AS19..SHZ' from \
 | 
				
			||||||
'2021-11-20 00:00:00' until current
 | 
					2021-11-20 00:00:00 until current
 | 
				
			||||||
  {os.path.basename(__file__)} -d localhost -b '2021-11-20 00:00:00' -p rms,delay \
 | 
					  {os.path.basename(__file__)} -d localhost -b 2021-11-20T00:00:00 -p rms,delay \
 | 
				
			||||||
-i AU.AS18..SHZ,AU.AS19..SHZ""",
 | 
					-i AU.AS18..SHZ,AU.AS19..SHZ""",
 | 
				
			||||||
            file=sys.stderr,
 | 
					            file=sys.stderr,
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								bin/screloc
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/screloc
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/screpick
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/screpick
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/scrttv
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scrttv
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							@ -69,8 +69,8 @@ class SendOrigin(seiscomp.client.Application):
 | 
				
			|||||||
                "Parameters", "coord", "Latitude,longitude,depth of origin"
 | 
					                "Parameters", "coord", "Latitude,longitude,depth of origin"
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            self.commandline().addStringOption("Parameters", "time", "time of origin")
 | 
					            self.commandline().addStringOption("Parameters", "time", "time of origin")
 | 
				
			||||||
        except:
 | 
					        except Exception:
 | 
				
			||||||
            seiscomp.logging.warning(f"caught unexpected error {sys.exc_info()}")
 | 
					            seiscomp.logging.warning(f"Caught unexpected error {sys.exc_info()}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def printUsage(self):
 | 
					    def printUsage(self):
 | 
				
			||||||
        print(
 | 
					        print(
 | 
				
			||||||
@ -85,7 +85,7 @@ Create an artificial origin and send to the messaging"""
 | 
				
			|||||||
        print(
 | 
					        print(
 | 
				
			||||||
            """Examples:
 | 
					            """Examples:
 | 
				
			||||||
Send an artificial origin with hypocenter parameters to the messaging
 | 
					Send an artificial origin with hypocenter parameters to the messaging
 | 
				
			||||||
  scsendorigin --time "2022-05-01 10:00:00" --coord 52,12,10
 | 
					  scsendorigin --time 2022-05-01T10:00:00 --coord 52,12,10
 | 
				
			||||||
"""
 | 
					"""
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								bin/scshowevent
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scshowevent
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/scsmdump
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scsmdump
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							@ -359,9 +359,7 @@ Create an output XML file every 60 seconds and execute a custom script to proces
 | 
				
			|||||||
        try:
 | 
					        try:
 | 
				
			||||||
            f = open(self._outputFile, "w")
 | 
					            f = open(self._outputFile, "w")
 | 
				
			||||||
        except:
 | 
					        except:
 | 
				
			||||||
            seiscomp.logging.error(
 | 
					            seiscomp.logging.error(f"Unable to create output file: {self._outputFile}")
 | 
				
			||||||
                f"Unable to create output file: {self._outputFile}"
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.toXML(f)
 | 
					        self.toXML(f)
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										24
									
								
								bin/scvoice
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								bin/scvoice
									
									
									
									
									
								
							@ -62,50 +62,52 @@ class VoiceAlert(client.Application):
 | 
				
			|||||||
        self.commandline().addOption(
 | 
					        self.commandline().addOption(
 | 
				
			||||||
            "Generic",
 | 
					            "Generic",
 | 
				
			||||||
            "first-new",
 | 
					            "first-new",
 | 
				
			||||||
            "calls an event a new event when it is " "seen the first time",
 | 
					            "Calls an event a new event when it is seen the first time.",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addGroup("Alert")
 | 
					        self.commandline().addGroup("Alert")
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Alert",
 | 
					            "Alert",
 | 
				
			||||||
            "amp-type",
 | 
					            "amp-type",
 | 
				
			||||||
            "specify the amplitude type to listen to",
 | 
					            "Specify the amplitude type to listen to.",
 | 
				
			||||||
            self._ampType,
 | 
					            self._ampType,
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Alert",
 | 
					            "Alert",
 | 
				
			||||||
            "amp-script",
 | 
					            "amp-script",
 | 
				
			||||||
            "specify the script to be called when a "
 | 
					            "Specify the script to be called when a "
 | 
				
			||||||
            "stationamplitude arrived, network-, stationcode and amplitude are "
 | 
					            "stationamplitude arrived, network-, stationcode and amplitude are "
 | 
				
			||||||
            "passed as parameters $1, $2 and $3",
 | 
					            "passed as parameters $1, $2 and $3.",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Alert",
 | 
					            "Alert",
 | 
				
			||||||
            "alert-script",
 | 
					            "alert-script",
 | 
				
			||||||
            "specify the script to be called when a "
 | 
					            "Specify the script to be called when a "
 | 
				
			||||||
            "preliminary origin arrived, latitude and longitude are passed as "
 | 
					            "preliminary origin arrived, latitude and longitude are passed as "
 | 
				
			||||||
            "parameters $1 and $2",
 | 
					            "parameters $1 and $2.",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Alert",
 | 
					            "Alert",
 | 
				
			||||||
            "event-script",
 | 
					            "event-script",
 | 
				
			||||||
            "specify the script to be called when an "
 | 
					            "Specify the script to be called when an "
 | 
				
			||||||
            "event has been declared; the message string, a flag (1=new event, "
 | 
					            "event has been declared; the message string, a flag (1=new event, "
 | 
				
			||||||
            "0=update event), the EventID, the arrival count and the magnitude "
 | 
					            "0=update event), the EventID, the arrival count and the magnitude "
 | 
				
			||||||
            "(optional when set) are passed as parameter $1, $2, $3, $4 and $5",
 | 
					            "(optional when set) are passed as parameter $1, $2, $3, $4 and $5.",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addGroup("Cities")
 | 
					        self.commandline().addGroup("Cities")
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Cities",
 | 
					            "Cities",
 | 
				
			||||||
            "max-dist",
 | 
					            "max-dist",
 | 
				
			||||||
            "maximum distance for using the distance " "from a city to the earthquake",
 | 
					            "Maximum distance for using the distance from a city to the earthquake.",
 | 
				
			||||||
 | 
					            str(self._citiesMaxDist),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addStringOption(
 | 
					        self.commandline().addStringOption(
 | 
				
			||||||
            "Cities",
 | 
					            "Cities",
 | 
				
			||||||
            "min-population",
 | 
					            "min-population",
 | 
				
			||||||
            "minimum population for a city to " "become a point of interest",
 | 
					            "Minimum population for a city to become a point of interest.",
 | 
				
			||||||
 | 
					            str(self._citiesMinPopulation),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        self.commandline().addGroup("Debug")
 | 
					        self.commandline().addGroup("Debug")
 | 
				
			||||||
        self.commandline().addStringOption("Debug", "eventid,E", "specify Event ID")
 | 
					        self.commandline().addStringOption("Debug", "eventid,E", "Specify event ID.")
 | 
				
			||||||
        return True
 | 
					        return True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def init(self):
 | 
					    def init(self):
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								bin/scwfas
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scwfas
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/scwfparam
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scwfparam
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/scxmldump
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scxmldump
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/scxmlmerge
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/scxmlmerge
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							@ -722,8 +722,8 @@ def on_status(args, _):
 | 
				
			|||||||
            if env.isModuleEnabled(mod.name) or isinstance(
 | 
					            if env.isModuleEnabled(mod.name) or isinstance(
 | 
				
			||||||
                mod, seiscomp.kernel.CoreModule
 | 
					                mod, seiscomp.kernel.CoreModule
 | 
				
			||||||
            ):
 | 
					            ):
 | 
				
			||||||
                mod.status(shouldModuleRun(mod.name))
 | 
					                if mod.status(shouldModuleRun(mod.name)) == 0:
 | 
				
			||||||
                found += 1
 | 
					                    found += 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if not useCSV:
 | 
					        if not useCSV:
 | 
				
			||||||
            print(f"Summary: {found} modules enabled")
 | 
					            print(f"Summary: {found} modules enabled")
 | 
				
			||||||
@ -733,8 +733,8 @@ def on_status(args, _):
 | 
				
			|||||||
    if len(args) > 0 and args[0] == "started":
 | 
					    if len(args) > 0 and args[0] == "started":
 | 
				
			||||||
        for mod in mods:
 | 
					        for mod in mods:
 | 
				
			||||||
            if shouldModuleRun(mod.name):
 | 
					            if shouldModuleRun(mod.name):
 | 
				
			||||||
                mod.status(shouldModuleRun(mod.name))
 | 
					                if mod.status(shouldModuleRun(mod.name)) == 0:
 | 
				
			||||||
                found += 1
 | 
					                    found += 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if not useCSV:
 | 
					        if not useCSV:
 | 
				
			||||||
            print(f"Summary: {found} modules started")
 | 
					            print(f"Summary: {found} modules started")
 | 
				
			||||||
@ -743,8 +743,8 @@ def on_status(args, _):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    for mod in mods:
 | 
					    for mod in mods:
 | 
				
			||||||
        if mod.name in args or len(args) == 0:
 | 
					        if mod.name in args or len(args) == 0:
 | 
				
			||||||
            mod.status(shouldModuleRun(mod.name))
 | 
					            if mod.status(shouldModuleRun(mod.name)) == 0:
 | 
				
			||||||
            found += 1
 | 
					                found += 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if not useCSV:
 | 
					    if not useCSV:
 | 
				
			||||||
        print(f"Summary: {found} modules reported")
 | 
					        print(f"Summary: {found} modules reported")
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										10
									
								
								bin/sh2proc
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								bin/sh2proc
									
									
									
									
									
								
							@ -86,7 +86,7 @@ class SH2Proc(seiscomp.client.Application):
 | 
				
			|||||||
            """Usage:
 | 
					            """Usage:
 | 
				
			||||||
  sh2proc [options]
 | 
					  sh2proc [options]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Convert Seismic Handler event data to SeisComP XML format"""
 | 
					Convert Seismic Handler event data to SeisComP XML format which is sent to stdout."""
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        seiscomp.client.Application.printUsage(self)
 | 
					        seiscomp.client.Application.printUsage(self)
 | 
				
			||||||
@ -95,10 +95,10 @@ Convert Seismic Handler event data to SeisComP XML format"""
 | 
				
			|||||||
            """Examples:
 | 
					            """Examples:
 | 
				
			||||||
Convert the Seismic Handler file shm.evt to SCML. Receive the database
 | 
					Convert the Seismic Handler file shm.evt to SCML. Receive the database
 | 
				
			||||||
connection to read inventory and configuration information from messaging
 | 
					connection to read inventory and configuration information from messaging
 | 
				
			||||||
  sh2proc shm.evt
 | 
					  sh2proc shm.evt > event.xml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Read Seismic Handler data from stdin. Provide inventory and configuration in XML
 | 
					Read Seismic Handler data from stdin. Provide inventory and configuration in XML
 | 
				
			||||||
  cat shm.evt | sh2proc --inventory-db=inventory.xml --config-db=config.xml
 | 
					  cat shm.evt | sh2proc --inventory-db=inventory.xml --config-db=config.xml > event.xml
 | 
				
			||||||
"""
 | 
					"""
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -489,7 +489,7 @@ Read Seismic Handler data from stdin. Provide inventory and configuration in XML
 | 
				
			|||||||
                        seiscomp.datamodel.IMPULSIVE,
 | 
					                        seiscomp.datamodel.IMPULSIVE,
 | 
				
			||||||
                        seiscomp.datamodel.QUESTIONABLE,
 | 
					                        seiscomp.datamodel.QUESTIONABLE,
 | 
				
			||||||
                    ]:
 | 
					                    ]:
 | 
				
			||||||
                        if value == seiscomp.datamodel.EPickOnsetNames_name(onset):
 | 
					                        if value == seiscomp.datamodel.EPickOnsetNames.name(onset):
 | 
				
			||||||
                            pick.setOnset(onset)
 | 
					                            pick.setOnset(onset)
 | 
				
			||||||
                            found = True
 | 
					                            found = True
 | 
				
			||||||
                            break
 | 
					                            break
 | 
				
			||||||
@ -524,7 +524,7 @@ Read Seismic Handler data from stdin. Provide inventory and configuration in XML
 | 
				
			|||||||
                        seiscomp.datamodel.AUTOMATIC,
 | 
					                        seiscomp.datamodel.AUTOMATIC,
 | 
				
			||||||
                        seiscomp.datamodel.MANUAL,
 | 
					                        seiscomp.datamodel.MANUAL,
 | 
				
			||||||
                    ]:
 | 
					                    ]:
 | 
				
			||||||
                        if value == seiscomp.datamodel.EEvaluationModeNames_name(mode):
 | 
					                        if value == seiscomp.datamodel.EEvaluationModeNames.name(mode):
 | 
				
			||||||
                            pick.setEvaluationMode(mode)
 | 
					                            pick.setEvaluationMode(mode)
 | 
				
			||||||
                            found = True
 | 
					                            found = True
 | 
				
			||||||
                            break
 | 
					                            break
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								bin/slarchive
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/slarchive
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/slinktool
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/slinktool
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										3673
									
								
								bin/slmon2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										3673
									
								
								bin/slmon2
									
									
									
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bin/waitlock
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/waitlock
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							@ -8,15 +8,97 @@ connection.subscriptions = EVENT
 | 
				
			|||||||
# Number of seconds to fetch missed updates on start up.
 | 
					# Number of seconds to fetch missed updates on start up.
 | 
				
			||||||
backLog = 1800
 | 
					backLog = 1800
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Number of public objects to cache.
 | 
					 | 
				
			||||||
cacheSize = 5000
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Maximum number of notifiers to batch in one message. If set to 0 no size
 | 
					# Maximum number of notifiers to batch in one message. If set to 0 no size
 | 
				
			||||||
# limit is enforced. Make sure to not hit the overall message size limited of
 | 
					# limit is enforced. Make sure to not hit the overall message size limited of
 | 
				
			||||||
# 16MiB which is enforced by the messaging system.
 | 
					# 16MiB which is enforced by the messaging system.
 | 
				
			||||||
batchSize = 2000
 | 
					batchSize = 2000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# If event synchronisation is enabled and an incoming origin is not yet
 | 
					# If event synchronisation is enabled and an incoming origin is not yet
 | 
				
			||||||
# associated with an event on the target machine then this timeout defines
 | 
					# associated with an event on the target machine, then this timeout defines the
 | 
				
			||||||
# the maximum number of seconds to wait for an association.
 | 
					# maximum number of seconds to wait for an association.
 | 
				
			||||||
eventAssociationTimeout = 10
 | 
					eventAssociationTimeout = 10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Registration of the host profiles defining the connection parameters to the
 | 
				
			||||||
 | 
					# QuakeLink hosts.
 | 
				
			||||||
 | 
					#hosts = local
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# URL of the QuakeLink service, the scheme 'qls' enables SSL.
 | 
				
			||||||
 | 
					# Format: [ql[s]://][user:pwd@][host][:port].
 | 
				
			||||||
 | 
					# If set to an empty string the application will run without any QuakeLink
 | 
				
			||||||
 | 
					# connection attempt.
 | 
				
			||||||
 | 
					#host.local.url = ql://localhost:18010
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Enable/disable GZip (GNU zip) compression.
 | 
				
			||||||
 | 
					#host.local.gzip = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Request native data instead of XML format. Native data export may be disabled
 | 
				
			||||||
 | 
					# on some hosts.
 | 
				
			||||||
 | 
					#host.local.native = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Try to update the event attributes of the target event with the attributes of
 | 
				
			||||||
 | 
					# the source event which includes event type and event certainty. It will not
 | 
				
			||||||
 | 
					# import events but tries to find the associated event of the input preferred
 | 
				
			||||||
 | 
					# origin at the target system and will update the event attributes via
 | 
				
			||||||
 | 
					# journaling.
 | 
				
			||||||
 | 
					#host.local.syncEventAttributes = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Synchronize the preferred origin and preferred magnitude selection if
 | 
				
			||||||
 | 
					# different from the imported selection. ql2sc will wait for the event
 | 
				
			||||||
 | 
					# association of an imported origin and check if the preferred origin or
 | 
				
			||||||
 | 
					# preferred magnitude is different from the imported Quakelink event. If so it
 | 
				
			||||||
 | 
					# will send a journal to force selection of the preferred origin and selection
 | 
				
			||||||
 | 
					# of the preferred magnitude type. These are the same operations as within
 | 
				
			||||||
 | 
					# scolv to fix an origin and a particular magnitude type.
 | 
				
			||||||
 | 
					#host.local.syncPreferred = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Delays the synchronization of event attributes in seconds if set to a value
 | 
				
			||||||
 | 
					# greater than zero.
 | 
				
			||||||
 | 
					#host.local.syncEventDelay = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Request server to send keep alive message every 30s to prevent connection
 | 
				
			||||||
 | 
					# reset by firewalls on long idle periods. If activated the client will reset
 | 
				
			||||||
 | 
					# the connection if no alive message is received within 60s.
 | 
				
			||||||
 | 
					#host.local.keepAlive = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Server-side SQL like WHERE clause to filter the result set. The actual
 | 
				
			||||||
 | 
					# available parameters depend on the QuakeLink server version. Use 'telnet host
 | 
				
			||||||
 | 
					# port' followed by 'help select' to connect to a QuakeLink server an request
 | 
				
			||||||
 | 
					# available parameters.
 | 
				
			||||||
 | 
					# clause := condition[ AND|OR [(]clause[)]] condition :=
 | 
				
			||||||
 | 
					# MAG|DEPTH|LAT|LON|PHASES|DIST(lat,lon) op {float} | DIST(lat,lon) IN
 | 
				
			||||||
 | 
					# [{float}, {float}] | UPDATED|OTIME op time |
 | 
				
			||||||
 | 
					# AGENCY|AUTHOR|STATUS|ESTATUS|EMODE|TYPE|CTYPE|DTYPE|REGION|MAG_T op 'string'
 | 
				
			||||||
 | 
					# | MAG|DEPTH|LAT|LON|PHASES|OTIME|UPDATED IS [NOT] NULL FELT|NOT FELT op :=
 | 
				
			||||||
 | 
					# =|!=|>|>=|<|<=|eq|gt|ge|lt|ge time := %Y,%m,%d[,%H,%M,%S[,%f]]
 | 
				
			||||||
 | 
					#host.local.filter = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Map datamodel class names to messaging groups. For unmapped objects the
 | 
				
			||||||
 | 
					# mapping of their parent objects is evaluated recursively. Objects may be
 | 
				
			||||||
 | 
					# excluded by mapping them to 'NULL'.
 | 
				
			||||||
 | 
					#host.local.routingTable = Pick:IMPORT_GROUP, Amplitude:IMPORT_GROUP, FocalMechanism:EVENT, Origin:EVENT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Include picks
 | 
				
			||||||
 | 
					#host.local.data.picks = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Include amplitudes
 | 
				
			||||||
 | 
					#host.local.data.amplitudes = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Include origin arrivals
 | 
				
			||||||
 | 
					#host.local.data.arrivals = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Include origin station magnitudes
 | 
				
			||||||
 | 
					#host.local.data.staMags = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Include moment tensor station contributions and phase settings
 | 
				
			||||||
 | 
					#host.local.data.staMts = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Include only preferred origin and magnitude information
 | 
				
			||||||
 | 
					#host.local.data.preferred = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Defines a blacklist of publicID prefixes that are not allowed for processing.
 | 
				
			||||||
 | 
					# Separate items by comma.
 | 
				
			||||||
 | 
					#processing.blacklist.publicIDs = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Defines a whitelist of publicID prefixes that are allowed for processing.
 | 
				
			||||||
 | 
					# Separate items by comma.
 | 
				
			||||||
 | 
					#processing.whitelist.publicIDs = ""
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,3 @@
 | 
				
			|||||||
# Defines a list of message groups to subscribe to. The default is usually
 | 
					# Defines a list of message groups to subscribe to. The default is usually
 | 
				
			||||||
# given by the application and does not need to be changed.
 | 
					# given by the application and does not need to be changed.
 | 
				
			||||||
connection.subscriptions = EVENT, LOCATION, MAGNITUDE
 | 
					connection.subscriptions = EVENT, LOCATION, MAGNITUDE, AMPLITUDE, PICK
 | 
				
			||||||
 | 
				
			|||||||
@ -264,9 +264,6 @@ range.above = 0, 999
 | 
				
			|||||||
# A color defined by the color definitions below.
 | 
					# A color defined by the color definitions below.
 | 
				
			||||||
range.above.color = green
 | 
					range.above.color = green
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Possible values: enableStream, disableStream
 | 
					 | 
				
			||||||
range.above.action = enableStream
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
range.below = -99, -11
 | 
					range.below = -99, -11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -277,9 +274,6 @@ range.below.count = 0
 | 
				
			|||||||
# A color defined by the color definitions below.
 | 
					# A color defined by the color definitions below.
 | 
				
			||||||
range.below.color = grey
 | 
					range.below.color = grey
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Possible values: enableStream, disableStream
 | 
					 | 
				
			||||||
range.below.action = disableStream
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
range.timing = -200, -100
 | 
					range.timing = -200, -100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -18,7 +18,7 @@ resortAutomatically = true
 | 
				
			|||||||
showPicks = true
 | 
					showPicks = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Defines the filters to be used when filtering is activated.
 | 
					# Defines the filters to be used when filtering is activated.
 | 
				
			||||||
filters = "RMHP(2)>>ITAPER(5)>>BW(3, 0.5, 8.0)","RMHP(2)>>ITAPER(5)>>BW_HP(3, 3)"
 | 
					filters = "BW 0.5 - 8.0 Hz;RMHP(2)>>ITAPER(5)>>BW(3, 0.5, 8.0)","HP 3.0 Hz;RMHP(2)>>ITAPER(5)>>BW_HP(3, 3)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Activates the first filter of the configured filter list after startup. This
 | 
					# Activates the first filter of the configured filter list after startup. This
 | 
				
			||||||
# is equivalent to pressing 'f'.
 | 
					# is equivalent to pressing 'f'.
 | 
				
			||||||
 | 
				
			|||||||
@ -72,10 +72,11 @@
 | 
				
			|||||||
			<parameter name="realtimeGap" type="int" unit="s">
 | 
								<parameter name="realtimeGap" type="int" unit="s">
 | 
				
			||||||
				<description>
 | 
									<description>
 | 
				
			||||||
				Restrict end time of requests to current time - realtimeGap
 | 
									Restrict end time of requests to current time - realtimeGap
 | 
				
			||||||
				seconds. Negative values allowed. Used in fdsnws-dataselect.
 | 
									seconds. Negative values are allowed. Used in fdsnws-dataselect.
 | 
				
			||||||
				WARNING: If this value is unset and a realtime recordsource
 | 
					
 | 
				
			||||||
				(e.g. slink) is used, requests may block if end time in future
 | 
									WARNING: If this value is unset and a real-time RecordStream
 | 
				
			||||||
				is requested.
 | 
									(e.g. slink) is used, requests may block if end times in the
 | 
				
			||||||
 | 
									future are requested.
 | 
				
			||||||
				</description>
 | 
									</description>
 | 
				
			||||||
			</parameter>
 | 
								</parameter>
 | 
				
			||||||
			<parameter name="samplesM" type="float">
 | 
								<parameter name="samplesM" type="float">
 | 
				
			||||||
@ -90,7 +91,7 @@
 | 
				
			|||||||
				Set the number of bytes to buffer for each chunk of waveform data
 | 
									Set the number of bytes to buffer for each chunk of waveform data
 | 
				
			||||||
				served to the client. The lower the buffer the higher the overhead
 | 
									served to the client. The lower the buffer the higher the overhead
 | 
				
			||||||
				of Python Twisted. The higher the buffer the higher the memory
 | 
									of Python Twisted. The higher the buffer the higher the memory
 | 
				
			||||||
				usage per request. 100kB seems to be a good trade-off.
 | 
									usage per request. 100 kB seems to be a good trade-off.
 | 
				
			||||||
				</description>
 | 
									</description>
 | 
				
			||||||
			</parameter>
 | 
								</parameter>
 | 
				
			||||||
			<parameter name="htpasswd" type="string" default="@CONFIGDIR@/fdsnws.htpasswd">
 | 
								<parameter name="htpasswd" type="string" default="@CONFIGDIR@/fdsnws.htpasswd">
 | 
				
			||||||
@ -103,12 +104,12 @@
 | 
				
			|||||||
			</parameter>
 | 
								</parameter>
 | 
				
			||||||
			<parameter name="accessLog" type="string">
 | 
								<parameter name="accessLog" type="string">
 | 
				
			||||||
				<description>
 | 
									<description>
 | 
				
			||||||
				Path to access log file. If unset no access log is created.
 | 
									Path to access log file. If unset, no access log is created.
 | 
				
			||||||
				</description>
 | 
									</description>
 | 
				
			||||||
			</parameter>
 | 
								</parameter>
 | 
				
			||||||
			<parameter name="requestLog" type="string">
 | 
								<parameter name="requestLog" type="string">
 | 
				
			||||||
				<description>
 | 
									<description>
 | 
				
			||||||
				Path to request log file. If unset no request log is created.
 | 
									Path to request log file. If unset, no request log is created.
 | 
				
			||||||
				</description>
 | 
									</description>
 | 
				
			||||||
			</parameter>
 | 
								</parameter>
 | 
				
			||||||
			<parameter name="userSalt" type="string">
 | 
								<parameter name="userSalt" type="string">
 | 
				
			||||||
@ -121,7 +122,10 @@
 | 
				
			|||||||
				List of domain names Cross-Origin Resource Sharing (CORS)
 | 
									List of domain names Cross-Origin Resource Sharing (CORS)
 | 
				
			||||||
				request may originate from. A value of '*' allows any web page
 | 
									request may originate from. A value of '*' allows any web page
 | 
				
			||||||
				to embed your service. An empty value will switch of CORS
 | 
									to embed your service. An empty value will switch of CORS
 | 
				
			||||||
				requests entirely. An example of multiple domains might be:
 | 
									requests entirely.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									Example of multiple domains:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				'https://test.domain.de, https://production.domain.de'.
 | 
									'https://test.domain.de, https://production.domain.de'.
 | 
				
			||||||
				</description>
 | 
									</description>
 | 
				
			||||||
			</parameter>
 | 
								</parameter>
 | 
				
			||||||
@ -154,7 +158,7 @@
 | 
				
			|||||||
				If enabled, event comment elements are no longer accessible.
 | 
									If enabled, event comment elements are no longer accessible.
 | 
				
			||||||
				</description>
 | 
									</description>
 | 
				
			||||||
			</parameter>
 | 
								</parameter>
 | 
				
			||||||
			<parameter name="evaluationMode" type="string">
 | 
								<parameter name="evaluationMode" type="string" values=",automatic,manual">
 | 
				
			||||||
				<description>
 | 
									<description>
 | 
				
			||||||
				If set, the event service will only return events having a
 | 
									If set, the event service will only return events having a
 | 
				
			||||||
				preferred origin with a matching evaluationMode property.
 | 
									preferred origin with a matching evaluationMode property.
 | 
				
			||||||
@ -168,7 +172,7 @@
 | 
				
			|||||||
					<description>List of disabled event types</description>
 | 
										<description>List of disabled event types</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
			</group>
 | 
								</group>
 | 
				
			||||||
			<parameter name="eventFormats" type="list:string">
 | 
								<parameter name="eventFormats" type="list:string" values="csv,qml,qml-rt,sc3ml,text,xml">
 | 
				
			||||||
				<description>
 | 
									<description>
 | 
				
			||||||
				List of enabled event formats. If unspecified, all supported
 | 
									List of enabled event formats. If unspecified, all supported
 | 
				
			||||||
				formats are enabled.
 | 
									formats are enabled.
 | 
				
			||||||
@ -195,12 +199,12 @@
 | 
				
			|||||||
				standard FDSNWS extension served under fdsnws/ext/availability.
 | 
									standard FDSNWS extension served under fdsnws/ext/availability.
 | 
				
			||||||
				</description>
 | 
									</description>
 | 
				
			||||||
			</parameter>
 | 
								</parameter>
 | 
				
			||||||
			<parameter name="stationFilter" type="string">
 | 
								<parameter name="stationFilter" type="file" options="read">
 | 
				
			||||||
				<description>
 | 
									<description>
 | 
				
			||||||
				Path to station inventory filter file.
 | 
									Path to station inventory filter file.
 | 
				
			||||||
				</description>
 | 
									</description>
 | 
				
			||||||
			</parameter>
 | 
								</parameter>
 | 
				
			||||||
			<parameter name="dataSelectFilter" type="string">
 | 
								<parameter name="dataSelectFilter" type="file" options="read">
 | 
				
			||||||
				<description>
 | 
									<description>
 | 
				
			||||||
				Path to dataselect inventory filter file.
 | 
									Path to dataselect inventory filter file.
 | 
				
			||||||
				</description>
 | 
									</description>
 | 
				
			||||||
@ -288,6 +292,38 @@
 | 
				
			|||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
			</group>
 | 
								</group>
 | 
				
			||||||
 | 
								<group name="jwt">
 | 
				
			||||||
 | 
									<parameter name="enable" type="boolean" default="false">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										Enable JWT extension.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="issuers" type="list:string" default="https://geofon.gfz.de/eas2,https://login.earthscope.org/">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										List of issuer URLs.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="audience" type="list:string" default="eas,fdsn">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										List of valid audience.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="algorithms" type="list:string" default="RS256">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										List of allowed algorithms.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="updateMinSeconds" type="int" default="300">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										Minimum time to wait between requesting updated keys from a key server.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="updateMaxSeconds" type="int" default="86400">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										Maximum time to cache received keys.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
								</group>
 | 
				
			||||||
		</configuration>
 | 
							</configuration>
 | 
				
			||||||
	</module>
 | 
						</module>
 | 
				
			||||||
</seiscomp>
 | 
					</seiscomp>
 | 
				
			||||||
 | 
				
			|||||||
@ -34,7 +34,7 @@
 | 
				
			|||||||
				comma. Add ${plugins} to consider all previously read values.
 | 
									comma. Add ${plugins} to consider all previously read values.
 | 
				
			||||||
				</description>
 | 
									</description>
 | 
				
			||||||
			</parameter>
 | 
								</parameter>
 | 
				
			||||||
			<parameter name="cityXML" type="string">
 | 
								<parameter name="cityXML" type="file" values="*.xml" options="read">
 | 
				
			||||||
				<description>
 | 
									<description>
 | 
				
			||||||
				Path to the cities XML file. If undefined, the data is read
 | 
									Path to the cities XML file. If undefined, the data is read
 | 
				
			||||||
				from "@CONFIGDIR@/cities.xml" or
 | 
									from "@CONFIGDIR@/cities.xml" or
 | 
				
			||||||
@ -115,7 +115,7 @@
 | 
				
			|||||||
				are written to log files per modules as
 | 
									are written to log files per modules as
 | 
				
			||||||
				"@CONFIGDIR@/log/[module].log".
 | 
									"@CONFIGDIR@/log/[module].log".
 | 
				
			||||||
				</description>
 | 
									</description>
 | 
				
			||||||
				<parameter name="level" type="int" default="2" values="1,2,3,4´">
 | 
									<parameter name="level" type="int" default="2" values="1,2,3,4">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Set the logging level between 1 and 4 where 1=ERROR,
 | 
										Set the logging level between 1 and 4 where 1=ERROR,
 | 
				
			||||||
					2=WARNING, 3=INFO and 4=DEBUG.
 | 
										2=WARNING, 3=INFO and 4=DEBUG.
 | 
				
			||||||
@ -269,14 +269,14 @@
 | 
				
			|||||||
				is established. Override these values only if you know what you
 | 
									is established. Override these values only if you know what you
 | 
				
			||||||
				are doing.
 | 
									are doing.
 | 
				
			||||||
				</description>
 | 
									</description>
 | 
				
			||||||
				<parameter name="inventory" type="string">
 | 
									<parameter name="inventory" type="file" options="read" values="*.xml">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Load the inventory database from a given XML file if set.
 | 
										Load the inventory database from a given XML file if set.
 | 
				
			||||||
					This overrides the inventory definitions loaded from the
 | 
										This overrides the inventory definitions loaded from the
 | 
				
			||||||
					database backend.
 | 
										database backend.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
				<parameter name="config" type="string">
 | 
									<parameter name="config" type="file" options="read" values="*.xml">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Load the configuration database from a given XML file if set.
 | 
										Load the configuration database from a given XML file if set.
 | 
				
			||||||
					This overrides the configuration definitions loaded from the
 | 
										This overrides the configuration definitions loaded from the
 | 
				
			||||||
@ -344,7 +344,7 @@
 | 
				
			|||||||
				</group>
 | 
									</group>
 | 
				
			||||||
			</group>
 | 
								</group>
 | 
				
			||||||
			<group name="scripts">
 | 
								<group name="scripts">
 | 
				
			||||||
				<parameter name="crashHandler" type="path">
 | 
									<parameter name="crashHandler" type="file" options="read">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Path to crash handler script.
 | 
										Path to crash handler script.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
@ -453,9 +453,17 @@
 | 
				
			|||||||
					e.g. "signalBegin". This can be overridden per
 | 
										e.g. "signalBegin". This can be overridden per
 | 
				
			||||||
					station in its bindings.
 | 
										station in its bindings.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
					<parameter name="interface" type="string" default="libtau">
 | 
										<parameter name="interface" type="string" default="LOCSAT" values="libtau,LOCSAT,homogeneous">
 | 
				
			||||||
 | 
											<description>
 | 
				
			||||||
 | 
											The name of the travel-time interface to use. The list
 | 
				
			||||||
 | 
											can be extended by plugins.
 | 
				
			||||||
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="model" type="string" default="iasp91">
 | 
										<parameter name="model" type="string" default="iasp91">
 | 
				
			||||||
 | 
											<description>
 | 
				
			||||||
 | 
											The name of the travel-time interface (velocity) model
 | 
				
			||||||
 | 
											to use.
 | 
				
			||||||
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
				</group>
 | 
									</group>
 | 
				
			||||||
				<group name="WoodAnderson">
 | 
									<group name="WoodAnderson">
 | 
				
			||||||
@ -483,10 +491,25 @@
 | 
				
			|||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
				</group>
 | 
									</group>
 | 
				
			||||||
				<struct type="GlobalAmplitudeProfile" title="Amplitude-type profile" aliases="config:amplitudes.aliases">
 | 
									<struct type="GlobalAmplitudeProfile" title="Amplitude-type profile" aliases="config:amplitudes.aliases">
 | 
				
			||||||
 | 
										<parameter name="regionalize" type="boolean" default="true">
 | 
				
			||||||
 | 
											<description>
 | 
				
			||||||
 | 
											Control if the amplitude calculation should be
 | 
				
			||||||
 | 
											regionalized or not. The regions and their configuration
 | 
				
			||||||
 | 
											are taken from the corresponding magnitude profiles. If
 | 
				
			||||||
 | 
											regionalization is activate, then e.g. modules without
 | 
				
			||||||
 | 
											origin information will not be able to compute an
 | 
				
			||||||
 | 
											amplitude as the origin is required to determine the
 | 
				
			||||||
 | 
											effective settings.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											If amplitudes for this particular type shall be computed
 | 
				
			||||||
 | 
											regardless of any defined regions, set this parameter to
 | 
				
			||||||
 | 
											false.
 | 
				
			||||||
 | 
											</description>
 | 
				
			||||||
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="considerUnusedArrivals" type="boolean" default="false">
 | 
										<parameter name="considerUnusedArrivals" type="boolean" default="false">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						If enabled then also stations with unused (disabled)
 | 
											If enabled, then also stations with unused (disabled)
 | 
				
			||||||
						arrivals are considerd for amplitude and implicitly
 | 
											arrivals are considered for amplitude and implicitly
 | 
				
			||||||
						magnitude computations, e.g. by scamp, scmag and scolv.
 | 
											magnitude computations, e.g. by scamp, scmag and scolv.
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
@ -538,7 +561,7 @@
 | 
				
			|||||||
						interpolated but not extrapolated.
 | 
											interpolated but not extrapolated.
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="regionFile" type="path">
 | 
										<parameter name="regionFile" type="file" options="read">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						Path to a geofeature file, e.g. in BNA or GeoJSON format,
 | 
											Path to a geofeature file, e.g. in BNA or GeoJSON format,
 | 
				
			||||||
						with one or more polygons defining geographic regions.
 | 
											with one or more polygons defining geographic regions.
 | 
				
			||||||
@ -565,40 +588,72 @@
 | 
				
			|||||||
								Enable the region or not.
 | 
													Enable the region or not.
 | 
				
			||||||
								</description>
 | 
													</description>
 | 
				
			||||||
							</parameter>
 | 
												</parameter>
 | 
				
			||||||
							<parameter name="minDist" type="double" unit="deg">
 | 
												<parameter name="minDist" type="string" unit="deg">
 | 
				
			||||||
								<description>
 | 
													<description>
 | 
				
			||||||
								The minimum distance required to compute a
 | 
													The minimum distance required to compute a
 | 
				
			||||||
								magnitude. This settings has no effect with e.g.
 | 
													magnitude. This settings has no effect with e.g.
 | 
				
			||||||
								scautopick as there is no information about the
 | 
													scautopick as there is no information about the
 | 
				
			||||||
								source of the event to compute the distance.
 | 
													source of the event to compute the distance.
 | 
				
			||||||
								The default value is implementation specific.
 | 
													The default value depends on magnitude type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
													Although the default unit is 'deg', values can be
 | 
				
			||||||
 | 
													given in any SI distance unit such km, m or cm
 | 
				
			||||||
 | 
													by simply appending the unit to the value.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
													Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
													minDist = 500km
 | 
				
			||||||
								</description>
 | 
													</description>
 | 
				
			||||||
							</parameter>
 | 
												</parameter>
 | 
				
			||||||
							<parameter name="maxDist" type="double" unit="deg">
 | 
												<parameter name="maxDist" type="string" unit="deg">
 | 
				
			||||||
								<description>
 | 
													<description>
 | 
				
			||||||
								The maximum distance allowed to compute a magnitude.
 | 
													The maximum distance allowed to compute a magnitude.
 | 
				
			||||||
								This settings has no effect with e.g. scautopick
 | 
													This settings has no effect with e.g. scautopick
 | 
				
			||||||
								as there is no information about the source of
 | 
													as there is no information about the source of
 | 
				
			||||||
								the event to compute the distance. The default
 | 
													the event to compute the distance. The default
 | 
				
			||||||
								value is implementation specific.
 | 
													value depends on magnitude type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
													Although the default unit is 'deg', values can be
 | 
				
			||||||
 | 
													given in any SI distance unit such km, m or cm
 | 
				
			||||||
 | 
													by simply appending the unit to the value.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
													Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
													maxDist = 500km
 | 
				
			||||||
								</description>
 | 
													</description>
 | 
				
			||||||
							</parameter>
 | 
												</parameter>
 | 
				
			||||||
							<parameter name="minDepth" type="double" unit="km">
 | 
												<parameter name="minDepth" type="string" unit="km">
 | 
				
			||||||
								<description>
 | 
													<description>
 | 
				
			||||||
								The minimum depth required to compute a magnitude.
 | 
													The minimum depth required to compute a magnitude.
 | 
				
			||||||
								This settings has no effect with e.g. scautopick
 | 
													This settings has no effect with e.g. scautopick
 | 
				
			||||||
								as there is no information about the source of
 | 
													as there is no information about the source of
 | 
				
			||||||
								the event to retrieve the depth. The default
 | 
													the event to retrieve the depth. The default
 | 
				
			||||||
								value is implementation specific.
 | 
													value depends on magnitude type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
													Although the default unit is 'km', values can be
 | 
				
			||||||
 | 
													given in any SI distance unit such km, m or cm
 | 
				
			||||||
 | 
													by simply appending the unit to the value.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
													Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
													minDepth = 500km
 | 
				
			||||||
								</description>
 | 
													</description>
 | 
				
			||||||
							</parameter>
 | 
												</parameter>
 | 
				
			||||||
							<parameter name="maxDepth" type="double" unit="km">
 | 
												<parameter name="maxDepth" type="string" unit="km">
 | 
				
			||||||
								<description>
 | 
													<description>
 | 
				
			||||||
								The maximum depth allowed to compute a magnitude.
 | 
													The maximum depth allowed to compute a magnitude.
 | 
				
			||||||
								This settings has no effect with e.g. scautopick
 | 
													This settings has no effect with e.g. scautopick
 | 
				
			||||||
								as there is no information about the source of
 | 
													as there is no information about the source of
 | 
				
			||||||
								the event to retrieve the depth. The default
 | 
													the event to retrieve the depth. The default
 | 
				
			||||||
								value is implementation specific.
 | 
													value depends on magnitude type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
													Although the default unit is 'km', values can be
 | 
				
			||||||
 | 
													given in any SI distance unit such km, m or cm
 | 
				
			||||||
 | 
													by simply appending the unit to the value.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
													Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
													maxDepth = 500km
 | 
				
			||||||
								</description>
 | 
													</description>
 | 
				
			||||||
							</parameter>
 | 
												</parameter>
 | 
				
			||||||
							<parameter name="check" type="string" default="source">
 | 
												<parameter name="check" type="string" default="source">
 | 
				
			||||||
@ -862,12 +917,12 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
				<option flag="I" long-flag="record-url" argument="arg" default="" publicID="records#record-url">
 | 
									<option flag="I" long-flag="record-url" argument="arg" default="" publicID="records#record-url">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					The recordstream source URL, format:
 | 
										The RecordStream source URL. Format:
 | 
				
			||||||
					[service://]location[#type].
 | 
										[service://]location[#type].
 | 
				
			||||||
					"service" is the name of the recordstream driver
 | 
										"service" is the name of the RecordStream driver
 | 
				
			||||||
					which can be queried with "--record-driver-list".
 | 
										which can be queried with "--record-driver-list".
 | 
				
			||||||
					If "service" is not given, "file://" is
 | 
										If "service" is not given, "file://" is
 | 
				
			||||||
					used.
 | 
										used and simply the name of a miniSEED file can be given.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</option>
 | 
									</option>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -883,7 +938,7 @@
 | 
				
			|||||||
			</group>
 | 
								</group>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			<group name="Cities"  publicID="cities">
 | 
								<group name="Cities"  publicID="cities">
 | 
				
			||||||
				<option long-flag="city-xml" argument="arg" default="" publicID="cities#city-xml">
 | 
									<option long-flag="city-xml" argument="arg" default="" publicID="cities#city-xml" type="file" options="read" values="*.xml">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					The path to the cities XML file. This overrides the default
 | 
										The path to the cities XML file. This overrides the default
 | 
				
			||||||
					paths. Compare with the global parameter "citiesXML".
 | 
										paths. Compare with the global parameter "citiesXML".
 | 
				
			||||||
@ -936,6 +991,8 @@
 | 
				
			|||||||
				Create amplitude type profiles to define the time windows,
 | 
									Create amplitude type profiles to define the time windows,
 | 
				
			||||||
				minimum signal-to-noise ratio, amplitude thresholds and
 | 
									minimum signal-to-noise ratio, amplitude thresholds and
 | 
				
			||||||
				restitution for measuring amplitudes of a certain type.
 | 
									restitution for measuring amplitudes of a certain type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									Standard amplitude types supported in SeisComP: Md,Mjma,ML,MLc,MLh,MLr,MLv,MN,mb,mB,Mwp,Ms_20,Ms(BB).
 | 
				
			||||||
				</description>
 | 
									</description>
 | 
				
			||||||
				<parameter name="saturationThreshold" type="string" default="false" unit="counts; %">
 | 
									<parameter name="saturationThreshold" type="string" default="false" unit="counts; %">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
@ -977,14 +1034,14 @@
 | 
				
			|||||||
					The parameters of this group will be overridden by type
 | 
										The parameters of this group will be overridden by type
 | 
				
			||||||
					specific settings if given (see GlobalAmplitudeProfile).
 | 
										specific settings if given (see GlobalAmplitudeProfile).
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
					<parameter name="taper" default="5" unit="s">
 | 
										<parameter name="taper" default="5" unit="s" type="double">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						Define the length of the taper at either side of the
 | 
											Define the length of the taper at either side of the
 | 
				
			||||||
						waveform. The length will be added to the data
 | 
											waveform. The length will be added to the data
 | 
				
			||||||
						request: start - taper and end + taper.
 | 
											request: start - taper and end + taper.
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="minFreq" default="0.00833333" unit="Hz">
 | 
										<parameter name="minFreq" default="0.00833333" unit="Hz" type="double">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						The minimum frequency of the considered spectrum.
 | 
											The minimum frequency of the considered spectrum.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -995,7 +1052,7 @@
 | 
				
			|||||||
						that taper.
 | 
											that taper.
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="maxFreq" default="0" unit="Hz">
 | 
										<parameter name="maxFreq" default="0" unit="Hz" type="double">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						The maximum frequency of the considered spectrum.
 | 
											The maximum frequency of the considered spectrum.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1014,9 +1071,17 @@
 | 
				
			|||||||
					noise time window specifications,
 | 
										noise time window specifications,
 | 
				
			||||||
					e.g. "signalBegin".
 | 
										e.g. "signalBegin".
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
					<parameter name="interface" type="string" default="libtau">
 | 
										<parameter name="interface" type="string" default="LOCSAT" values="libtau,LOCSAT,homogeneous">
 | 
				
			||||||
 | 
											<description>
 | 
				
			||||||
 | 
											The name of the travel-time interface to use. The list
 | 
				
			||||||
 | 
											can be extended by plugins.
 | 
				
			||||||
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="model" type="string" default="iasp91">
 | 
										<parameter name="model" type="string" default="iasp91">
 | 
				
			||||||
 | 
											<description>
 | 
				
			||||||
 | 
											The name of the travel-time interface (velocity) model
 | 
				
			||||||
 | 
											to use.
 | 
				
			||||||
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
				</group>
 | 
									</group>
 | 
				
			||||||
				<group name="WoodAnderson">
 | 
									<group name="WoodAnderson">
 | 
				
			||||||
@ -1043,7 +1108,7 @@
 | 
				
			|||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
				</group>
 | 
									</group>
 | 
				
			||||||
				<struct type="GlobalAmplitudeProfile" title="Amplitude type profile">
 | 
									<struct type="GlobalBindingsAmplitudeProfile" title="Amplitude type profile: Use name of amplitude type" aliases="config:amplitudes.aliases">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					An amplitude profile configures global parameters for a
 | 
										An amplitude profile configures global parameters for a
 | 
				
			||||||
					particular amplitude type. The available amplitude types
 | 
										particular amplitude type. The available amplitude types
 | 
				
			||||||
@ -1083,14 +1148,38 @@
 | 
				
			|||||||
						will be used instead.
 | 
											will be used instead.
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="minSNR" type="double">
 | 
										<parameter name="minSNR" type="double" default="3">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						Define the minimum SNR to be reached to compute the
 | 
											Define the minimum SNR to be reached to compute the
 | 
				
			||||||
						amplitudes. This value is amplitude type specific and
 | 
											amplitudes. This value is amplitude type specific and
 | 
				
			||||||
						has no global default value.
 | 
											has no global default value.
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="noiseBegin" type="double" unit="s">
 | 
										<parameter name="minPeriod" type="double" unit="s">
 | 
				
			||||||
 | 
											<description>
 | 
				
			||||||
 | 
											Define the minimum period of the measured amplitude. If
 | 
				
			||||||
 | 
											the period is below this value, the amplitude will not be emitted.
 | 
				
			||||||
 | 
											This value is specific to amplitude type and has no global
 | 
				
			||||||
 | 
											default value. A value lower or equal than 0 will disable
 | 
				
			||||||
 | 
											this check.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											Caution: If a value is set but the amplitude does not
 | 
				
			||||||
 | 
											provide the period, no amplitude is sent.
 | 
				
			||||||
 | 
											</description>
 | 
				
			||||||
 | 
										</parameter>
 | 
				
			||||||
 | 
										<parameter name="maxPeriod" type="double" unit="s">
 | 
				
			||||||
 | 
											<description>
 | 
				
			||||||
 | 
											Define the maximum period of the measured amplitude. If
 | 
				
			||||||
 | 
											the period is above this value, the amplitude will not be emitted.
 | 
				
			||||||
 | 
											This value is specific to amplitude type and has no global
 | 
				
			||||||
 | 
											default value. A value lower or equal than 0 will disable
 | 
				
			||||||
 | 
											this check.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											Caution: If a value is set but the amplitude does not
 | 
				
			||||||
 | 
											provide the period, no amplitude is sent.
 | 
				
			||||||
 | 
											</description>
 | 
				
			||||||
 | 
										</parameter>
 | 
				
			||||||
 | 
										<parameter name="noiseBegin" type="string" unit="time grammar" default="-35">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						Override the default time (relative to the trigger
 | 
											Override the default time (relative to the trigger
 | 
				
			||||||
						time) of the begin of the noise window used to compute
 | 
											time) of the begin of the noise window used to compute
 | 
				
			||||||
@ -1099,7 +1188,7 @@
 | 
				
			|||||||
						should only be changed if you know what you are doing.
 | 
											should only be changed if you know what you are doing.
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="noiseEnd" type="double" unit="s">
 | 
										<parameter name="noiseEnd" type="string" unit="time grammar" default="-5">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						Override the default time (relative to the trigger
 | 
											Override the default time (relative to the trigger
 | 
				
			||||||
						time) of the end of the noise window used to compute
 | 
											time) of the end of the noise window used to compute
 | 
				
			||||||
@ -1108,7 +1197,7 @@
 | 
				
			|||||||
						should only be changed if you know what you are doing.
 | 
											should only be changed if you know what you are doing.
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="signalBegin" type="double" unit="s">
 | 
										<parameter name="signalBegin" type="string" unit="time grammar" default="-5">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						Override the default time (relative to the trigger
 | 
											Override the default time (relative to the trigger
 | 
				
			||||||
						time) of the begin of the signal window used to compute
 | 
											time) of the begin of the signal window used to compute
 | 
				
			||||||
@ -1117,7 +1206,7 @@
 | 
				
			|||||||
						changed if you know what you are doing.
 | 
											changed if you know what you are doing.
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="signalEnd" type="double" unit="s">
 | 
										<parameter name="signalEnd" type="string" unit="time grammar" default="30">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						Override the default time (relative to the trigger
 | 
											Override the default time (relative to the trigger
 | 
				
			||||||
						time) of the end of the signal window used to compute
 | 
											time) of the end of the signal window used to compute
 | 
				
			||||||
@ -1126,69 +1215,86 @@
 | 
				
			|||||||
						changed if you know what you are doing.
 | 
											changed if you know what you are doing.
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="minDist" type="double" unit="deg">
 | 
										<parameter name="minDist" type="string" unit="deg" default="0">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						The minimum distance required to compute an amplitude.
 | 
											The minimum distance required to compute an amplitude.
 | 
				
			||||||
						This settings has no effect with e.g. scautopick as there
 | 
											This settings has no effect with e.g. scautopick as there
 | 
				
			||||||
						is no information about the source of the event to compute
 | 
											is no information about the source of the event to compute
 | 
				
			||||||
						the distance. The default value is implementation
 | 
											the distance. The default value depends on
 | 
				
			||||||
						specific.
 | 
											amplitude type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											Although the default unit is 'deg', values can be
 | 
				
			||||||
 | 
											given in any SI distance unit such km, m or cm
 | 
				
			||||||
 | 
											by simply appending the unit to the value.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											minDist = 500km
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="maxDist" type="double" unit="deg">
 | 
										<parameter name="maxDist" type="string" unit="deg" default="180">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						The maximum distance allowed to compute an amplitude.
 | 
											The maximum distance allowed to compute an amplitude.
 | 
				
			||||||
						This settings has no effect with e.g. scautopick as there
 | 
											This settings has no effect with e.g. scautopick as there
 | 
				
			||||||
						is no information about the source of the event to compute
 | 
											is no information about the source of the event to compute
 | 
				
			||||||
						the distance. The default value is implementation
 | 
											the distance. The default value depends on
 | 
				
			||||||
						specific.
 | 
											amplitude type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											Although the default unit is 'deg', values can be
 | 
				
			||||||
 | 
											given in any SI distance unit such km, m or cm
 | 
				
			||||||
 | 
											by simply appending the unit to the value.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											maxDist = 500km
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="minDepth" type="double" unit="km">
 | 
										<parameter name="minDepth" type="string" unit="km" default="-1000000">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						The minimum depth required to compute an amplitude.
 | 
											The minimum depth required to compute an amplitude.
 | 
				
			||||||
						This settings has no effect with e.g. scautopick as there
 | 
											This settings has no effect with e.g. scautopick as there
 | 
				
			||||||
						is no information about the source of the event to
 | 
											is no information about the source of the event to
 | 
				
			||||||
						retrieve the depth. The default value is implementation
 | 
											retrieve the depth. The default value depends on
 | 
				
			||||||
						specific.
 | 
											amplitude type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											Although the default unit is 'km', values can be
 | 
				
			||||||
 | 
											given in any SI distance unit such km, m or cm
 | 
				
			||||||
 | 
											by simply appending the unit to the value.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											minDepth = 500km
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="maxDepth" type="double" unit="km">
 | 
										<parameter name="maxDepth" type="string" unit="km" default="1000000">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						The maximum depth allowed to compute an amplitude.
 | 
											The maximum depth allowed to compute an amplitude.
 | 
				
			||||||
						This settings has no effect with e.g. scautopick as there
 | 
											This settings has no effect with e.g. scautopick as there
 | 
				
			||||||
						is no information about the source of the event to
 | 
											is no information about the source of the event to
 | 
				
			||||||
						retrieve the depth. The default value is implementation
 | 
											retrieve the depth. The default value depends on
 | 
				
			||||||
						specific.
 | 
											amplitude type.
 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
					<parameter name="regionalize" type="boolean" default="true">
 | 
					 | 
				
			||||||
						<description>
 | 
					 | 
				
			||||||
						Control if the amplitude calculation should be
 | 
					 | 
				
			||||||
						regionalized or not. The regions and their configuration
 | 
					 | 
				
			||||||
						are taken from the corresponding magnitude profiles. If
 | 
					 | 
				
			||||||
						regionalization is activate, then e.g. modules without
 | 
					 | 
				
			||||||
						origin information will not be able to compute an
 | 
					 | 
				
			||||||
						amplitude as the origin is required to determine the
 | 
					 | 
				
			||||||
						effective settings.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
						If amplitudes for this particular type shall be computed
 | 
											Although the default unit is 'km', values can be
 | 
				
			||||||
						regardless of any defined regions, set this parameter to
 | 
											given in any SI distance unit such km, m or cm
 | 
				
			||||||
						false.
 | 
											by simply appending the unit to the value.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											maxDepth = 500km
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<group name="resp">
 | 
										<group name="resp">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						Several parameters if usage of full responses is enabled.
 | 
											Several parameters if usage of full responses is enabled.
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
						<parameter name="taper" default="5" unit="s">
 | 
											<parameter name="taper" default="5" unit="s" type="double">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Define the length of the taper at either side of the
 | 
												Define the length of the taper at either side of the
 | 
				
			||||||
							waveform. The length will be added to the data
 | 
												waveform. The length will be added to the data
 | 
				
			||||||
							request: start - taper and end + taper.
 | 
												request: start - taper and end + taper.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="minFreq" default="0.00833333" unit="Hz">
 | 
											<parameter name="minFreq" default="0.00833333" unit="Hz" type="double">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							After data are converted in to the frequency domain
 | 
												After data are converted in to the frequency domain
 | 
				
			||||||
							that minimum frequency defines the end of the left-side
 | 
												that minimum frequency defines the end of the left-side
 | 
				
			||||||
@ -1197,7 +1303,7 @@
 | 
				
			|||||||
							A value of 0 or lower disables that taper.
 | 
												A value of 0 or lower disables that taper.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="maxFreq" default="0" unit="Hz">
 | 
											<parameter name="maxFreq" default="0" unit="Hz" type="double">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							After data are converted in to the frequency domain
 | 
												After data are converted in to the frequency domain
 | 
				
			||||||
							that maximum frequency defines the start of the right-side
 | 
												that maximum frequency defines the start of the right-side
 | 
				
			||||||
@ -1211,11 +1317,13 @@
 | 
				
			|||||||
			</group>
 | 
								</group>
 | 
				
			||||||
			<group name="magnitudes">
 | 
								<group name="magnitudes">
 | 
				
			||||||
				<description>
 | 
									<description>
 | 
				
			||||||
				Define magnitude parameters independent of amplitude-type profiles.
 | 
									Define the calibration parameters and constraints for computing
 | 
				
			||||||
				For magnitude correction parameters, e.g., network of station
 | 
									magnitudes from measured amplitudes including static corrections.
 | 
				
			||||||
				corrections, create a magnitude type profile.
 | 
									The parameters are independent of amplitude-type profiles.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									Standard magnitude types supported in SeisComP: Md,Mjma,ML,MLc,MLh,MLr,MLv,MN,mb,mB,Mwp,Ms_20,Ms(BB).
 | 
				
			||||||
				</description>
 | 
									</description>
 | 
				
			||||||
				<struct type="GlobalBindingsMagnitudeTypeProfile" title="Magnitude type profile">
 | 
									<struct type="GlobalBindingsMagnitudeProfile" title="Magnitude type profile: Use name of magnitude type" aliases="config:magnitudes.aliases">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					A magnitude profile configures global parameters for a
 | 
										A magnitude profile configures global parameters for a
 | 
				
			||||||
					particular magnitude type. The available magnitude types
 | 
										particular magnitude type. The available magnitude types
 | 
				
			||||||
@ -1243,6 +1351,106 @@
 | 
				
			|||||||
						Example: "0.0, regionA: -0.1, regionB: 0.2".
 | 
											Example: "0.0, regionA: -0.1, regionB: 0.2".
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
 | 
										<parameter name="minDist" type="string" unit="deg">
 | 
				
			||||||
 | 
											<description>
 | 
				
			||||||
 | 
											The minimum distance in degree required to compute a
 | 
				
			||||||
 | 
											magnitude. This settings has no effect with e.g.
 | 
				
			||||||
 | 
											scautopick as there is no information about the
 | 
				
			||||||
 | 
											source of the event to compute the distance.
 | 
				
			||||||
 | 
											The default value depends on magnitude type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											Although the default unit is 'deg', values can be
 | 
				
			||||||
 | 
											given in any SI distance unit such km, m or cm
 | 
				
			||||||
 | 
											by simply appending the unit to the value.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											minDist = 500km
 | 
				
			||||||
 | 
											</description>
 | 
				
			||||||
 | 
										</parameter>
 | 
				
			||||||
 | 
										<parameter name="maxDist" type="string" unit="deg">
 | 
				
			||||||
 | 
											<description>
 | 
				
			||||||
 | 
											The maximum distance in degree allowed to compute a magnitude.
 | 
				
			||||||
 | 
											This settings has no effect with e.g. scautopick
 | 
				
			||||||
 | 
											as there is no information about the source of
 | 
				
			||||||
 | 
											the event to compute the distance. The default
 | 
				
			||||||
 | 
											value depends on magnitude type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											Although the default unit is 'deg', values can be
 | 
				
			||||||
 | 
											given in any SI distance unit such km, m or cm
 | 
				
			||||||
 | 
											by simply appending the unit to the value.
 | 
				
			||||||
 | 
											</description>
 | 
				
			||||||
 | 
										</parameter>
 | 
				
			||||||
 | 
										<parameter name="minDepth" type="string" unit="km">
 | 
				
			||||||
 | 
											<description>
 | 
				
			||||||
 | 
											The minimum depth required to compute a magnitude.
 | 
				
			||||||
 | 
											This settings has no effect with e.g. scautopick
 | 
				
			||||||
 | 
											as there is no information about the source of
 | 
				
			||||||
 | 
											the event to retrieve the depth. The default
 | 
				
			||||||
 | 
											value depends on magnitude type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											Although the default unit is 'km', values can be
 | 
				
			||||||
 | 
											given in any SI distance unit such km, m or cm
 | 
				
			||||||
 | 
											by simply appending the unit to the value.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											minDepth = 500km
 | 
				
			||||||
 | 
											</description>
 | 
				
			||||||
 | 
										</parameter>
 | 
				
			||||||
 | 
										<parameter name="maxDepth" type="string" unit="km">
 | 
				
			||||||
 | 
											<description>
 | 
				
			||||||
 | 
											The maximum depth allowed to compute a magnitude.
 | 
				
			||||||
 | 
											This settings has no effect with e.g. scautopick
 | 
				
			||||||
 | 
											as there is no information about the source of
 | 
				
			||||||
 | 
											the event to retrieve the depth. The default
 | 
				
			||||||
 | 
											value depends on magnitude type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											Although the default unit is 'km', values can be
 | 
				
			||||||
 | 
											given in any SI distance unit such km, m or cm
 | 
				
			||||||
 | 
											by simply appending the unit to the value.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											maxDepth = 500km
 | 
				
			||||||
 | 
											</description>
 | 
				
			||||||
 | 
										</parameter>
 | 
				
			||||||
 | 
										<parameter name="minSNR" type="double">
 | 
				
			||||||
 | 
											<description>
 | 
				
			||||||
 | 
											The minimum SNR required for a magnitude to pass
 | 
				
			||||||
 | 
											the QC check. The station magnitude will be computed
 | 
				
			||||||
 | 
											anyway but if the SNR is below this threshold it will
 | 
				
			||||||
 | 
											be associated with weight zero and will not contribute
 | 
				
			||||||
 | 
											to the network magnitude. If this value is set then it
 | 
				
			||||||
 | 
											overrides the regionalized setting.
 | 
				
			||||||
 | 
											</description>
 | 
				
			||||||
 | 
										</parameter>
 | 
				
			||||||
 | 
										<parameter name="minPeriod" type="double" unit="s">
 | 
				
			||||||
 | 
											<description>
 | 
				
			||||||
 | 
											The minimum period required for a magnitude to pass
 | 
				
			||||||
 | 
											the QC check. The station magnitude will be computed
 | 
				
			||||||
 | 
											anyway but if the period is below this threshold it will
 | 
				
			||||||
 | 
											be associated with weight zero and will not contribute
 | 
				
			||||||
 | 
											to the network magnitude. If this value is set, then it
 | 
				
			||||||
 | 
											overrides the regionalized setting.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											Caution: If a value is set but the amplitude does not
 | 
				
			||||||
 | 
											provide the period, no magnitude is computed.
 | 
				
			||||||
 | 
											</description>
 | 
				
			||||||
 | 
										</parameter>
 | 
				
			||||||
 | 
										<parameter name="maxPeriod" type="double" unit="s">
 | 
				
			||||||
 | 
											<description>
 | 
				
			||||||
 | 
											The maximum period allowed for a magnitude to pass
 | 
				
			||||||
 | 
											the QC check. The station magnitude will be computed
 | 
				
			||||||
 | 
											anyway but if the period is above this threshold it will
 | 
				
			||||||
 | 
											be associated with weight zero and will not contribute
 | 
				
			||||||
 | 
											to the network magnitude. If this value is set, then it
 | 
				
			||||||
 | 
											overrides the regionalized setting.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											Caution: If a value is set but the amplitude does not
 | 
				
			||||||
 | 
											provide the period, no magnitude is computed.
 | 
				
			||||||
 | 
											</description>
 | 
				
			||||||
 | 
										</parameter>
 | 
				
			||||||
				</struct>
 | 
									</struct>
 | 
				
			||||||
			</group>
 | 
								</group>
 | 
				
			||||||
			<group name="picker">
 | 
								<group name="picker">
 | 
				
			||||||
 | 
				
			|||||||
@ -17,6 +17,30 @@
 | 
				
			|||||||
					documentation for the required interface name.
 | 
										documentation for the required interface name.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="lat" type="double">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										The fixed latitude to use. If not set then this
 | 
				
			||||||
 | 
										value is read from the input origin.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="lon" type="double">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										The fixed longitude to use. If not set then this
 | 
				
			||||||
 | 
										value is read from the input origin.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="depth" type="double">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										The fixed depth to use. If not set then this
 | 
				
			||||||
 | 
										value is read from the input origin.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="time" type="string">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										The fixed time to use. If not set then this
 | 
				
			||||||
 | 
										value is read from the input origin.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
				<parameter name="usePickUncertainties" type="boolean" default="false">
 | 
									<parameter name="usePickUncertainties" type="boolean" default="false">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Whether to use pick time uncertainties rather than a fixed
 | 
										Whether to use pick time uncertainties rather than a fixed
 | 
				
			||||||
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -10,30 +10,32 @@
 | 
				
			|||||||
				<description>
 | 
									<description>
 | 
				
			||||||
					Locator parameters: Hypo71
 | 
										Locator parameters: Hypo71
 | 
				
			||||||
				</description>
 | 
									</description>
 | 
				
			||||||
				<parameter name="logFile" type="string" default="@LOGDIR@/HYPO71.LOG">
 | 
									<parameter name="logFile" type="file" default="@LOGDIR@/HYPO71.LOG" options="write">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Temporary file used by Hypo71 to store calculation logs.
 | 
										Temporary file used by Hypo71 to store calculation logs.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
				<parameter name="inputFile" type="string" default="@DATADIR@/hypo71/HYPO71.INP">
 | 
									<parameter name="inputFile" type="file" default="@DATADIR@/hypo71/HYPO71.INP" options="write">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Temporary file to write Hypo71 input data to.
 | 
										Temporary file to write Hypo71 input data to.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
				<parameter name="outputFile" type="string" default="@DATADIR@/hypo71/HYPO71.PRT">
 | 
									<parameter name="outputFile" type="file" default="@DATADIR@/hypo71/HYPO71.PRT" options="write">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Temporary output file to read Hypo71 location data from.
 | 
										Temporary output file to read Hypo71 location data from.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
				<parameter name="defaultControlFile" type="string" default="@DATADIR@/hypo71/profiles/default.hypo71.conf">
 | 
									<parameter name="defaultControlFile" type="file" default="@DATADIR@/hypo71/profiles/default.hypo71.conf" options="read">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Hypo71 default profile.
 | 
										Hypo71 default profile. If no custom profile is specified,
 | 
				
			||||||
					If no custom profile is specified, this profile will be used by the plugin when proceeding to a localization. 
 | 
										this profile will be used by the plugin when proceeding to a
 | 
				
			||||||
 | 
										localization.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
				<parameter name="hypo71ScriptFile" type="string" default="@DATADIR@/hypo71/run.sh">
 | 
									<parameter name="hypo71ScriptFile" type="file" default="@DATADIR@/hypo71/run.sh" options="execute">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Bash script executed when calling the Hypo71 locator plugin for locating the earthquake.
 | 
										Bash script executed when calling the Hypo71 locator plugin
 | 
				
			||||||
 | 
										for locating the earthquake.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
				<parameter name="profiles" type="list:string">
 | 
									<parameter name="profiles" type="list:string">
 | 
				
			||||||
@ -45,7 +47,8 @@
 | 
				
			|||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
				<group name="profile">
 | 
									<group name="profile">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
						Profiles containing the profile-specific velocity model and the Hypo71 parameters.
 | 
										Profiles containing the profile-specific velocity model and
 | 
				
			||||||
 | 
										the Hypo71 parameters.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
					<struct type="Hypo71 profile" link = "hypo71.profiles">
 | 
										<struct type="Hypo71 profile" link = "hypo71.profiles">
 | 
				
			||||||
						<parameter name="earthModelID" type="string">
 | 
											<parameter name="earthModelID" type="string">
 | 
				
			||||||
@ -59,7 +62,7 @@
 | 
				
			|||||||
							It is generally the locator's name (Hypo71).
 | 
												It is generally the locator's name (Hypo71).
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="controlFile" type="string">
 | 
											<parameter name="controlFile" type="file" options="read">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							File containing the profile parameters.
 | 
												File containing the profile parameters.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
@ -76,10 +79,15 @@
 | 
				
			|||||||
					</struct>
 | 
										</struct>
 | 
				
			||||||
				</group>
 | 
									</group>
 | 
				
			||||||
				<parameter name="publicID" type="string">
 | 
									<parameter name="publicID" type="string">
 | 
				
			||||||
					<description>Custom patternID to use when generating origin publicID</description>
 | 
										<description>
 | 
				
			||||||
 | 
										Custom patternID to use when generating origin publicID.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
				<parameter name="useHypo71PatternID" type="boolean">
 | 
									<parameter name="useHypo71PatternID" type="boolean">
 | 
				
			||||||
					<description>Specifies if the given publicD should be used for generating origin publicID</description>
 | 
										<description>
 | 
				
			||||||
 | 
										Specifies if the given public ID shall be used for
 | 
				
			||||||
 | 
										generating origin publicID.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
			</group>
 | 
								</group>
 | 
				
			||||||
		</configuration>
 | 
							</configuration>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,16 +3,16 @@
 | 
				
			|||||||
	<plugin name="iLoc">
 | 
						<plugin name="iLoc">
 | 
				
			||||||
		<extends>global</extends>
 | 
							<extends>global</extends>
 | 
				
			||||||
		<description>
 | 
							<description>
 | 
				
			||||||
			Locator in SeisComP implemented by the plugin lociloc.
 | 
							Locator in SeisComP implemented by the plugin lociloc.
 | 
				
			||||||
		</description>
 | 
							</description>
 | 
				
			||||||
		<configuration>
 | 
							<configuration>
 | 
				
			||||||
			<group name="iLoc">
 | 
								<group name="iLoc">
 | 
				
			||||||
				<description>
 | 
									<description>
 | 
				
			||||||
					Locator parameters: iLoc
 | 
										Locator parameters: iLoc
 | 
				
			||||||
				</description>
 | 
									</description>
 | 
				
			||||||
				<parameter name="auxDir" type="string" default="@DATADIR@/iloc/iLocAuxDir">
 | 
									<parameter name="auxDir" type="directory" default="@DATADIR@/iloc/iLocAuxDir" options="read">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					iLoc directory for auxialiary files and directories. Some
 | 
										iLoc directory for auxiliary files and directories. Some
 | 
				
			||||||
					of them must be provided from the iLoc website. Read the
 | 
										of them must be provided from the iLoc website. Read the
 | 
				
			||||||
					documentation for their installation.
 | 
										documentation for their installation.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
@ -32,9 +32,9 @@
 | 
				
			|||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
				<parameter name="profiles" type="list:string" default="iasp91,ak135">
 | 
									<parameter name="profiles" type="list:string" default="iasp91,ak135">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					iLoc profile name.
 | 
										List of iLoc profile name(s). Separate multiple names by comma.
 | 
				
			||||||
					Multiples names may be set separated by comma.
 | 
										Each profile can have different velocity or parameters. The
 | 
				
			||||||
					Each profile can have different velocity or parameters.
 | 
										must be defined separate by iLoc profiles.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
				<group name="profile">
 | 
									<group name="profile">
 | 
				
			||||||
@ -60,17 +60,17 @@
 | 
				
			|||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="UseRSTT" type="boolean" default="false">
 | 
											<parameter name="UseRSTT" type="boolean" default="false">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Use regional seismic travel-time tables
 | 
												Use regional seismic travel-time tables.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="UseRSTTPnSn" type="boolean" default="true">
 | 
											<parameter name="UseRSTTPnSn" type="boolean" default="true">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Use regional seismic travel-time tables for Pn and Sn
 | 
												Use regional seismic travel-time tables for Pn and Sn.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="UseRSTTPgLg" type="boolean" default="true">
 | 
											<parameter name="UseRSTTPgLg" type="boolean" default="true">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Use regional seismic travel-time tables for Pg and Lg
 | 
												Use regional seismic travel-time tables for Pg and Lg.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="UseLocalTT" type="boolean" default="false">
 | 
											<parameter name="UseLocalTT" type="boolean" default="false">
 | 
				
			||||||
@ -78,7 +78,7 @@
 | 
				
			|||||||
							Use local velocity model if defined in LocalVmodel.
 | 
												Use local velocity model if defined in LocalVmodel.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="LocalVmodel" type="string" default="">
 | 
											<parameter name="LocalVmodel" type="file" default="" options="read">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Full path to a file containing the local velocity model.
 | 
												Full path to a file containing the local velocity model.
 | 
				
			||||||
							Requires: UseLocalTT = true. Empty string or unset or
 | 
												Requires: UseLocalTT = true. Empty string or unset or
 | 
				
			||||||
@ -98,124 +98,125 @@
 | 
				
			|||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="DoGridSearch" type="boolean" default="true">
 | 
											<parameter name="DoGridSearch" type="boolean" default="true">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Perform neighbourhood algorithm
 | 
												Perform neighbourhood algorithm.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="NAsearchRadius" type="float" default="5" unit="deg">
 | 
											<parameter name="NAsearchRadius" type="float" default="5" unit="deg">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Neighbourhood Algorithm: Search radius around initial
 | 
												Neighbourhood Algorithm: Search radius around initial
 | 
				
			||||||
							epicentre
 | 
												epicentre.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="NAsearchDepth" type="float" default="300" unit="km">
 | 
											<parameter name="NAsearchDepth" type="float" default="300" unit="km">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Neighbourhood Algorithm: Search radius around initial
 | 
												Neighbourhood Algorithm: Search radius around initial
 | 
				
			||||||
							depth
 | 
												depth.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="NAsearchOT" type="float" default="30" unit="s">
 | 
											<parameter name="NAsearchOT" type="float" default="30" unit="s">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Neighbourhood Algorithm: Search radius around initial
 | 
												Neighbourhood Algorithm: Search radius around initial
 | 
				
			||||||
							origin time
 | 
												origin time.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="NAlpNorm" type="float" default="1">
 | 
											<parameter name="NAlpNorm" type="float" default="1" range="1:2">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Neighbourhood Algorithm: p-value for norm to compute
 | 
												Neighbourhood Algorithm: p-value for norm to compute
 | 
				
			||||||
							misfit [1,2]
 | 
												misfit.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="NAiterMax" type="integer" default="5">
 | 
											<parameter name="NAiterMax" type="int" default="5">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Neighbourhood Algorithm: Maximum number of iterations
 | 
												Neighbourhood Algorithm: Maximum number of iterations.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="NAcells" type="integer" default="25">
 | 
											<parameter name="NAcells" type="int" default="25">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Neighbourhood Algorithm: Number of cells to be resampled
 | 
												Neighbourhood Algorithm: Number of cells to be resampled
 | 
				
			||||||
							at each iteration
 | 
												at each iteration.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="NAinitialSample" type="integer" default="1000" unit="">
 | 
											<parameter name="NAinitialSample" type="int" default="1000" unit="">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Neighbourhood Algorithm: Size of initial sample
 | 
												Neighbourhood Algorithm: Size of initial sample.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="NAnextSample" type="integer" default="100" unit="">
 | 
											<parameter name="NAnextSample" type="int" default="100" unit="">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Neighbourhood Algorithm: Size of subsequent samples
 | 
												Neighbourhood Algorithm: Size of subsequent samples.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						<parameter name="MinDepthPhases" type="integer" default="3" unit="">
 | 
											<parameter name="MinDepthPhases" type="int" default="3" unit="">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Depth resolution: Minimum number of depth phases for depdp
 | 
												Depth resolution: Minimum number of depth phases.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="MaxLocalDistDeg" type="float" default="0.2" unit="deg">
 | 
											<parameter name="MaxLocalDistDeg" type="float" default="0.2" unit="deg">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Depth resolution: Maximum local distance
 | 
												Depth resolution: Maximum local distance.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="MinLocalStations" type="integer" default="1">
 | 
											<parameter name="MinLocalStations" type="int" default="1">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Depth resolution: Minimum number of local defining stations
 | 
												Depth resolution: Minimum number of local defining stations.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="MaxSPDistDeg" type="float" default="2.0" unit="deg">
 | 
											<parameter name="MaxSPDistDeg" type="float" default="2.0" unit="deg">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Depth resolution: Maximum distance for using S-P travel-time differences.
 | 
												Depth resolution: Maximum epicentral distance for
 | 
				
			||||||
 | 
												using S-P travel-time differences.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="MinSPpairs" type="integer" default="3">
 | 
											<parameter name="MinSPpairs" type="int" default="3">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Depth resolution: Minimum number of defining S-P phase pairs
 | 
												Depth resolution: Minimum number of defining S-P phase pairs.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="MinCorePhases" type="integer" default="3">
 | 
											<parameter name="MinCorePhases" type="int" default="3">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Depth resolution: Minimum number of defining core reflection phases
 | 
												Depth resolution: Minimum number of defining core reflection phases
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="MaxShallowDepthError" type="float" default="30.0" unit="km">
 | 
											<parameter name="MaxShallowDepthError" type="float" default="30.0" unit="km">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Depth resolution: Maximum depth error for crustal free-depth
 | 
												Depth resolution: Maximum depth error for crustal free-depth.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="MaxDeepDepthError" type="float" default="60.0" unit="km">
 | 
											<parameter name="MaxDeepDepthError" type="float" default="60.0" unit="km">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Depth resolution: Maximum depth error for deep free-depth
 | 
												Depth resolution: Maximum depth error for deep free-depth.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						<parameter name="DoCorrelatedErrors" type="boolean" default="true">
 | 
											<parameter name="DoCorrelatedErrors" type="boolean" default="true">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Linearized inversion: Account for correlated errors
 | 
												Linearized inversion: Account for correlated errors.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="SigmaThreshold" type="float" default="6.0" unit="s">
 | 
											<parameter name="SigmaThreshold" type="float" default="6.0" unit="s">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Linearized inversion: Used to exclude big residuals from solution
 | 
												Linearized inversion: Used to exclude big residuals from solution.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="AllowDamping" type="boolean" default="true">
 | 
											<parameter name="AllowDamping" type="boolean" default="true">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Linearized inversion: Allow damping of model vector
 | 
												Linearized inversion: Allow damping of model vector.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="MinIterations" type="integer" default="4">
 | 
											<parameter name="MinIterations" type="int" default="4">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Linearized inversion: Minimum number of iterations
 | 
												Linearized inversion: Minimum number of iterations.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="MaxIterations" type="integer" default="20">
 | 
											<parameter name="MaxIterations" type="int" default="20">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Linearized inversion: Maximum number of iterations
 | 
												Linearized inversion: Maximum number of iterations.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="MinNdefPhases" type="integer" default="4">
 | 
											<parameter name="MinNdefPhases" type="int" default="4">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Linearized inversion: Minimum number of defining phases
 | 
												Linearized inversion: Minimum number of defining phases.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="DoNotRenamePhases" type="boolean" default="false">
 | 
											<parameter name="DoNotRenamePhases" type="boolean" default="false">
 | 
				
			||||||
 | 
				
			|||||||
@ -12,7 +12,7 @@
 | 
				
			|||||||
				Locator parameters: Router. This locator requires the plugin
 | 
									Locator parameters: Router. This locator requires the plugin
 | 
				
			||||||
				"locrouter" to be loaded.
 | 
									"locrouter" to be loaded.
 | 
				
			||||||
				</description>
 | 
									</description>
 | 
				
			||||||
				<parameter name="regions" type="string">
 | 
									<parameter name="regions" type="file" options="read">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					A GeoJSON or BNA file defining locator profiles by region.
 | 
										A GeoJSON or BNA file defining locator profiles by region.
 | 
				
			||||||
					Supported polygon attributes:
 | 
										Supported polygon attributes:
 | 
				
			||||||
 | 
				
			|||||||
@ -11,25 +11,23 @@
 | 
				
			|||||||
		Body wave magnitude at teleseismic distances measured at 1 s period.
 | 
							Body wave magnitude at teleseismic distances measured at 1 s period.
 | 
				
			||||||
		</description>
 | 
							</description>
 | 
				
			||||||
		<configuration>
 | 
							<configuration>
 | 
				
			||||||
			<group name="magnitudes">
 | 
								<extend-struct type="GlobalBindingsMagnitudeProfile" match-name="mb">
 | 
				
			||||||
				<group name="mb">
 | 
									<description>
 | 
				
			||||||
 | 
									Parameters for computing mb magnitudes from mb amplitudes.
 | 
				
			||||||
 | 
									</description>
 | 
				
			||||||
 | 
									<parameter name="minDist" type="double" unit="deg" default="5">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Parameters for computing mb magnitudes from mb amplitudes.
 | 
										Minimum epicentral distance for computing mb. Note: According
 | 
				
			||||||
 | 
										to the IASPEI recommendations in 2013, the minimum distance
 | 
				
			||||||
 | 
										should be 20 deg.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
					<parameter name="minDist" type="double" unit="deg" default="5">
 | 
									</parameter>
 | 
				
			||||||
						<description>
 | 
									<parameter name="maxDist" type="double" unit="deg" default="105">
 | 
				
			||||||
						Minimum epicentral distance for computing mb. Note: According
 | 
										<description>
 | 
				
			||||||
						to the IASPEI recommendations in 2013, the minimum distance
 | 
										Maximum epicentral distance for computing mb.
 | 
				
			||||||
						should be 20 deg.
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
								</extend-struct>
 | 
				
			||||||
					<parameter name="maxDist" type="double" unit="deg" default="105">
 | 
					 | 
				
			||||||
						<description>
 | 
					 | 
				
			||||||
						Maximum epicentral distance for computing mb.
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
				</group>
 | 
					 | 
				
			||||||
			</group>
 | 
					 | 
				
			||||||
		</configuration>
 | 
							</configuration>
 | 
				
			||||||
	</binding>
 | 
						</binding>
 | 
				
			||||||
</seiscomp>
 | 
					</seiscomp>
 | 
				
			||||||
 | 
				
			|||||||
@ -11,25 +11,23 @@
 | 
				
			|||||||
		The body wave magnitude at teleseismic distances similar to mb.
 | 
							The body wave magnitude at teleseismic distances similar to mb.
 | 
				
			||||||
		</description>
 | 
							</description>
 | 
				
			||||||
		<configuration>
 | 
							<configuration>
 | 
				
			||||||
			<group name="magnitudes">
 | 
								<extend-struct type="GlobalBindingsMagnitudeProfile" match-name="mB">
 | 
				
			||||||
				<group name="mB">
 | 
									<description>
 | 
				
			||||||
 | 
									Parameters for computing mB magnitudes from mB amplitudes.
 | 
				
			||||||
 | 
									</description>
 | 
				
			||||||
 | 
									<parameter name="minDist" type="double" unit="deg" default="5">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Parameters for computing mB magnitudes from mB amplitudes.
 | 
										Minimum epicentral distance for computing mB. Note: According
 | 
				
			||||||
 | 
										to the IASPEI recommendations in 2013, the minimum distance
 | 
				
			||||||
 | 
										should be 20 deg.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
					<parameter name="minDist" type="double" unit="deg" default="5">
 | 
									</parameter>
 | 
				
			||||||
						<description>
 | 
									<parameter name="maxDist" type="double" unit="deg" default="105">
 | 
				
			||||||
						Minimum epicentral distance for computing mB. Note: According
 | 
										<description>
 | 
				
			||||||
						to the IASPEI recommendations in 2013, the minimum distance
 | 
										Maximum epicentral distance for computing mB.
 | 
				
			||||||
						should be 20 deg.
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
								</extend-struct>
 | 
				
			||||||
					<parameter name="maxDist" type="double" unit="deg" default="105">
 | 
					 | 
				
			||||||
						<description>
 | 
					 | 
				
			||||||
						Maximum epicentral distance for computing mB.
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
				</group>
 | 
					 | 
				
			||||||
			</group>
 | 
					 | 
				
			||||||
		</configuration>
 | 
							</configuration>
 | 
				
			||||||
	</binding>
 | 
						</binding>
 | 
				
			||||||
</seiscomp>
 | 
					</seiscomp>
 | 
				
			||||||
 | 
				
			|||||||
@ -17,19 +17,17 @@
 | 
				
			|||||||
		from the event.
 | 
							from the event.
 | 
				
			||||||
		</description>
 | 
							</description>
 | 
				
			||||||
		<configuration>
 | 
							<configuration>
 | 
				
			||||||
			<group name="magnitudes">
 | 
								<extend-struct type="GlobalBindingsMagnitudeProfile" match-name="mb(IDC)">
 | 
				
			||||||
				<group name="mb(IDC)">
 | 
									<parameter name="Q" type="path">
 | 
				
			||||||
					<parameter name="Q" type="path">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										Location of the station specific Q table. If not
 | 
				
			||||||
						Location of the station specific Q table. If not
 | 
										specified then @DATADIR@/magnitudes/IDC/qfvc.ml will be
 | 
				
			||||||
						specified then @DATADIR@/magnitudes/IDC/qfvc.ml will be
 | 
										used as fallback. {net}, {sta} and {loc} are placeholders
 | 
				
			||||||
						used as fallback. {net}, {sta} and {loc} are placeholders
 | 
										which will be replaced with the concrete network code,
 | 
				
			||||||
						which will be replaced with the concrete network code,
 | 
										station code and location code.
 | 
				
			||||||
						station code and location code.
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
								</extend-struct>
 | 
				
			||||||
				</group>
 | 
					 | 
				
			||||||
			</group>
 | 
					 | 
				
			||||||
		</configuration>
 | 
							</configuration>
 | 
				
			||||||
	</binding>
 | 
						</binding>
 | 
				
			||||||
</seiscomp>
 | 
					</seiscomp>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,115 +1,113 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
<seiscomp>
 | 
					<seiscomp>
 | 
				
			||||||
        <plugin name="Md">
 | 
						<plugin name="Md">
 | 
				
			||||||
                <extends>global</extends>
 | 
							<extends>global</extends>
 | 
				
			||||||
                <description>
 | 
							<description>
 | 
				
			||||||
                Duration magnitude plugin
 | 
							Duration magnitude plugin
 | 
				
			||||||
                </description>
 | 
							</description>
 | 
				
			||||||
	</plugin>
 | 
						</plugin>
 | 
				
			||||||
	<binding name="Md" module="global">
 | 
						<binding name="Md" module="global">
 | 
				
			||||||
		<description>
 | 
							<description>
 | 
				
			||||||
		Duration magnitude plugin
 | 
							Duration magnitude plugin
 | 
				
			||||||
		</description>
 | 
							</description>
 | 
				
			||||||
		<configuration>
 | 
							<configuration>
 | 
				
			||||||
			<group name="magnitudes">
 | 
								<extend-struct type="GlobalBindingsMagnitudeProfile" match-name="md">
 | 
				
			||||||
				<group name="md">
 | 
									<parameter name="seismo" type="int" default="9">
 | 
				
			||||||
					<parameter name="seismo" type="int" default="9">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										Default filter type to use before processing and after deconvolution. It's possible to set :
 | 
				
			||||||
						Default filter type to use before processing and after deconvolution. It's possible to set :
 | 
										1 for a Wood-Anderson seismometer
 | 
				
			||||||
						1 for a Wood-Anderson seismometer
 | 
										2 for a 5sec generic Seismometer
 | 
				
			||||||
						2 for a 5sec generic Seismometer
 | 
										3 for a WWSSN LP seismometer
 | 
				
			||||||
						3 for a WWSSN LP seismometer
 | 
										4 for a WSSN SP seismometer
 | 
				
			||||||
						4 for a WSSN SP seismometer
 | 
										5 for a Generic Seismometer
 | 
				
			||||||
						5 for a Generic Seismometer
 | 
										6 for a Butterworth Low pass filter
 | 
				
			||||||
						6 for a Butterworth Low pass filter
 | 
										7 for a Butterworth High pass filter
 | 
				
			||||||
						7 for a Butterworth High pass filter
 | 
										8 for a Butterworth Band pass filter
 | 
				
			||||||
						8 for a Butterworth Band pass filter
 | 
										9 for a 1Hz eigen-frequency L4C seismometer
 | 
				
			||||||
						9 for a 1Hz eigen-frequency L4C seismometer
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
									<parameter name="taper" type="double" default="5" unit="s">
 | 
				
			||||||
					<parameter name="taper" type="double" default="5" unit="s">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										taper applied to the signal
 | 
				
			||||||
						taper applied to the signal
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
									<parameter name="signal_length"  type="double" default="150" unit="s">
 | 
				
			||||||
					<parameter name="signal_length"  type="double" default="150" unit="s">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										signal length used to compute the duration magnitude
 | 
				
			||||||
						signal length used to compute the duration magnitude
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
									<parameter name="butterworth" type="string" default=""3,1.5"">
 | 
				
			||||||
					<parameter name="butterworth" type="string" default=""3,1.5"">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										Butterworth filter parameter applied to the signal
 | 
				
			||||||
						Butterworth filter parameter applied to the signal
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
									<parameter name="depthmax" type="double" default="200" unit="km">
 | 
				
			||||||
					<parameter name="depthmax" type="double" default="200" unit="km">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										Maximum depth at which duration magnitude is valid
 | 
				
			||||||
						Maximum depth at which duration magnitude is valid
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
									<parameter name="deltamax" type="double" default="400" unit="km">
 | 
				
			||||||
					<parameter name="deltamax" type="double" default="400" unit="km">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										Maximum distance between earthquake and station at which duration magnitude is valid
 | 
				
			||||||
						Maximum distance between earthquake and station at which duration magnitude is valid
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
									<parameter name="snrmin" type="double" default="1.2">
 | 
				
			||||||
					<parameter name="snrmin" type="double" default="1.2">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										Signal to noise ratio below which the coda is reached
 | 
				
			||||||
						Signal to noise ratio below which the coda is reached
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
									<parameter name="mdmax" type="double" default="5.0">
 | 
				
			||||||
					<parameter name="mdmax" type="double" default="5.0">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										Maximum expected duration magnitude value
 | 
				
			||||||
						Maximum expected duration magnitude value
 | 
										This is used to find how much data should be loaded for a given station by reversing the formula
 | 
				
			||||||
						This is used to find how much data should be loaded for a given station by reversing the formula
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
									<parameter name="fma" type="double" default="-0.87">
 | 
				
			||||||
					<parameter name="fma" type="double" default="-0.87">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										FMA regional coefficient
 | 
				
			||||||
						FMA regional coefficient
 | 
										See Hypo2000 manual
 | 
				
			||||||
						See Hypo2000 manual
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
									<parameter name="fmb" type="double" default="2.0">
 | 
				
			||||||
					<parameter name="fmb" type="double" default="2.0">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										FMB regional coefficient
 | 
				
			||||||
						FMB regional coefficient
 | 
										See Hypo2000 manual
 | 
				
			||||||
						See Hypo2000 manual
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
									<parameter name="fmd" type="double" default="0.0035">
 | 
				
			||||||
					<parameter name="fmd" type="double" default="0.0035">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										FMD regional coefficient
 | 
				
			||||||
						FMD regional coefficient
 | 
										See Hypo2000 manual
 | 
				
			||||||
						See Hypo2000 manual
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
									<parameter name="fmf" type="double" default="0.0">
 | 
				
			||||||
					<parameter name="fmf" type="double" default="0.0">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										FMF regional coefficient
 | 
				
			||||||
						FMF regional coefficient
 | 
										See Hypo2000 manual
 | 
				
			||||||
						See Hypo2000 manual
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
									<parameter name="fmz" type="double" default="0.0">
 | 
				
			||||||
					<parameter name="fmz" type="double" default="0.0">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										FMZ regional coefficient
 | 
				
			||||||
						FMZ regional coefficient
 | 
										See Hypo2000 manual
 | 
				
			||||||
						See Hypo2000 manual
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
									<parameter name="linearcorrection" type="double" default="1.0">
 | 
				
			||||||
					<parameter name="linearcorrection" type="double" default="1.0">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										Linear correction
 | 
				
			||||||
						Linear correction
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
									<parameter name="offset" type="double" default="0.0">
 | 
				
			||||||
					<parameter name="offset" type="double" default="0.0">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										Offset
 | 
				
			||||||
						Offset
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
									<parameter name="stacor" type="double" default="0.0">
 | 
				
			||||||
					<parameter name="stacor" type="double" default="0.0">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										Station correction
 | 
				
			||||||
						Station correction
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
								</extend-struct>
 | 
				
			||||||
				</group>
 | 
					 | 
				
			||||||
			</group>
 | 
					 | 
				
			||||||
		</configuration>
 | 
							</configuration>
 | 
				
			||||||
	</binding>
 | 
						</binding>
 | 
				
			||||||
</seiscomp>
 | 
					</seiscomp>
 | 
				
			||||||
 | 
				
			|||||||
@ -25,74 +25,76 @@
 | 
				
			|||||||
		Standard local (Richter) magnitude
 | 
							Standard local (Richter) magnitude
 | 
				
			||||||
		</description>
 | 
							</description>
 | 
				
			||||||
		<configuration>
 | 
							<configuration>
 | 
				
			||||||
			<group name="amplitudes">
 | 
								<extend-struct type="GlobalBindingsAmplitudeProfile" match-name="ML">
 | 
				
			||||||
				<group name="ML">
 | 
									<description>
 | 
				
			||||||
 | 
									Parameters for measuring ML amplitudes. Add more parameters
 | 
				
			||||||
 | 
									by adding an amplitude type profile 'ML',
 | 
				
			||||||
 | 
									</description>
 | 
				
			||||||
 | 
									<parameter name="minSNR" type="double" default="0"/>
 | 
				
			||||||
 | 
									<parameter name="maxDist" type="string" unit="deg" default="8"/>
 | 
				
			||||||
 | 
									<parameter name="maxDepth" type="string" unit="km" default="80"/>
 | 
				
			||||||
 | 
									<parameter name="signalEnd" type="string" unit="time grammar" default="min(R / 3 + 30, 150)"/>
 | 
				
			||||||
 | 
									<parameter name="preFilter" type="string" default="">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Parameters for measuring ML amplitudes. Add more parameters
 | 
										The filter applied to raw records before applying
 | 
				
			||||||
					by adding an amplitude type profile 'ML',
 | 
										Wood-Anderson simulation. Default: no pre-filtering.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
					<parameter name="preFilter" type="string" default="">
 | 
									</parameter>
 | 
				
			||||||
						<description>
 | 
									<parameter name="applyWoodAnderson" type="boolean" default="true">
 | 
				
			||||||
						The filter applied to raw records before applying
 | 
					 | 
				
			||||||
						Wood-Anderson simulation. Default: no pre-filtering.
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
					<parameter name="measureType" type="string" default="AbsMax">
 | 
					 | 
				
			||||||
						<description>
 | 
					 | 
				
			||||||
						This parameter allows to set how the amplitude is measured.
 | 
					 | 
				
			||||||
						Either by finding the absolute maximum of the demeaned
 | 
					 | 
				
			||||||
						trace (AbsMax), the difference of maximum and minimum of
 | 
					 | 
				
			||||||
						the signal window (MinMax) or the maximum peak-trough
 | 
					 | 
				
			||||||
						of one cycle (PeakTrough).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
						Note that if absMax is already explicitly configured, this
 | 
					 | 
				
			||||||
						parameter has no effect.
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
					<parameter name="combiner" type="string" default="average">
 | 
					 | 
				
			||||||
						<description>
 | 
					 | 
				
			||||||
						Defines the combiner operation for the amplitudes measured
 | 
					 | 
				
			||||||
						on either both horizontal component. The default is to
 | 
					 | 
				
			||||||
						use the average. Allowed values are: "average",
 | 
					 | 
				
			||||||
						"min", "max" and "geometric_mean".
 | 
					 | 
				
			||||||
						"geometric_mean" corresponds to averaging single-trace
 | 
					 | 
				
			||||||
						magnitudes instead of their amplitudes.
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
				</group>
 | 
					 | 
				
			||||||
			</group>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			<group name="magnitudes">
 | 
					 | 
				
			||||||
				<group name="ML">
 | 
					 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Parameters for computing ML magnitudes from ML amplitudes.
 | 
										Applying Wood-Anderson simulation. To achieve displacement
 | 
				
			||||||
 | 
										records without WA simulation, an integration filter can
 | 
				
			||||||
 | 
										be applied with the pre-filter.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
					<parameter name="logA0" type="string" default="0:-1.3,60:-2.8,100:-3.0,400:-4.5,1000:-5.85">
 | 
									</parameter>
 | 
				
			||||||
						<description>
 | 
									<parameter name="measureType" type="string" default="AbsMax">
 | 
				
			||||||
						The calibration function log10(A0).
 | 
										<description>
 | 
				
			||||||
 | 
										This parameter allows to set how the amplitude is measured.
 | 
				
			||||||
 | 
										Either by finding the absolute maximum of the demeaned
 | 
				
			||||||
 | 
										trace (AbsMax), the difference of maximum and minimum of
 | 
				
			||||||
 | 
										the signal window (MinMax) or the maximum peak-trough
 | 
				
			||||||
 | 
										of one cycle (PeakTrough).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						Format: any list of distance-value pairs separated by
 | 
										Note that if absMax is already explicitly configured, this
 | 
				
			||||||
						comma. Values within pairs are separated by colon.
 | 
										parameter has no effect.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="combiner" type="string" default="average">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										Defines the combiner operation for the amplitudes measured
 | 
				
			||||||
 | 
										on either both horizontal component. The default is to
 | 
				
			||||||
 | 
										use the average. Allowed values are: "average",
 | 
				
			||||||
 | 
										"min", "max" and "geometric_mean".
 | 
				
			||||||
 | 
										"geometric_mean" corresponds to averaging single-trace
 | 
				
			||||||
 | 
										magnitudes instead of their amplitudes.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
								</extend-struct>
 | 
				
			||||||
 | 
								<extend-struct type="GlobalBindingsMagnitudeProfile" match-name="ML">
 | 
				
			||||||
 | 
									<description>
 | 
				
			||||||
 | 
									Parameters for computing ML magnitudes from ML amplitudes.
 | 
				
			||||||
 | 
									</description>
 | 
				
			||||||
 | 
									<parameter name="maxDist" type="string" unit="deg" default="8"/>
 | 
				
			||||||
 | 
									<parameter name="maxDepth" type="string" unit="km" default="80"/>
 | 
				
			||||||
 | 
									<parameter name="logA0" type="string" default="0:-1.3,60:-2.8,100:-3.0,400:-4.5,1000:-5.85">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										The calibration function log10(A0).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						Example: "0:-1.3,60:-2.8,100:-3.0,400:-4.5,1000:-5.85"
 | 
										Format: any list of distance-value pairs separated by
 | 
				
			||||||
						specifies 4 distance intervals from
 | 
										comma. Values within pairs are separated by colon.
 | 
				
			||||||
						0...60, 60...100, 100...400 and 400...1000 km distance.
 | 
					 | 
				
			||||||
						Within these intervals log10(A0) is interpolated linearly
 | 
					 | 
				
			||||||
						between -1.3...-2.8, -2.8...-3.0, -3.0...-4.5 and -4.5...-5.8,
 | 
					 | 
				
			||||||
						respectively.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
						Note: The first and last distance samples limit the
 | 
										Example: "0:-1.3,60:-2.8,100:-3.0,400:-4.5,1000:-5.85"
 | 
				
			||||||
						maximum distance range for computing ML.
 | 
										specifies 4 distance intervals from
 | 
				
			||||||
						</description>
 | 
										0...60, 60...100, 100...400 and 400...1000 km distance.
 | 
				
			||||||
					</parameter>
 | 
										Within these intervals log10(A0) is interpolated linearly
 | 
				
			||||||
					<parameter name="maxDistanceKm" type="double" unit="km" default="-1.0">
 | 
										between -1.3...-2.8, -2.8...-3.0, -3.0...-4.5 and -4.5...-5.8,
 | 
				
			||||||
						<description>
 | 
										respectively.
 | 
				
			||||||
							Maximum epicentral distance for computing ML.
 | 
					
 | 
				
			||||||
							No distance limitation for maxDistanceKm = -1.
 | 
										Note: The first and last distance samples limit the
 | 
				
			||||||
						</description>
 | 
										maximum distance range for computing ML.
 | 
				
			||||||
					</parameter>
 | 
										</description>
 | 
				
			||||||
				</group>
 | 
									</parameter>
 | 
				
			||||||
			</group>
 | 
								</extend-struct>
 | 
				
			||||||
		</configuration>
 | 
							</configuration>
 | 
				
			||||||
	</binding>
 | 
						</binding>
 | 
				
			||||||
</seiscomp>
 | 
					</seiscomp>
 | 
				
			||||||
 | 
				
			|||||||
@ -11,19 +11,17 @@
 | 
				
			|||||||
		CTBTO/IDC local magnitude.
 | 
							CTBTO/IDC local magnitude.
 | 
				
			||||||
		</description>
 | 
							</description>
 | 
				
			||||||
		<configuration>
 | 
							<configuration>
 | 
				
			||||||
			<group name="magnitudes">
 | 
								<extend-struct type="GlobalBindingsMagnitudeProfile" match-name="ML(IDC)">
 | 
				
			||||||
				<group name="ML(IDC)">
 | 
									<parameter name="A" type="path">
 | 
				
			||||||
					<parameter name="A" type="path">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										Location of the station specific attenuation table. If not
 | 
				
			||||||
						Location of the station specific attenuation table. If not
 | 
										specified then @DATADIR@/magnitudes/IDC/global.ml will be
 | 
				
			||||||
						specified then @DATADIR@/magnitudes/IDC/global.ml will be
 | 
										used as fallback. {net}, {sta} and {loc} are placeholders
 | 
				
			||||||
						used as fallback. {net}, {sta} and {loc} are placeholders
 | 
										which will be replaced with the concrete network code,
 | 
				
			||||||
						which will be replaced with the concrete network code,
 | 
										station code and location code.
 | 
				
			||||||
						station code and location code.
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
								</extend-struct>
 | 
				
			||||||
				</group>
 | 
					 | 
				
			||||||
			</group>
 | 
					 | 
				
			||||||
		</configuration>
 | 
							</configuration>
 | 
				
			||||||
	</binding>
 | 
						</binding>
 | 
				
			||||||
</seiscomp>
 | 
					</seiscomp>
 | 
				
			||||||
 | 
				
			|||||||
@ -101,188 +101,219 @@
 | 
				
			|||||||
		Custom magnitude for local events measured on horizontal components
 | 
							Custom magnitude for local events measured on horizontal components
 | 
				
			||||||
		</description>
 | 
							</description>
 | 
				
			||||||
		<configuration>
 | 
							<configuration>
 | 
				
			||||||
			<group name="amplitudes">
 | 
								<extend-struct type="GlobalBindingsAmplitudeProfile" match-name="MLc">
 | 
				
			||||||
				<group name="MLc">
 | 
									<description>
 | 
				
			||||||
 | 
									Parameters for measuring MLc amplitudes. Add more parameters
 | 
				
			||||||
 | 
									by adding an amplitude type profile 'MLc',
 | 
				
			||||||
 | 
									</description>
 | 
				
			||||||
 | 
									<parameter name="minSNR" type="double" default="0"/>
 | 
				
			||||||
 | 
									<parameter name="maxDist" type="string" unit="deg" default="8"/>
 | 
				
			||||||
 | 
									<parameter name="minDepth" type="string" unit="km" default="-10"/>
 | 
				
			||||||
 | 
									<parameter name="maxDepth" type="string" unit="km" default="80"/>
 | 
				
			||||||
 | 
									<parameter name="signalEnd" type="string" unit="time grammar" default="min(R / 3 + 30, 150)"/>
 | 
				
			||||||
 | 
									<parameter name="preFilter" type="string" default="BW(3,0.5,12)">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Parameters for measuring MLc amplitudes. Add more parameters
 | 
										The filter applied to raw records before applying
 | 
				
			||||||
					by adding an amplitude type profile 'MLc',
 | 
										Wood-Anderson simulation.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
					<parameter name="preFilter" type="string" default="BW(3,0.5,12)">
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="applyWoodAnderson" type="boolean" default="true">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										Applying Wood-Anderson simulation. To achieve displacement
 | 
				
			||||||
 | 
										records without WA simulation, an integration filter can
 | 
				
			||||||
 | 
										be applied with the pre-filter.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="amplitudeScale" type="string" default="1.0">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										Scaling value multiplied to the measured amplitudes to
 | 
				
			||||||
 | 
										match the amplitude units expected by the magnitude
 | 
				
			||||||
 | 
										calibration function.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										Expected amplitudes are
 | 
				
			||||||
 | 
										in units of mym but actual amplitudes provided from
 | 
				
			||||||
 | 
										Wood-Anderson-corrected seismograms are in units of mm:
 | 
				
			||||||
 | 
										amplitudeScale = 1000.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										If data are not corrected for WA, measured amplitudes
 | 
				
			||||||
 | 
										take the unit of gain-corrected data considering the
 | 
				
			||||||
 | 
										preFilter:
 | 
				
			||||||
 | 
										amplitudeScale converts between units of measured and
 | 
				
			||||||
 | 
										excpected amplitude.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="measureType" type="string" default="AbsMax" values="AbsMax,MinMax,PeakTrough">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										Type for measuring amplitudes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										AbsMax: absolute maximum
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										MinMax: half difference between absolute maximum and minimum
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										PeakTrough: half difference between maximum and minimum
 | 
				
			||||||
 | 
										on a half cycle
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="combiner" type="string" default="max" values="min,max,average,geometric_mean">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										Define how to combine the amplitudes measured on both
 | 
				
			||||||
 | 
										horizontals components:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										min: take the minimum
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										max: take the maxium
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										avgerage: form the average
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										geometric_mean: form the geometric mean
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
								</extend-struct>
 | 
				
			||||||
 | 
								<extend-struct type="GlobalBindingsMagnitudeProfile" match-name="MLc">
 | 
				
			||||||
 | 
									<description>
 | 
				
			||||||
 | 
									Parameters for computing MLc magnitudes from MLc amplitudes.
 | 
				
			||||||
 | 
									</description>
 | 
				
			||||||
 | 
									<parameter name="maxDist" type="string" unit="deg" default="8"/>
 | 
				
			||||||
 | 
									<parameter name="maxDepth" type="string" unit="km" default="80"/>
 | 
				
			||||||
 | 
									<parameter name="distMode" type="string" default="hypocentral" values="hypocentral,epicentral">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										Considered distance measure between source and receiver.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										hypocentral: hypocentral distance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										epicentral: epicentral distance
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="minDist" type="double" default="-1.0" unit="deg">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										The minimum distance for computing magnitudes from amplitudes.
 | 
				
			||||||
 | 
										Negative values deactivate the check.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="maxDist" type="double" default="8" unit="deg">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										The maximum distance for computing magnitudes from amplitudes.
 | 
				
			||||||
 | 
										Negative values deactivate the check.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="minDepth" type="double" default="-10" unit="km">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										The minimum source depth below which magnitudes are computed.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="maxDepth" type="double" default="80" unit="km">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										The maximum source depth up to which magnitudes are computed.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="calibrationType" type="string" default=""parametric"" unit="" values="parametric,A0">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										Type of magnitude calibration formula to be considered.
 | 
				
			||||||
 | 
										The calibration parameters are considered accordingly.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										"parametric": consider parameters of parametric
 | 
				
			||||||
 | 
										configuration in parametric section
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										"A0": consider parameters of non-parametric
 | 
				
			||||||
 | 
										configuration in A0 section.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<group name="A0">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										Parameters for A0, non-parametric magnitude calibration.
 | 
				
			||||||
 | 
										Considered if magnitude.MLc.calibrationType = "A0".
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
										<parameter name="logA0" type="string" default="0:-1.3,60:-2.8,100:-3.0,400:-4.5,1000:-5.85">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						The filter applied to raw records before applying
 | 
											The non-parametric calibration function log10(A0).
 | 
				
			||||||
						Wood-Anderson simulation.
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
					<parameter name="applyWoodAnderson" type="boolean" default="true">
 | 
					 | 
				
			||||||
						<description>
 | 
					 | 
				
			||||||
						Applying Wood-Anderson simulation. To achieve displacement
 | 
					 | 
				
			||||||
						records without WA simulation, an integration filter can
 | 
					 | 
				
			||||||
						be applied with the pre-filter.
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
					<parameter name="amplitudeScale" type="string" default="1.0">
 | 
					 | 
				
			||||||
						<description>
 | 
					 | 
				
			||||||
						Scaling value multiplied to the measured amplitudes to
 | 
					 | 
				
			||||||
						match the amplitude units expected by the magnitude
 | 
					 | 
				
			||||||
						calibration function.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
						Expected amplitudes are
 | 
											Format: any list of distance-value pairs separated by
 | 
				
			||||||
						in units of mym but actual amplitudes provided from
 | 
											comma. Values within pairs are separated by colon.
 | 
				
			||||||
						Wood-Anderson-corrected seismograms are in units of mm:
 | 
					 | 
				
			||||||
						amplitudeScale = 1000.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
						If data are not corrected for WA, measured amplitudes
 | 
											Example: "0:-1.3,60:-2.8,100:-3.0,400:-4.5,1000:-5.85"
 | 
				
			||||||
						take the unit of gain-corrected data considering the
 | 
											specifies 4 distance intervals from
 | 
				
			||||||
						preFilter:
 | 
											0...60, 60...100, 100...400 and 400...1000 km distance.
 | 
				
			||||||
						amplitudeScale converts between units of measured and
 | 
											Within these intervals log10(A0) is interpolated linearly
 | 
				
			||||||
						excpected amplitude.
 | 
											between -1.3...-2.8, -2.8...-3.0, -3.0...-4.5 and -4.5...-5.8,
 | 
				
			||||||
						</description>
 | 
											respectively.
 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
					<parameter name="measureType" type="string" default="AbsMax">
 | 
					 | 
				
			||||||
						<description>
 | 
					 | 
				
			||||||
						Type for measuring amplitudes. Available:
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
						AbsMax: absolute maximum
 | 
											Note: The first and last distance samples limit the
 | 
				
			||||||
 | 
											maximum distance range for computing MLv.
 | 
				
			||||||
						MinMax: half difference between absolute maximum and minimum
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
						PeakTrough: half difference between maximum and minimum
 | 
					 | 
				
			||||||
						on a half cycle
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
					<parameter name="combiner" type="string" default="max">
 | 
					 | 
				
			||||||
						<description>
 | 
					 | 
				
			||||||
						Define how to combine the amplitudes measured on both
 | 
					 | 
				
			||||||
						horizontals components:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
						min: take the minimum
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
						max: take the maxium
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
						avgerage: form the average
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
						geometric_mean: form the geometric mean
 | 
					 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
				</group>
 | 
									</group>
 | 
				
			||||||
			</group>
 | 
									<group name="parametric">
 | 
				
			||||||
			<group name="magnitudes">
 | 
					 | 
				
			||||||
				<group name="MLc">
 | 
					 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Parameters for computing MLc magnitudes from MLc amplitudes.
 | 
										Parameters for parametric magnitude calibration:
 | 
				
			||||||
 | 
										MLc = log10(A) + c7 * e^(c8 * r) + c6 * h + c3 * log10(r / c5) + c2 * (r + c4) + c1 + c0(station)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										Considered if magnitude.MLc.calibrationType = "parametric".
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
					<parameter name="distMode" type="string" default="hypocentral">
 | 
										<parameter name="c0" type="double" default="0.0">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						Considered distance measure between source and receiver.
 | 
											Station correction. This is the calibration value 'c0'
 | 
				
			||||||
						Possible values are
 | 
											applied in the
 | 
				
			||||||
 | 
											parametric magnitude calibration formula.
 | 
				
			||||||
						hypocentral: hypocentral distance
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
						epicentral: epicentral distance
 | 
					 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="minDist" type="double" default="-1.0" unit="deg">
 | 
										<parameter name="c1" type="double" default="0.69">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						The minimum distance for computing magnitudes from amplitudes.
 | 
											The calibration value 'c1' applied in the
 | 
				
			||||||
						Negative values deactivate the check.
 | 
											parametric magnitude calibration formula.
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="maxDist" type="double" default="8" unit="deg">
 | 
										<parameter name="c2" type="double"  default="0.00095">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						The maximum distance for computing magnitudes from amplitudes.
 | 
											The calibration value 'c2' applied in the
 | 
				
			||||||
						Negative values deactivate the check.
 | 
											magnitude calibration formula
 | 
				
			||||||
 | 
											parametric magnitude calibration formula.
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="maxDepth" type="double" default="80" unit="km">
 | 
										<parameter name="c3" type="double" default="1.11">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						The maximum source depth up to which magnitudes are computed.
 | 
											The calibration value 'c3' applied in the
 | 
				
			||||||
 | 
											parametric magnitude calibration formula.
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<parameter name="calibrationType" type="string" default=""parametric"" unit="">
 | 
										<parameter name="c4" type="double" default="0.0">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						Type of magnitude calibration formula to be considered.
 | 
											The calibration value 'c4' applied in the
 | 
				
			||||||
						The calibration parameters are considered accordingly.
 | 
											parametric magnitude calibration formula.
 | 
				
			||||||
						Currently supported are
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
						"parametric": consider parameters of parametric
 | 
					 | 
				
			||||||
						configuration in parametric section
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
						"A0": consider parameters of non-parametric
 | 
					 | 
				
			||||||
						configuration in A0 section.
 | 
					 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
					</parameter>
 | 
										</parameter>
 | 
				
			||||||
					<group name="A0">
 | 
										<parameter name="c5" type="double" default="1.0">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						Parameters for A0, non-parametric magnitude calibration.
 | 
											The calibration value 'c5' applied in the
 | 
				
			||||||
						Considered if magnitude.MLc.calibrationType = "A0".
 | 
											parametric magnitude calibration formula.
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
						<parameter name="logA0" type="string" default="0:-1.3,60:-2.8,100:-3.0,400:-4.5,1000:-5.85">
 | 
										</parameter>
 | 
				
			||||||
							<description>
 | 
										<parameter name="c6" type="double" default="0.0">
 | 
				
			||||||
							The non-parametric calibration function log10(A0).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
							Format: any list of distance-value pairs separated by
 | 
					 | 
				
			||||||
							comma. Values within pairs are separated by colon.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
							Example: "0:-1.3,60:-2.8,100:-3.0,400:-4.5,1000:-5.85"
 | 
					 | 
				
			||||||
							specifies 4 distance intervals from
 | 
					 | 
				
			||||||
							0...60, 60...100, 100...400 and 400...1000 km distance.
 | 
					 | 
				
			||||||
							Within these intervals log10(A0) is interpolated linearly
 | 
					 | 
				
			||||||
							between -1.3...-2.8, -2.8...-3.0, -3.0...-4.5 and -4.5...-5.8,
 | 
					 | 
				
			||||||
							respectively.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
							Note: The first and last distance samples limit the
 | 
					 | 
				
			||||||
							maximum distance range for computing MLv.
 | 
					 | 
				
			||||||
							</description>
 | 
					 | 
				
			||||||
						</parameter>
 | 
					 | 
				
			||||||
					</group>
 | 
					 | 
				
			||||||
					<group name="parametric">
 | 
					 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
						Parameters for parametric magnitude calibration:
 | 
											The calibration value 'c6' applied in the
 | 
				
			||||||
						MLc = log10(A) + c3 * log10(r/c5) + c2 * (r + c4) + c1 + c0(station)
 | 
											parametric magnitude calibration formula.
 | 
				
			||||||
 | 
					 | 
				
			||||||
						Considered if magnitude.MLc.calibrationType = "parametric".
 | 
					 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
						<parameter name="c0" type="double" default="0.0">
 | 
										</parameter>
 | 
				
			||||||
							<description>
 | 
										<parameter name="c7" type="double" default="0.0">
 | 
				
			||||||
							Station correction. This is the calibration value 'c0'
 | 
											<description>
 | 
				
			||||||
							applied in the
 | 
											The calibration value 'c7' applied in the
 | 
				
			||||||
							parametric magnitude calibration formula.
 | 
											parametric magnitude calibration formula.
 | 
				
			||||||
							</description>
 | 
											</description>
 | 
				
			||||||
						</parameter>
 | 
										</parameter>
 | 
				
			||||||
						<parameter name="c1" type="double" default="0.69">
 | 
										<parameter name="c8" type="double" default="0.0">
 | 
				
			||||||
							<description>
 | 
											<description>
 | 
				
			||||||
							The calibration value 'c1' applied in the
 | 
											The calibration value 'c8' applied in the
 | 
				
			||||||
							parametric magnitude calibration formula.
 | 
											parametric magnitude calibration formula.
 | 
				
			||||||
							</description>
 | 
											</description>
 | 
				
			||||||
						</parameter>
 | 
										</parameter>
 | 
				
			||||||
						<parameter name="c2" type="double"  default="0.00095">
 | 
										<parameter name="H" type="double" default="40" unit="km">
 | 
				
			||||||
							<description>
 | 
											<description>
 | 
				
			||||||
							The calibration value 'c2' applied in the
 | 
											The calibration value 'H' applied in the
 | 
				
			||||||
							magnitude calibration formula
 | 
											parametric magnitude calibration formula for forming
 | 
				
			||||||
							parametric magnitude calibration formula.
 | 
											h. Read the documentation.
 | 
				
			||||||
							</description>
 | 
											</description>
 | 
				
			||||||
						</parameter>
 | 
										</parameter>
 | 
				
			||||||
						<parameter name="c3" type="double" default="1.11">
 | 
					 | 
				
			||||||
							<description>
 | 
					 | 
				
			||||||
							The calibration value 'c3' applied in the
 | 
					 | 
				
			||||||
							parametric magnitude calibration formula.
 | 
					 | 
				
			||||||
							</description>
 | 
					 | 
				
			||||||
						</parameter>
 | 
					 | 
				
			||||||
						<parameter name="c4" type="double" default="0.0">
 | 
					 | 
				
			||||||
							<description>
 | 
					 | 
				
			||||||
							The calibration value 'c4' applied in the
 | 
					 | 
				
			||||||
							parametric magnitude calibration formula.
 | 
					 | 
				
			||||||
							</description>
 | 
					 | 
				
			||||||
						</parameter>
 | 
					 | 
				
			||||||
						<parameter name="c5" type="double" default="1.0">
 | 
					 | 
				
			||||||
							<description>
 | 
					 | 
				
			||||||
							The calibration value 'c5' applied in the
 | 
					 | 
				
			||||||
							parametric magnitude calibration formula.
 | 
					 | 
				
			||||||
							</description>
 | 
					 | 
				
			||||||
						</parameter>
 | 
					 | 
				
			||||||
					</group>
 | 
					 | 
				
			||||||
				</group>
 | 
									</group>
 | 
				
			||||||
			</group>
 | 
								</extend-struct>
 | 
				
			||||||
		</configuration>
 | 
							</configuration>
 | 
				
			||||||
	</binding>
 | 
						</binding>
 | 
				
			||||||
</seiscomp>
 | 
					</seiscomp>
 | 
				
			||||||
 | 
				
			|||||||
@ -16,42 +16,38 @@
 | 
				
			|||||||
		at the Liverpool developer meeting.
 | 
							at the Liverpool developer meeting.
 | 
				
			||||||
		</description>
 | 
							</description>
 | 
				
			||||||
		<configuration>
 | 
							<configuration>
 | 
				
			||||||
			<group name="amplitudes">
 | 
								<extend-struct type="GlobalBindingsAmplitudeProfile" match-name="MLh">
 | 
				
			||||||
				<group name="MLh">
 | 
									<parameter name="maxavg" type="string" default="max">
 | 
				
			||||||
					<parameter name="maxavg" type="string" default="max">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										Define combiner operation for both horizontals (min, max, avg).
 | 
				
			||||||
						Define combiner operation for both horizontals (min, max, avg).
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
									<parameter name="ClippingThreshold" type="double">
 | 
				
			||||||
					<parameter name="ClippingThreshold" type="double">
 | 
										<description>
 | 
				
			||||||
						<description>
 | 
										MLh clipping level, in raw counts, eg. 80% of 2^23 = 6710886.
 | 
				
			||||||
						MLh clipping level, in raw counts, eg. 80% of 2^23 = 6710886.
 | 
										</description>
 | 
				
			||||||
						</description>
 | 
									</parameter>
 | 
				
			||||||
					</parameter>
 | 
								</extend-struct>
 | 
				
			||||||
				</group>
 | 
								<extend-struct type="GlobalBindingsMagnitudeProfile" match-name="MLh">
 | 
				
			||||||
			</group>
 | 
									<parameter name="params" type="string">
 | 
				
			||||||
			<group name="magnitudes">
 | 
										<description>
 | 
				
			||||||
				<group name="MLh">
 | 
										Defines attenuation parameters for MLh.
 | 
				
			||||||
					<parameter name="params" type="string">
 | 
										Format: "UpToKilometers A B; UpToNextKilometers A B;".
 | 
				
			||||||
						<description>
 | 
										Example: "30 nomag; 60 0.018 2.17; 700 0.0038 3.02".
 | 
				
			||||||
						Defines attenuation parameters for MLh.
 | 
										The first parameter set "30 nomag" means that up to 30km
 | 
				
			||||||
						Format: "UpToKilometers A B; UpToNextKilometers A B;".
 | 
										from the sensor the magnitude should not be calculated.
 | 
				
			||||||
						Example: "30 nomag; 60 0.018 2.17; 700 0.0038 3.02".
 | 
					 | 
				
			||||||
						The first parameter set "30 nomag" means that up to 30km
 | 
					 | 
				
			||||||
						from the sensor the magnitude should not be calculated.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
						Note: No MLh computation if params is empty.
 | 
										Note: No MLh computation if params is empty.
 | 
				
			||||||
						</description>
 | 
										</description>
 | 
				
			||||||
					</parameter>
 | 
									</parameter>
 | 
				
			||||||
					<parameter name="maxDepth" type="double" unit="km" default="80" >
 | 
									<parameter name="maxDepth" type="double" unit="km" default="80" >
 | 
				
			||||||
						<description>
 | 
										<description>
 | 
				
			||||||
							Maximum depth allowed to compute the magnitude. Make sure to
 | 
											Maximum depth allowed to compute the magnitude. Make sure to
 | 
				
			||||||
							also update the MLh amplitude bindings accordingly to this
 | 
											also update the MLh amplitude bindings accordingly to this
 | 
				
			||||||
							value. maxDepth should not be greater than 80km. 
 | 
											value. maxDepth should not be greater than 80km.
 | 
				
			||||||
						</description>
 | 
										</description>
 | 
				
			||||||
					</parameter>
 | 
									</parameter>
 | 
				
			||||||
				</group>
 | 
								</extend-struct>
 | 
				
			||||||
			</group>
 | 
					 | 
				
			||||||
		</configuration>
 | 
							</configuration>
 | 
				
			||||||
	</binding>
 | 
						</binding>
 | 
				
			||||||
</seiscomp>
 | 
					</seiscomp>
 | 
				
			||||||
 | 
				
			|||||||
@ -8,26 +8,24 @@
 | 
				
			|||||||
	</plugin>
 | 
						</plugin>
 | 
				
			||||||
	<binding name="MLr" module="global">
 | 
						<binding name="MLr" module="global">
 | 
				
			||||||
		<configuration>
 | 
							<configuration>
 | 
				
			||||||
			<group name="magnitudes">
 | 
								<extend-struct type="GlobalBindingsMagnitudeProfile" match-name="MLr">
 | 
				
			||||||
				<group name="MLr">
 | 
									<description>
 | 
				
			||||||
 | 
									Parameter for computing MLr magnitudes for GNS/Geonet from MLv amplitudes.
 | 
				
			||||||
 | 
									</description>
 | 
				
			||||||
 | 
									<parameter name="params" type="string">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Parameter for computing MLr magnitudes for GNS/Geonet from MLv amplitudes.
 | 
										Defines Stations Corrections parameters for MLr (GNS/Geonet Local magnitude).
 | 
				
			||||||
					</description>
 | 
										Format: "UpToKilometers A ; UpToNextKilometers A ;".
 | 
				
			||||||
					<parameter name="params" type="string">
 | 
										Example: "30 nomag; 60 0.018 ; 700 0.0038 ".
 | 
				
			||||||
						<description>
 | 
										The first parameter set "30 nomag" means that up to 30km
 | 
				
			||||||
						Defines Stations Corrections parameters for MLr (GNS/Geonet Local magnitude).
 | 
										from the sensor the magnitude should not be calculated.
 | 
				
			||||||
						Format: "UpToKilometers A ; UpToNextKilometers A ;".
 | 
										A is used as station correction.
 | 
				
			||||||
						Example: "30 nomag; 60 0.018 ; 700 0.0038 ".
 | 
										"nomag" is used to disable station magnitudes.
 | 
				
			||||||
						The first parameter set "30 nomag" means that up to 30km
 | 
					 | 
				
			||||||
						from the sensor the magnitude should not be calculated.
 | 
					 | 
				
			||||||
						A is used as station correction.
 | 
					 | 
				
			||||||
						"nomag" is used to disable station magnitudes.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
						Note: No MLr computation if params is empty.
 | 
										Note: No MLr computation if params is empty.
 | 
				
			||||||
						</description>
 | 
										</description>
 | 
				
			||||||
					</parameter>
 | 
									</parameter>
 | 
				
			||||||
				</group>
 | 
								</extend-struct>
 | 
				
			||||||
			</group>
 | 
					 | 
				
			||||||
		</configuration>
 | 
							</configuration>
 | 
				
			||||||
	</binding>
 | 
						</binding>
 | 
				
			||||||
</seiscomp>
 | 
					</seiscomp>
 | 
				
			||||||
 | 
				
			|||||||
@ -25,64 +25,67 @@
 | 
				
			|||||||
		Local (Richter) magnitude measured on the vertical component
 | 
							Local (Richter) magnitude measured on the vertical component
 | 
				
			||||||
		</description>
 | 
							</description>
 | 
				
			||||||
		<configuration>
 | 
							<configuration>
 | 
				
			||||||
			<group name="amplitudes">
 | 
								<extend-struct type="GlobalBindingsAmplitudeProfile" match-name="MLv">
 | 
				
			||||||
				<group name="MLv">
 | 
									<description>
 | 
				
			||||||
 | 
									Parameters for measuring MLv amplitudes. Add more parameters
 | 
				
			||||||
 | 
									by adding an amplitude type profile 'MLv',
 | 
				
			||||||
 | 
									</description>
 | 
				
			||||||
 | 
									<!-- Override defaults -->
 | 
				
			||||||
 | 
									<parameter name="minSNR" type="double" default="0"/>
 | 
				
			||||||
 | 
									<parameter name="maxDist" type="string" unit="deg" default="8"/>
 | 
				
			||||||
 | 
									<parameter name="maxDepth" type="string" unit="km" default="1000"/>
 | 
				
			||||||
 | 
									<parameter name="signalEnd" type="string" unit="time grammar" default="min(R / 3 + 30, 150)"/>
 | 
				
			||||||
 | 
									<parameter name="preFilter" type="string" default="">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Parameters for measuring MLv amplitudes. Add more parameters
 | 
										The filter applied to raw records before applying
 | 
				
			||||||
					by adding an amplitude type profile 'MLv',
 | 
										Wood-Anderson simulation. Default: no pre-filtering.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
					<parameter name="preFilter" type="string" default="">
 | 
									</parameter>
 | 
				
			||||||
						<description>
 | 
									<parameter name="applyWoodAnderson" type="boolean" default="true">
 | 
				
			||||||
						The filter applied to raw records before applying
 | 
					 | 
				
			||||||
						Wood-Anderson simulation. Default: no pre-filtering.
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
					<parameter name="measureType" type="string" default="AbsMax">
 | 
					 | 
				
			||||||
						<description>
 | 
					 | 
				
			||||||
						This parameter allows to set how the amplitude is measured.
 | 
					 | 
				
			||||||
						Either by finding the absolute maximum of the demeaned
 | 
					 | 
				
			||||||
						trace (AbsMax), the difference of maximum and minimum of
 | 
					 | 
				
			||||||
						the signal window (MinMax) or the maximum peak-trough
 | 
					 | 
				
			||||||
						of one cycle (PeakTrough).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
						Note that if absMax is already explicitly configured, this
 | 
					 | 
				
			||||||
						parameter has no effect.
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
				</group>
 | 
					 | 
				
			||||||
			</group>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			<group name="magnitudes">
 | 
					 | 
				
			||||||
				<group name="MLv">
 | 
					 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Parameters for computing MLv magnitudes from MLv amplitudes.
 | 
										Applying Wood-Anderson simulation. To achieve displacement
 | 
				
			||||||
 | 
										records without WA simulation, an integration filter can
 | 
				
			||||||
 | 
										be applied with the pre-filter.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
					<parameter name="logA0" type="string" default="0:-1.3,60:-2.8,100:-3.0,400:-4.5,1000:-5.85">
 | 
									</parameter>
 | 
				
			||||||
						<description>
 | 
									<parameter name="measureType" type="string" default="AbsMax">
 | 
				
			||||||
						The calibration function log10(A0).
 | 
										<description>
 | 
				
			||||||
 | 
										This parameter allows to set how the amplitude is measured.
 | 
				
			||||||
 | 
										Either by finding the absolute maximum of the demeaned
 | 
				
			||||||
 | 
										trace (AbsMax), the difference of maximum and minimum of
 | 
				
			||||||
 | 
										the signal window (MinMax) or the maximum peak-trough
 | 
				
			||||||
 | 
										of one cycle (PeakTrough).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						Format: any list of distance-value pairs separated by
 | 
										Note that if absMax is already explicitly configured, this
 | 
				
			||||||
						comma. Values within pairs are separated by colon.
 | 
										parameter has no effect.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
								</extend-struct>
 | 
				
			||||||
 | 
								<extend-struct type="GlobalBindingsMagnitudeProfile" match-name="MLv">
 | 
				
			||||||
 | 
									<description>
 | 
				
			||||||
 | 
									Parameters for computing MLv magnitudes from MLv amplitudes.
 | 
				
			||||||
 | 
									</description>
 | 
				
			||||||
 | 
									<parameter name="maxDist" type="string" unit="deg" default="8"/>
 | 
				
			||||||
 | 
									<parameter name="maxDepth" type="string" unit="km" default="1000"/>
 | 
				
			||||||
 | 
									<parameter name="logA0" type="string" default="0:-1.3,60:-2.8,100:-3.0,400:-4.5,1000:-5.85">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										The calibration function log10(A0).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						Example: "0:-1.3,60:-2.8,100:-3.0,400:-4.5,1000:-5.85"
 | 
										Format: any list of distance-value pairs separated by
 | 
				
			||||||
						specifies 4 distance intervals from
 | 
										comma. Values within pairs are separated by colon.
 | 
				
			||||||
						0...60, 60...100, 100...400 and 400...1000 km distance.
 | 
					 | 
				
			||||||
						Within these intervals log10(A0) is interpolated linearly
 | 
					 | 
				
			||||||
						between -1.3...-2.8, -2.8...-3.0, -3.0...-4.5 and -4.5...-5.8,
 | 
					 | 
				
			||||||
						respectively.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
						Note: The first and last distance samples limit the
 | 
										Example: "0:-1.3,60:-2.8,100:-3.0,400:-4.5,1000:-5.85"
 | 
				
			||||||
						maximum distance range for computing MLv.
 | 
										specifies 4 distance intervals from
 | 
				
			||||||
						</description>
 | 
										0...60, 60...100, 100...400 and 400...1000 km distance.
 | 
				
			||||||
					</parameter>
 | 
										Within these intervals log10(A0) is interpolated linearly
 | 
				
			||||||
					<parameter name="maxDistanceKm" type="double" unit="km" default="-1.0">
 | 
										between -1.3...-2.8, -2.8...-3.0, -3.0...-4.5 and -4.5...-5.8,
 | 
				
			||||||
						<description>
 | 
										respectively.
 | 
				
			||||||
							Maximum epicentral distance for computing MLv.
 | 
					
 | 
				
			||||||
							No distance limitation for maxDistanceKm=-1
 | 
										Note: The first and last distance samples limit the
 | 
				
			||||||
						</description>
 | 
										maximum distance range for computing MLv.
 | 
				
			||||||
					</parameter>
 | 
										</description>
 | 
				
			||||||
				</group>
 | 
									</parameter>
 | 
				
			||||||
			</group>
 | 
								</extend-struct>
 | 
				
			||||||
		</configuration>
 | 
							</configuration>
 | 
				
			||||||
	</binding>
 | 
						</binding>
 | 
				
			||||||
</seiscomp>
 | 
					</seiscomp>
 | 
				
			||||||
 | 
				
			|||||||
@ -6,171 +6,163 @@
 | 
				
			|||||||
			Nuttli magnitude for Canada and other Cratonic regions
 | 
								Nuttli magnitude for Canada and other Cratonic regions
 | 
				
			||||||
		</description>
 | 
							</description>
 | 
				
			||||||
		<configuration>
 | 
							<configuration>
 | 
				
			||||||
			<group name="amplitudes">
 | 
								<extend-struct type="GlobalAmplitudeProfile" match-name="MN">
 | 
				
			||||||
				<group name="MN">
 | 
									<description>
 | 
				
			||||||
 | 
									Amplitude control parameters for MN (Nuttli magnitude).
 | 
				
			||||||
 | 
									</description>
 | 
				
			||||||
 | 
									<parameter name="velocityModel" type="string" default="iasp91">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Amplitude control parameters for MN (Nuttli magnitude).
 | 
										The travel time table set compiled for LocSAT. The tables
 | 
				
			||||||
 | 
										are located in "share/locsat/tables/[vmodel].*".
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
					<parameter name="velocityModel" type="string" default="iasp91">
 | 
									</parameter>
 | 
				
			||||||
						<description>
 | 
								</extend-struct>
 | 
				
			||||||
						The travel time table set compiled for LocSAT. The tables
 | 
								<extend-struct type="GlobalMagnitudeProfile" match-name="MN">
 | 
				
			||||||
						are located in "share/locsat/tables/[vmodel].*".
 | 
									<description>
 | 
				
			||||||
						</description>
 | 
									Regionalization of MN (Nuttli magnitude).
 | 
				
			||||||
					</parameter>
 | 
									</description>
 | 
				
			||||||
				</group>
 | 
									<parameter name="region" type="path" default="@DATADIR@/magnitudes/MN/MN.bna">
 | 
				
			||||||
			</group>
 | 
					 | 
				
			||||||
			<group name="magnitudes">
 | 
					 | 
				
			||||||
				<group name="MN">
 | 
					 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Regionalization of MN (Nuttli magnitude).
 | 
										The path to the BNA file which defines the valid region
 | 
				
			||||||
 | 
										for the MN magnitude. Note that the entire path from
 | 
				
			||||||
 | 
										source to receiver must lie entirely within the polygon(s).
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
					<parameter name="region" type="path" default="@DATADIR@/magnitudes/MN/MN.bna">
 | 
									</parameter>
 | 
				
			||||||
						<description>
 | 
									<parameter name="offsetMw" type="double">
 | 
				
			||||||
						The path to the BNA file which defines the valid region
 | 
										<description>
 | 
				
			||||||
						for the MN magnitude. Note that the entire path from
 | 
										The offset applied to the MN network magnitude to
 | 
				
			||||||
						source to receiver must lie entirely within the polygon(s).
 | 
										estimate Mw(MN). If not configured then no Mw estimation
 | 
				
			||||||
						</description>
 | 
										will be applied.
 | 
				
			||||||
					</parameter>
 | 
										</description>
 | 
				
			||||||
					<parameter name="offsetMw" type="double">
 | 
									</parameter>
 | 
				
			||||||
						<description>
 | 
								</extend-struct>
 | 
				
			||||||
						The offset applied to the MN network magnitude to
 | 
					 | 
				
			||||||
						estimate Mw(MN). If not configured then no Mw estimation
 | 
					 | 
				
			||||||
						will be applied.
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
				</group>
 | 
					 | 
				
			||||||
			</group>
 | 
					 | 
				
			||||||
		</configuration>
 | 
							</configuration>
 | 
				
			||||||
	</plugin>
 | 
						</plugin>
 | 
				
			||||||
	<binding name="MN" module="global">
 | 
						<binding name="MN" module="global">
 | 
				
			||||||
		<description>
 | 
							<description>
 | 
				
			||||||
		</description>
 | 
							</description>
 | 
				
			||||||
		<configuration>
 | 
							<configuration>
 | 
				
			||||||
			<group name="amplitudes">
 | 
								<extend-struct type="GlobalBindingsAmplitudeProfile" match-name="MN">
 | 
				
			||||||
				<group name="MN">
 | 
									<description>
 | 
				
			||||||
 | 
									Parameters for measuring AMN amplitudes.
 | 
				
			||||||
 | 
									</description>
 | 
				
			||||||
 | 
									<parameter name="rms" type="boolean" default="false">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Parameters for measuring AMN amplitudes.
 | 
										Whether to use RMS ratio of signal and noise window for
 | 
				
			||||||
 | 
										SNR computation or the ration of the peak-trough
 | 
				
			||||||
 | 
										amplitudes of either window.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
					<parameter name="rms" type="boolean" default="false">
 | 
									</parameter>
 | 
				
			||||||
						<description>
 | 
									<parameter name="filter" type="string">
 | 
				
			||||||
						Whether to use RMS ratio of signal and noise window for
 | 
					 | 
				
			||||||
						SNR computation or the ration of the peak-trough
 | 
					 | 
				
			||||||
						amplitudes of either window.
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
					<parameter name="filter" type="string">
 | 
					 | 
				
			||||||
						<description>
 | 
					 | 
				
			||||||
						The configurable filter such that the V measurement is
 | 
					 | 
				
			||||||
						made on a filtered trace. By default, filtering is not
 | 
					 | 
				
			||||||
						enabled.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
						See https://docs.gempa.de/seiscomp/current/base/filter-grammar.html
 | 
					 | 
				
			||||||
						for how to specify the filter.
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
					<parameter name="Vmin" type="double" default="3.2" unit="km/s">
 | 
					 | 
				
			||||||
						<description>
 | 
					 | 
				
			||||||
						The minimum phase velocity used to determine the signal
 | 
					 | 
				
			||||||
						window end.
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
					<parameter name="Vmax" type="double" default="3.6" unit="km/s">
 | 
					 | 
				
			||||||
						<description>
 | 
					 | 
				
			||||||
						The maximum phase velocity used to determine the signal
 | 
					 | 
				
			||||||
						window start.
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
					<parameter name="snrWindowSeconds" type="double" default="10" unit="s">
 | 
					 | 
				
			||||||
						<description>
 | 
					 | 
				
			||||||
						The length of the SNR window.
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
					<parameter name="noiseWindowPreSeconds" type="double" default="0" unit="s">
 | 
					 | 
				
			||||||
						<description>
 | 
					 | 
				
			||||||
						The offset of the noise window. A positive value will move
 | 
					 | 
				
			||||||
						the computed noise window to the left on the time axis,
 | 
					 | 
				
			||||||
						a negative value will move it to the right on the time axis.
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
					<parameter name="signalStartPriorities" type="list:string" default="Lg,Sg,Sn,S,Vmax">
 | 
					 | 
				
			||||||
						<description>
 | 
					 | 
				
			||||||
						The priority list of phase onsets to compute the signal
 | 
					 | 
				
			||||||
						start window. Except for Vmin and Vmax, associated phases
 | 
					 | 
				
			||||||
						(arrivals) must be present in the origin for this
 | 
					 | 
				
			||||||
						particular phase. Picked phases are only considered if
 | 
					 | 
				
			||||||
						the origin is a manual origin or the pick is a
 | 
					 | 
				
			||||||
						manual pick. The first value in the list which can be
 | 
					 | 
				
			||||||
						retrieved or computed, is selected.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
						Allowed tokens: Pg, Pn, P, Sg, Sn, S, Lg, Rg, Vmin, Vmax
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
					<parameter name="signalEndPriorities" type="list:string" default="Rg,Vmin">
 | 
					 | 
				
			||||||
						<description>
 | 
					 | 
				
			||||||
						The priority list of phase onsets to compute the signal
 | 
					 | 
				
			||||||
						end window. Except for Vmin and Vmax, associated phases
 | 
					 | 
				
			||||||
						(arrivals) must be present in the origin for this
 | 
					 | 
				
			||||||
						particular phase. Picked phases are only considered if
 | 
					 | 
				
			||||||
						the origin is a manual origin or the pick is a
 | 
					 | 
				
			||||||
						manual pick. The first value in the list which can be
 | 
					 | 
				
			||||||
						retrieved or computed, is selected.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
						Allowed tokens: Pg, Pn, P, Sg, Sn, S, Lg, Rg, Vmin, Vmax
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
				</group>
 | 
					 | 
				
			||||||
			</group>
 | 
					 | 
				
			||||||
			<group name="magnitudes">
 | 
					 | 
				
			||||||
				<group name="MN">
 | 
					 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Parameters for computing MN magnitudes from AMN amplitudes.
 | 
										The configurable filter such that the V measurement is
 | 
				
			||||||
 | 
										made on a filtered trace. By default, filtering is not
 | 
				
			||||||
 | 
										enabled.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										See https://docs.gempa.de/seiscomp/current/base/filter-grammar.html
 | 
				
			||||||
 | 
										for how to specify the filter.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
					<parameter name="minSNR" type="double" default="2">
 | 
									</parameter>
 | 
				
			||||||
						<description>
 | 
									<parameter name="Vmin" type="double" default="3.2" unit="km/s">
 | 
				
			||||||
						The minimum SNR required for a magnitude to pass
 | 
										<description>
 | 
				
			||||||
						the QC check. The station magnitude will be computed
 | 
										The minimum phase velocity used to determine the signal
 | 
				
			||||||
						anyway but if the SNR is below this threshold it will
 | 
										window end.
 | 
				
			||||||
						be associated with weight zero and will not contribute
 | 
										</description>
 | 
				
			||||||
						to the network magnitude.
 | 
									</parameter>
 | 
				
			||||||
						</description>
 | 
									<parameter name="Vmax" type="double" default="3.6" unit="km/s">
 | 
				
			||||||
					</parameter>
 | 
										<description>
 | 
				
			||||||
					<parameter name="minPeriod" type="double" default="0.01" unit="s">
 | 
										The maximum phase velocity used to determine the signal
 | 
				
			||||||
						<description>
 | 
										window start.
 | 
				
			||||||
						The minimum period required for a magnitude to pass
 | 
										</description>
 | 
				
			||||||
						the QC check. The station magnitude will be computed
 | 
									</parameter>
 | 
				
			||||||
						anyway but if the period is below this threshold it will
 | 
									<parameter name="snrWindowSeconds" type="double" default="10" unit="s">
 | 
				
			||||||
						be associated with weight zero and will not contribute
 | 
										<description>
 | 
				
			||||||
						to the network magnitude.
 | 
										The length of the SNR window.
 | 
				
			||||||
						</description>
 | 
										</description>
 | 
				
			||||||
					</parameter>
 | 
									</parameter>
 | 
				
			||||||
					<parameter name="maxPeriod" type="double" default="1.3" unit="s">
 | 
									<parameter name="noiseWindowPreSeconds" type="double" default="0" unit="s">
 | 
				
			||||||
						<description>
 | 
										<description>
 | 
				
			||||||
						The maximum period allowed for a magnitude to pass
 | 
										The offset of the noise window. A positive value will move
 | 
				
			||||||
						the QC check. The station magnitude will be computed
 | 
										the computed noise window to the left on the time axis,
 | 
				
			||||||
						anyway but if the period is above this threshold it will
 | 
										a negative value will move it to the right on the time axis.
 | 
				
			||||||
						be associated with weight zero and will not contribute
 | 
										</description>
 | 
				
			||||||
						to the network magnitude.
 | 
									</parameter>
 | 
				
			||||||
						</description>
 | 
									<parameter name="signalStartPriorities" type="list:string" default="Lg,Sg,Sn,S,Vmax">
 | 
				
			||||||
					</parameter>
 | 
										<description>
 | 
				
			||||||
					<parameter name="minDist" type="double" default="0.5" unit="deg">
 | 
										The priority list of phase onsets to compute the signal
 | 
				
			||||||
						<description>
 | 
										start window. Except for Vmin and Vmax, associated phases
 | 
				
			||||||
						The minimum distance required for a magnitude to pass
 | 
										(arrivals) must be present in the origin for this
 | 
				
			||||||
						the QC check. The station magnitude will be computed
 | 
										particular phase. Picked phases are only considered if
 | 
				
			||||||
						anyway but if the distance is below this threshold it
 | 
										the origin is a manual origin or the pick is a
 | 
				
			||||||
						will be associated with weight zero and will not contribute
 | 
										manual pick. The first value in the list which can be
 | 
				
			||||||
						to the network magnitude.
 | 
										retrieved or computed, is selected.
 | 
				
			||||||
						</description>
 | 
					
 | 
				
			||||||
					</parameter>
 | 
										Allowed tokens: Pg, Pn, P, Sg, Sn, S, Lg, Rg, Vmin, Vmax
 | 
				
			||||||
					<parameter name="maxDist" type="double" default="30" unit="deg">
 | 
										</description>
 | 
				
			||||||
						<description>
 | 
									</parameter>
 | 
				
			||||||
						The maximum distance allowed for a magnitude to be
 | 
									<parameter name="signalEndPriorities" type="list:string" default="Rg,Vmin">
 | 
				
			||||||
						computed. If the distance exceeds this threshold then
 | 
										<description>
 | 
				
			||||||
						the computation will be canceled and no station
 | 
										The priority list of phase onsets to compute the signal
 | 
				
			||||||
						magnitude will be available at all.
 | 
										end window. Except for Vmin and Vmax, associated phases
 | 
				
			||||||
						</description>
 | 
										(arrivals) must be present in the origin for this
 | 
				
			||||||
					</parameter>
 | 
										particular phase. Picked phases are only considered if
 | 
				
			||||||
				</group>
 | 
										the origin is a manual origin or the pick is a
 | 
				
			||||||
			</group>
 | 
										manual pick. The first value in the list which can be
 | 
				
			||||||
 | 
										retrieved or computed, is selected.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										Allowed tokens: Pg, Pn, P, Sg, Sn, S, Lg, Rg, Vmin, Vmax
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
								</extend-struct>
 | 
				
			||||||
 | 
								<extend-struct type="GlobalBindingsMagnitudeProfile" match-name="MN">
 | 
				
			||||||
 | 
									<description>
 | 
				
			||||||
 | 
									Parameters for computing MN magnitudes from AMN amplitudes.
 | 
				
			||||||
 | 
									</description>
 | 
				
			||||||
 | 
									<parameter name="minSNR" type="double" default="2">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										The minimum SNR required for a magnitude to pass
 | 
				
			||||||
 | 
										the QC check. The station magnitude will be computed
 | 
				
			||||||
 | 
										anyway but if the SNR is below this threshold it will
 | 
				
			||||||
 | 
										be associated with weight zero and will not contribute
 | 
				
			||||||
 | 
										to the network magnitude.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="minPeriod" type="double" default="0.01" unit="s">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										The minimum period required for a magnitude to pass
 | 
				
			||||||
 | 
										the QC check. The station magnitude will be computed
 | 
				
			||||||
 | 
										anyway but if the period is below this threshold it will
 | 
				
			||||||
 | 
										be associated with weight zero and will not contribute
 | 
				
			||||||
 | 
										to the network magnitude.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="maxPeriod" type="double" default="1.3" unit="s">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										The maximum period allowed for a magnitude to pass
 | 
				
			||||||
 | 
										the QC check. The station magnitude will be computed
 | 
				
			||||||
 | 
										anyway but if the period is above this threshold it will
 | 
				
			||||||
 | 
										be associated with weight zero and will not contribute
 | 
				
			||||||
 | 
										to the network magnitude.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="minDist" type="double" default="0.5" unit="deg">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										The minimum distance required for a magnitude to pass
 | 
				
			||||||
 | 
										the QC check. The station magnitude will be computed
 | 
				
			||||||
 | 
										anyway but if the distance is below this threshold it
 | 
				
			||||||
 | 
										will be associated with weight zero and will not contribute
 | 
				
			||||||
 | 
										to the network magnitude.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
									<parameter name="maxDist" type="double" default="30" unit="deg">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										The maximum distance allowed for a magnitude to be
 | 
				
			||||||
 | 
										computed. If the distance exceeds this threshold then
 | 
				
			||||||
 | 
										the computation will be canceled and no station
 | 
				
			||||||
 | 
										magnitude will be available at all.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
								</extend-struct>
 | 
				
			||||||
		</configuration>
 | 
							</configuration>
 | 
				
			||||||
	</binding>
 | 
						</binding>
 | 
				
			||||||
</seiscomp>
 | 
					</seiscomp>
 | 
				
			||||||
 | 
				
			|||||||
@ -12,55 +12,51 @@
 | 
				
			|||||||
		at around 20 s period.
 | 
							at around 20 s period.
 | 
				
			||||||
		</description>
 | 
							</description>
 | 
				
			||||||
		<configuration>
 | 
							<configuration>
 | 
				
			||||||
			<group name="amplitudes">
 | 
								<extend-struct type="GlobalBindingsAmplitudeProfile" match-name="Ms_20">
 | 
				
			||||||
				<group name="Ms_20">
 | 
									<description>
 | 
				
			||||||
 | 
									Parameters for computing Ms_20 amplitudes.
 | 
				
			||||||
 | 
									</description>
 | 
				
			||||||
 | 
									<parameter name="minVelocity" type="double" unit="km/s" default="3">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Parameters for computing Ms_20 amplitudes.
 | 
										Minimum group velocity used to compute signal time window.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
					<parameter name="minVelocity" type="double" unit="km/s" default="3">
 | 
									</parameter>
 | 
				
			||||||
						<description>
 | 
									<parameter name="maxVelocity" type="double" unit="km/s" default="4">
 | 
				
			||||||
						Minimum group velocity used to compute signal time window.
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
					<parameter name="maxVelocity" type="double" unit="km/s" default="4">
 | 
					 | 
				
			||||||
						<description>
 | 
					 | 
				
			||||||
						Maximum group velocity used to compute signal time window.
 | 
					 | 
				
			||||||
						</description>
 | 
					 | 
				
			||||||
					</parameter>
 | 
					 | 
				
			||||||
				</group>
 | 
					 | 
				
			||||||
			</group>
 | 
					 | 
				
			||||||
			<group name="magnitudes">
 | 
					 | 
				
			||||||
				<group name="Ms_20">
 | 
					 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Parameters for computing Ms_20 magnitudes from Ms_20 amplitudes.
 | 
										Maximum group velocity used to compute signal time window.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
					<parameter name="lowerPeriod" type="double" unit="s" default="18">
 | 
									</parameter>
 | 
				
			||||||
						<description>
 | 
								</extend-struct>
 | 
				
			||||||
						Lower period limit of the signal for computing Ms_20.
 | 
								<extend-struct type="GlobalBindingsMagnitudeProfile" match-name="Ms_20">
 | 
				
			||||||
						</description>
 | 
									<description>
 | 
				
			||||||
					</parameter>
 | 
									Parameters for computing Ms_20 magnitudes from Ms_20 amplitudes.
 | 
				
			||||||
					<parameter name="upperPeriod" type="double" unit="s" default="22">
 | 
									</description>
 | 
				
			||||||
						<description>
 | 
									<parameter name="lowerPeriod" type="double" unit="s" default="18">
 | 
				
			||||||
						Upper period limit of the signal for computing Ms_20.
 | 
										<description>
 | 
				
			||||||
						</description>
 | 
										Lower period limit of the signal for computing Ms_20.
 | 
				
			||||||
					</parameter>
 | 
										</description>
 | 
				
			||||||
					<parameter name="minDist" type="double" unit="deg" default="20">
 | 
									</parameter>
 | 
				
			||||||
						<description>
 | 
									<parameter name="upperPeriod" type="double" unit="s" default="22">
 | 
				
			||||||
						Minimum epicentral distance for computing Ms_20.
 | 
										<description>
 | 
				
			||||||
						</description>
 | 
										Upper period limit of the signal for computing Ms_20.
 | 
				
			||||||
					</parameter>
 | 
										</description>
 | 
				
			||||||
					<parameter name="maxDist" type="double" unit="deg" default="160">
 | 
									</parameter>
 | 
				
			||||||
						<description>
 | 
									<parameter name="minDist" type="double" unit="deg" default="20">
 | 
				
			||||||
						Maximum epicentral distance for computing Ms_20.
 | 
										<description>
 | 
				
			||||||
						</description>
 | 
										Minimum epicentral distance for computing Ms_20.
 | 
				
			||||||
					</parameter>
 | 
										</description>
 | 
				
			||||||
					<parameter name="maxDepth" type="double" unit="km" default="100">
 | 
									</parameter>
 | 
				
			||||||
						<description>
 | 
									<parameter name="maxDist" type="double" unit="deg" default="160">
 | 
				
			||||||
						Maximum depth for computing Ms_20.
 | 
										<description>
 | 
				
			||||||
						</description>
 | 
										Maximum epicentral distance for computing Ms_20.
 | 
				
			||||||
					</parameter>
 | 
										</description>
 | 
				
			||||||
				</group>
 | 
									</parameter>
 | 
				
			||||||
			</group>
 | 
									<parameter name="maxDepth" type="double" unit="km" default="100">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										Maximum depth for computing Ms_20.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</parameter>
 | 
				
			||||||
 | 
								</extend-struct>
 | 
				
			||||||
		</configuration>
 | 
							</configuration>
 | 
				
			||||||
	</binding>
 | 
						</binding>
 | 
				
			||||||
</seiscomp>
 | 
					</seiscomp>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,148 +3,161 @@
 | 
				
			|||||||
	<plugin name="NonLinLoc">
 | 
						<plugin name="NonLinLoc">
 | 
				
			||||||
		<extends>global</extends>
 | 
							<extends>global</extends>
 | 
				
			||||||
		<description>
 | 
							<description>
 | 
				
			||||||
			NonLinLoc locator wrapper plugin for SeisComP.
 | 
							NonLinLoc locator wrapper plugin for SeisComP.
 | 
				
			||||||
			NonLinLoc was written by Anthony Lomax (http://alomax.free.fr/nlloc).
 | 
							NonLinLoc was written by Anthony Lomax (http://alomax.free.fr/nlloc).
 | 
				
			||||||
		</description>
 | 
							</description>
 | 
				
			||||||
		<configuration>
 | 
							<configuration>
 | 
				
			||||||
			<group name="NonLinLoc">
 | 
								<group name="NonLinLoc">
 | 
				
			||||||
				<parameter name="publicID" type="string" default="NLL.@time/%Y%m%d%H%M%S.%f@.@id@">
 | 
									<parameter name="publicID" type="string" default="NLL.@time/%Y%m%d%H%M%S.%f@.@id@">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
						PublicID creation pattern for an origin created by NonLinLoc.
 | 
										PublicID creation pattern for an origin created by NonLinLoc.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				<parameter name="outputPath" type="path" default="/tmp/sc3.nll">
 | 
									<parameter name="outputPath" type="directory" default="/tmp/sc3.nll" options="write">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
						Defines the output path for all native NonLinLoc input and output files.
 | 
										Defines the output directory for all native NonLinLoc input and output files.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				<parameter name="saveInput" type="boolean" default="true">
 | 
									<parameter name="saveInput" type="boolean" default="true">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
						Save input files *.obs in outputPath for later processing.
 | 
										Save input files *.obs in outputPath for later processing.
 | 
				
			||||||
						Setting to false reduces file i/o and saves disk space.
 | 
										Setting to false reduces file i/o and saves disk space.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				<parameter name="saveIntermediateOutput" type="boolean" default="true">
 | 
									<parameter name="saveIntermediateOutput" type="boolean" default="true">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
						Save output files in outputPath for later processing or
 | 
										Save output files in outputPath for later processing or
 | 
				
			||||||
						for viewing by the Seismicity Viewer.
 | 
										for viewing by the Seismicity Viewer.
 | 
				
			||||||
						Setting to false reduces file i/o and saves disk space.
 | 
										Setting to false reduces file i/o and saves disk space.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				<parameter name="controlFile" type="path">
 | 
									<parameter name="controlFile" type="file" options="read">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
						The default NonLinLoc control file to use.
 | 
										The default NonLinLoc control file to use. Parameters
 | 
				
			||||||
 | 
										therein are overridden per profile.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				<parameter name="defaultPickError" type="double" default="0.5" unit="s">
 | 
									<parameter name="defaultPickError" type="double" default="0.5" unit="s">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
						The default pick error in seconds passed to NonLinLoc if a SeisComP pick
 | 
										The default pick error in seconds passed to NonLinLoc if a SeisComP pick
 | 
				
			||||||
						object does not provide pick time uncertainties.
 | 
										object does not provide pick time uncertainties.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				<parameter name="fixedDepthGridSpacing" type="double" default="0.1" unit="km">
 | 
									<parameter name="fixedDepthGridSpacing" type="double" default="0.1" unit="km">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
						Since NLL does not support fixing the depth natively so this
 | 
										Since NLL does not support fixing the depth natively so this
 | 
				
			||||||
						feature is emulated by settings the Z grid very tight around
 | 
										feature is emulated by settings the Z grid very tight around
 | 
				
			||||||
						the depth to be fixed. This value sets the Z grid spacing.
 | 
										the depth to be fixed. This value sets the Z grid spacing.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				<parameter name="allowMissingStations" type="boolean" default="true">
 | 
									<parameter name="allowMissingStations" type="boolean" default="true">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
						Picks from stations with missing configuration will be
 | 
										Picks from stations with missing configuration will be
 | 
				
			||||||
						ignored. The origin will be relocated without that pick
 | 
										ignored. The origin will be relocated without that pick
 | 
				
			||||||
						if possible.
 | 
										if possible.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						If set to false, the plug-in throws
 | 
										If set to false, the plug-in throws
 | 
				
			||||||
						an excepection without locating.
 | 
										an excepection without locating.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				<parameter name="profiles" type="list:string">
 | 
									<parameter name="profiles" type="list:string">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
						Defines a list of active profiles to be used by the plugin.
 | 
										Defines a list of active profiles to be used by the plugin.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</parameter>
 | 
									</parameter>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				<group name="profile">
 | 
									<group name="profile">
 | 
				
			||||||
					<struct type="NonLinLoc profile" link = "NonLinLoc.profiles">
 | 
										<struct type="NonLinLoc profile" link = "NonLinLoc.profiles">
 | 
				
			||||||
						<description>
 | 
											<description>
 | 
				
			||||||
							Defines a regional profile that is used if a prelocation falls
 | 
											Defines a regional profile that is used if a prelocation falls
 | 
				
			||||||
							inside the configured region.
 | 
											inside the configured region.
 | 
				
			||||||
						</description>
 | 
											</description>
 | 
				
			||||||
						<parameter name="earthModelID" type="string">
 | 
											<parameter name="earthModelID" type="string">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
								earthModelID that is stored in the created origin.
 | 
												Earth model ID stored in the created origin.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="methodID" type="string" default="NonLinLoc">
 | 
											<parameter name="methodID" type="string" default="NonLinLoc">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
								methodID that is stored in the created origin.
 | 
												Method ID stored in the created origin.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="tablePath" type="path">
 | 
											<parameter name="tablePath" type="path">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
								Path to travel time tables (grids).
 | 
												Path to travel time tables (grids) including the
 | 
				
			||||||
 | 
												full path and the names of the table files before
 | 
				
			||||||
 | 
												the phase name.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
												Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
												@DATADIR@/nonlinloc/iasp91/iasp91 for P and S tables
 | 
				
			||||||
 | 
												files
 | 
				
			||||||
 | 
												seiscomp/share/nonlinloc/iasp91/iasp91.[PS].*
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter> 
 | 
											</parameter> 
 | 
				
			||||||
						<parameter name="stationNameFormat" type="string" default="@STA@">
 | 
											<parameter name="stationNameFormat" type="string" default="@STA@">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
								Format of the station name used to select the right travel time table (grid) file
 | 
												Format of the station name used to select the right travel time table (grid) file
 | 
				
			||||||
								for a station. 
 | 
												for a station.
 | 
				
			||||||
								By default only the station code is used (e.g. tablePath.P.@STA@.time.*), but
 | 
												By default only the station code is used (e.g. tablePath.P.@STA@.time.*), but
 | 
				
			||||||
								that doesn't allow to distinguish between multiple network codes or location codes
 | 
												that doesn't allow to distinguish between multiple network codes or location codes
 | 
				
			||||||
								that use the same station code.
 | 
												that use the same station code.
 | 
				
			||||||
								To overcome this limitation this parameter could be set in a more general way, for
 | 
												To overcome this limitation this parameter could be set in a more general way, for
 | 
				
			||||||
								example @NET@_@STA@_@LOC@. In this way NonLinLoc will look for
 | 
												example @NET@_@STA@_@LOC@. In this way NonLinLoc will look for
 | 
				
			||||||
								travel time table (grid) files of the form: tablePath.P.@NET@_@STA@_@LOC@.time.*
 | 
												travel time table (grid) files of the form: tablePath.P.@NET@_@STA@_@LOC@.time.*
 | 
				
			||||||
								Where @NET@ @STA@ @LOC@ are just placeholder for the actual codes
 | 
												Where @NET@ @STA@ @LOC@ are just placeholder for the actual codes.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter> 
 | 
											</parameter> 
 | 
				
			||||||
						<parameter name="controlFile" type="path">
 | 
											<parameter name="controlFile" type="file" options="read">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
								Control file of the current profile. If not set, the default
 | 
												Control file of the current profile overriding
 | 
				
			||||||
								control file will be used instead.
 | 
												parameters of the default control file.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="transform" type="string" default="GLOBAL">
 | 
											<parameter name="transform" type="string" default="GLOBAL">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
								Transformation type of the configured region. Supported are
 | 
												Transformation type of the configured region.
 | 
				
			||||||
								SIMPLE and GLOBAL.
 | 
												Supported are SIMPLE and GLOBAL.
 | 
				
			||||||
 | 
					 | 
				
			||||||
								Default: GLOBAL is assumed.
 | 
					 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="region" type="list:double">
 | 
											<parameter name="region" type="list:double">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
								Defines the 4 corner values of the epicentral region for selecting the profile.
 | 
												Defines the 4 corner values of the epicentral region for selecting the profile.
 | 
				
			||||||
								The original epicentre must be within the region.
 | 
												The original epicentre must be within the region.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
								If transform is GLOBAL: min_lat, min_lon, max_lat, max_lon.
 | 
												If transform is GLOBAL: min_lat, min_lon, max_lat, max_lon.
 | 
				
			||||||
								The values define the geographic corner coordinates. Unit is degree.
 | 
												The values define the geographic corner coordinates.
 | 
				
			||||||
 | 
												Unit: degree.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
								If transform is SIMPLE: xmin, ymin, xmax, ymax.
 | 
												If transform is SIMPLE: min_x, min_y, max_x, max_y.
 | 
				
			||||||
								The values define the region relative to the configured origin.
 | 
												The values define the region relative to the origin
 | 
				
			||||||
								Unit is km.
 | 
												configured with "origin".
 | 
				
			||||||
 | 
												Unit: km.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
												When this parameter is empty, the generated NonLinLoc
 | 
				
			||||||
 | 
												configuration is automatically overwritten with
 | 
				
			||||||
 | 
												TRANS GLOBAL.
 | 
				
			||||||
 | 
												Otherwise TRANS from "controlFile" applies.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="origin" type="list:double" unit="deg">
 | 
											<parameter name="origin" type="list:double" unit="deg">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
								Only used for transformation SIMPLE. Expects 2 values: latitude, longitude.
 | 
												Only used for transformation SIMPLE. Expects 2 values: latitude, longitude.
 | 
				
			||||||
								The value define the geographic origin of the area spanned by region.
 | 
												The value define the geographic origin of the area spanned by region.
 | 
				
			||||||
								Unit is degree.
 | 
					 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="rotation" type="double" unit="deg">
 | 
											<parameter name="rotation" type="double" unit="deg">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
								Only used for transformation SIMPLE. Defines the rotation around the
 | 
												Only used for transformation SIMPLE. Defines the
 | 
				
			||||||
								origin of the defined region.
 | 
												rotation around the origin of the defined region.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
					</struct>
 | 
										</struct>
 | 
				
			||||||
 | 
				
			|||||||
@ -74,7 +74,7 @@
 | 
				
			|||||||
							applies.
 | 
												applies.
 | 
				
			||||||
							</description>
 | 
												</description>
 | 
				
			||||||
						</parameter>
 | 
											</parameter>
 | 
				
			||||||
						<parameter name="confLevel" type="double" default="0.9" range="0.5,1.0">
 | 
											<parameter name="confLevel" type="double" default="0.9" range="0.5:1.0">
 | 
				
			||||||
							<description>
 | 
												<description>
 | 
				
			||||||
							Confidence level, between 0.5 and 1.0, used in
 | 
												Confidence level, between 0.5 and 1.0, used in
 | 
				
			||||||
							computing the hypocenter confidence ellipsoid.
 | 
												computing the hypocenter confidence ellipsoid.
 | 
				
			||||||
 | 
				
			|||||||
@ -1,16 +0,0 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
					 | 
				
			||||||
<seiscomp>
 | 
					 | 
				
			||||||
	<module name="inv2dlsv" category="Inventory" standalone="true">
 | 
					 | 
				
			||||||
		<description>Converts SC3 inventory XML to dataless SEED.</description>
 | 
					 | 
				
			||||||
		<command-line>
 | 
					 | 
				
			||||||
			<synopsis>
 | 
					 | 
				
			||||||
				inv2dlsv [in_xml [out_dataless]]
 | 
					 | 
				
			||||||
			</synopsis>
 | 
					 | 
				
			||||||
			<description>
 | 
					 | 
				
			||||||
			If in_xml is not given, stdin is used. If out_dataless is not given,
 | 
					 | 
				
			||||||
			stdout is used.
 | 
					 | 
				
			||||||
			</description>
 | 
					 | 
				
			||||||
		</command-line>
 | 
					 | 
				
			||||||
	</module>
 | 
					 | 
				
			||||||
</seiscomp>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,7 +1,9 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
<seiscomp>
 | 
					<seiscomp>
 | 
				
			||||||
	<module name="invextr" category="Inventory">
 | 
						<module name="invextr" category="Inventory">
 | 
				
			||||||
		<description>Extract channels from inventory.</description>
 | 
							<description>
 | 
				
			||||||
 | 
							Extract and clean or remove streams from inventory.
 | 
				
			||||||
 | 
							</description>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<configuration>
 | 
							<configuration>
 | 
				
			||||||
		</configuration>
 | 
							</configuration>
 | 
				
			||||||
@ -52,11 +54,15 @@
 | 
				
			|||||||
				</option>
 | 
									</option>
 | 
				
			||||||
				<option flag="" long-flag="chans" argument="arg">
 | 
									<option flag="" long-flag="chans" argument="arg">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
						A comma separated list of channel IDs to extract
 | 
										A comma separated list of streams to extract or remove (--rm)
 | 
				
			||||||
						which can contain wildcards. Default: *.*.*.* meaning
 | 
										which can contain wildcards. Avoiding confusion with files
 | 
				
			||||||
						all streams.
 | 
										names due to SHELL extension requires to enclose stream codes
 | 
				
			||||||
 | 
										by quotes. Default: *.*.*.* meaning all streams. Unreferenced
 | 
				
			||||||
 | 
										sensors, data loggers and resonses are removed when extracting.
 | 
				
			||||||
 | 
										A comma separated list of channel IDs to extract which may
 | 
				
			||||||
 | 
										contain wildcards. Default: *.*.*.* meaning all streams.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						Example: invextr --chans "GE.*.*.BHZ,GE.MORC.*.*" inv.xml
 | 
										Example: invextr --chans "GE.*.*.BHZ,GE.MORC.*.*" inventory.xml
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</option>
 | 
									</option>
 | 
				
			||||||
				<option flag="" long-flag="nslc" argument="arg">
 | 
									<option flag="" long-flag="nslc" argument="arg">
 | 
				
			||||||
@ -68,19 +74,29 @@
 | 
				
			|||||||
				<option flag="r" long-flag="region" argument="arg">
 | 
									<option flag="r" long-flag="region" argument="arg">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
					Filter streams by geographic region given as
 | 
										Filter streams by geographic region given as
 | 
				
			||||||
					"South, East, North, West". Region is unused by default.
 | 
										"South,West,North,East". Region is unused by default.
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</option>
 | 
									</option>
 | 
				
			||||||
				<option flag="" long-flag="rm" argument="arg">
 | 
									<option flag="" long-flag="rm" argument="arg">
 | 
				
			||||||
					<description>
 | 
										<description>
 | 
				
			||||||
						Removes all channels given with '--chans' instead of
 | 
										Removes all channels given with '--chans' instead of
 | 
				
			||||||
						extracting them.
 | 
										extracting them.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						Example: invextr --rm --chans "GE.*" inv.xml
 | 
										Example: invextr --rm --chans "GE.*" inv.xml
 | 
				
			||||||
					</description>
 | 
										</description>
 | 
				
			||||||
				</option>
 | 
									</option>
 | 
				
			||||||
 | 
								</group>
 | 
				
			||||||
 | 
								<group name="Output">
 | 
				
			||||||
				<option flag="f" long-flag="formatted">
 | 
									<option flag="f" long-flag="formatted">
 | 
				
			||||||
					<description>Enables formatted XML output.</description>
 | 
										<description>
 | 
				
			||||||
 | 
										Enable formatted XML output.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
 | 
									</option>
 | 
				
			||||||
 | 
									<option flag="o" long-flag="output">
 | 
				
			||||||
 | 
										<description>
 | 
				
			||||||
 | 
										Name of output file. If not given or '-', output is sent to
 | 
				
			||||||
 | 
										stdout.
 | 
				
			||||||
 | 
										</description>
 | 
				
			||||||
				</option>
 | 
									</option>
 | 
				
			||||||
			</group>
 | 
								</group>
 | 
				
			||||||
		</command-line>
 | 
							</command-line>
 | 
				
			||||||
 | 
				
			|||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user