Skip to main content

USGS SeismoTectonic Regime Earthquake Calculator (STREC)

Project description

Table of Contents


This library and set of tools was created to provide functionality to automatically determine the tectonic region of an earthquake (Subduction, Active, HotSpot, Stable), and the distance to the tectonic regions to which it does not belong.

In addition, SeismoTectonic Regime Earthquake Calculator (STREC) provides a tool that, in subduction zones, returns information about the subduction zone, using the USGS Slab2 models.


This code was based on the paper:

A Global Earthquake Discrimination Scheme to Optimize Ground‐Motion Prediction Equation Selection
D. García; D. J. Wald; M. G. Hearne
Bulletin of the Seismological Society of America (2012) 102 (1): 185–203.


pip install usgs-strec


pip install --upgrade usgs-strec


In order to use STREC you will need to:

  • download USGS Slab 2.0 models, described at the Science Base link above.
  • create a database of moment tensors, either manually from a spreadsheet/CSV file (described below), or by downloading a default database of moment tensors from the Global Centroid Moment Tensor (GCMT) catalog
  • Create a configuration file describing the locations of these files.

To make this easier, a configuration progran called strec_cfg is provided which automates all of these processes. This program comes with two sub-commands called info and update. To initialize the system with the Slab 2.0 grids and GCMT moment tensor database:

strec_cfg update --datafolder <path/to/data/folder> --slab --gcmt

For example, if you set the STREC data folder to be /data/strec:

strec_cfg update --datafolder /data/strec --slab --gcmt

and then use the following command to see the resulting configuration:

strec_cfg info

The output should look something like the following:

Config file /home/user/.strec/config.ini:
folder = /data/strec
slabfolder = /data/strec/slabs
dbfile = /data/strec/moment_tensors.db

minradial_disthist = 0.01
maxradial_disthist = 1.0
minradial_distcomp = 0.5
maxradial_distcomp = 1.0
step_distcomp = 0.1
depth_rangecomp = 10
minno_comp = 3
default_szdip = 17
dstrike_interf = 30
ddip_interf = 30
dlambda = 60
ddepth_interf = 20
ddepth_intra = 10

Moment Tensor Database (/data/strec/moment_tensors.db) contains 60535 events from 1 sources.

There are 135 slab grids from 27 unique slab models located in /data/strec/slabs.


regcalc is the program used to calculate region parameters.

The details of the options are visible by running regcalc --help.

The three most basic use cases are:

  • Getting information about an event by ComCat ID: regcalc -d us6000id0t
  • Getting information about a (possibly theoretical) event by providing hypocenter information: regcalc -e -5.0735 103.0826 50.5
  • Getting information about more than one event, with input like below as Excel or CSV:
Latitude Longitude Depth
-5.074 103.083 50.5
-1.008 98.642 17.6

regcalc -i input_file.xlsx

You can add a ComCat ID column to this - the name which will be automatically detected is EventID (case does not matter). If the file has another name for the same column you can supply that with the --id-column command line option:

regcalc -i input_file.xlsx --id-column id

If the file contains column names for latitude, longitude and depth that do not match the regular expression patterns "^lat", "^lon", "^dep" (ignoring case) then you can supply those column names as well using the --hypo-columns command line option:

regcalc -i input_file.xlsx --hypo-columns EventLatitude EventLongitude EventDepth

If an input spreadsheet has moment tensor columns named Mrr, Mtt, Mpp, etc. (case does not matter) then those values will be used to calculate the Kagan angle and determine the focal mechanism.

You can also optionally specify moment tensor information for a single event in the form of strike/dip/rake angles and a magnitude, using the --moment-info command line option:

regcalc -e -0.950 -21.725 10.0 -m 260 84 169 6.9

Note: Users may notice that distances to tectonic regions the earthquake is NOT in may be unreasonably large values. The reason for returning the distances to other regions is to help inform the user when the earthquake is close to another region. When STREC outputs these large numbers it indicates that the distance to that other region is not close enough to affect the properties of the earthquake.


STREC now calculates the probabilities of an earthquake being in any of the tectonic regions, and also in any of the various defined depth categories. For subduction regions these are hardcoded as crustal, interface, and intraslab. For other regions, the default configuration includes the following:

  • acr_shallow : active earthquakes occurring above 30 km
  • acr_deep - active earthquakes occurring below 30 km
  • scr_shallow - stable earthquakes at any depth
  • volcanic_shallow - volcanic earthquakes at any depth

Probability configuration

Users can configure the probability settings to include more finely grained depth zones for active, stable, and volcanic regions. The default config file is located in the [repository] ( and installed with the software. To customize the probability depth zones, download a copy of the file from the repository and save it in the [DATA]->folder in the config.ini file described above.

folder = /data/strec

The relevant section of the select.conf file to modify looks like the following:

        horizontal_buffer = 100
        vertical_buffer = 5
        depth_labels = shallow, deep
        min_depth = -Inf, 30
        max_depth = 30, Inf
        horizontal_buffer = 100
        vertical_buffer = 5
        depth_labels = shallow
        min_depth = -Inf
        max_depth = Inf
        horizontal_buffer = 100
        vertical_buffer = 5
        depth_labels = crustal, interface, intraslab
        min_depth = -Inf, 15, 70
        max_depth = 15, 70, Inf
        use_slab = True
        horizontal_buffer = 10
        vertical_buffer = 5
        depth_labels = shallow
        min_depth = -Inf
        max_depth = Inf

To add a "deep" (10 km or deeper) category to the scr section, you would modify that section to look like the following:

        horizontal_buffer = 100
        vertical_buffer = 5
        depth_labels = shallow, deep
        min_depth = -Inf, 10
        max_depth = 10, Inf


STREC defines a number of terms that may not be commonly understood, so they are explained here. These terms may be different from the Garcia paper upon which this software is originally based.

  • Tectonic Region: One of Subduction, Active, HotSpot, or Stable. We have split up the globe into these four regions, such that any point on the globe should fall into one and only one of these regions.

    • Subduction: A tectonic region defined by one plate descending below another (e.g., the western portion of the United States), more specifically by those locations above the Slab2.0 grids.

    • Active: A tectonic region which experiences crustal deformation due to plate tectonics.

    • HotSpot: A tectonic region which is sitting above mantle plumes, where magma pushes through cracks in the crust.

    • Stable: Tectonic regions which unlike Active regions, do not experience crustal deformation (e.g., the interior of the Australian continent.)

Map showing tectonic regions Fig 1 - Map showing tectonic regions. ACR=Active Crustal Region, SUB=Subduction Zone, VOL=HotSpot Region, SCR=Stable Continental Region

  • Oceanic: Another region, not exclusive with the four Tectonic Regions, that indicates whether the point supplied is in the ocean (i.e., not continental).

  • Continental: The opposite of Oceanic.

  • Backarc: The area of a subduction region that is behind the volcanic arc.

  • Focal Mechanism: A set of parameters that define the deformation in the source region that generates the seismic waves of an earthquake.

  • Tensor Type: The short name for the algorithm used to generate the moment tensor used to determine focal mechanism, Kagan angle, etc. This is usually a short code like Mww (W-phase), Mwr (regional), Mwb (body wave), or composite, which indicates that there is no computed moment tensor, so a composite of historical moment tensors around the input coordinates is used instead.

  • Tensor Source: When available, this is usually the network that contributed the moment tensor, followed by the ID used by that network (e.g., us_2000bmcg).

  • Kagan Angle: An single angle between any two moment tensors or in our case, between a moment tensor and a subducting slab.

  • Composite Moment Tensor: When moment tensors are not available for a given event, a composite moment tensor is calculated by essentially taking the mean of at least three moment tensors in a 0.1 degree box surrounding the earthquake hypocenter.

  • Composite Variability: When the moment tensor solution is of type composite, a scalar value describing the variability of the moment tensors used to determine the composite.

  • Distance to [Region]: The great circle distance from the input coordinates to the nearest vertex of [Region] polygon.

  • Slab Model Region: We currently use Slab 2.0 subduction models (Hayes 2012), which are currently provided for 27 regions around the globe. These regions are described in detail here:

  • Slab Model Depth: The best estimate of depth to subduction interface.

  • Slab Model Depth Uncertainty: The best estimate of the uncertainty of the depth to subduction interface.

  • Slab Model Dip: The best estimate of the dip angle of the subducting plate.

  • Slab Model Strike: The best estimate of the strike angle of the subducting plate.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

usgs-strec-2.2.8.tar.gz (7.6 MB view hashes)

Uploaded source

Built Distribution

usgs_strec-2.2.8-py3-none-any.whl (3.4 MB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page