Data Services Products: syngine On demand custom 3D AxiSEM synthetic seismograms


The Synthetics Engine (Syngine) service provides access to custom tailored synthetic seismograms.


The IRIS Synthetics Engine (Syngine) is a webservice that quickly returns synthetic seismograms custom requested by the user. The IRIS DMC stores precalculated TB scale databases of Green’s Functions for several different 1D reference models. The Green’s Functions were generated by Tarje Nissen-Meyer & colleagues using AxiSEM (Nissen-Meyer et al., 2014), an axi-symmetric spectral element method for 3D (an-)elastic, anisotropic and acoustic wave propagation in spherical domains. It requires axisymmetric background models and runs within a 2D computational domain, thereby reaching all desired highest observable frequencies (up to 2Hz) in global seismology. The requested synthetic seismograms are calculated using Instaseis (van Driel et al., 2015), a python library built for storing wavefield databases with a fast extraction algorithm. By using Instaseis and obspy, Syngine provides users with fully customizable synthetic seismograms for any source-receiver combination with a variety of source options including point source or user supplied moment tensors (or GCMT), support for finite-fault models, variable width and custom source-time functions.
In development/exploration: more models and additional post-processing.

How do download synthetics

Building an http request, sample queries & documentation

Command line downloading with FetchSyn

Current Syngine models

Model name resolution (s) database dt (s) default dt (s) length (s) source depths (m) components description database size 1D model
ak135f_1s 1-100 0.255 0.05 1815 0-750000 vertical AK135 with density & Q of Montagner&Kennet(1996) 1.4 TB link
ak135f_2s (new) 2-100 0.525 0.1 3600 0-750000 vertical and horizontal AK135 with density & Q of Montagner&Kennet(1996) 1.4 TB link
ak135f_5s    (default) 5-100 1.278 0.25 3904 0-750000 vertical and horizontal AK135 with density & Q of Montagner&Kennet(1996) 95 GB link
iasp91_2s 2-100 0.483 0.1 3699 0-700000 vertical and horizontal IASP91 1.3 TB link
prem_i_2s 2-100 0.512 0.1 3610 0-750000 vertical and horizontal isotropic PREM 1.4 TB link
prem_a_2s (new) 2-100 0.512 0.1 3610 0-750000 vertical and horizontal anisotropic PREM 1.4 TB link
prem_a_5s 5-100 1.295 0.25 3904 0-750000 vertical and horizontal anisotropic PREM 216 GB link
prem_a_10s 10-100 2.44 0.5 17999 0-700000 vertical and horizontal anisotropic PREM 70 GB link
prem_a_20s 20-100 4.869 1.0 1796 0-671000 vertical and horizontal anisotropic PREM 0.6 GB link
prem_oc_2s (coming soon) 2-100 ~1hr vertical and horizontal PREM with an oceanic crust link
prem_cc_2s (coming soon) 2-100 ~1hr vertical and horizontal PREM with a continental crust

in JSON format

Syngine AxiSEM synthetics are complete:

  • radiation pattern
  • attenuation
  • discontinuities appropriately honored

Syngine is flexible:

  • Any source-receiver combination for any source depth down to 700 km.
  • Accepted source types: moment tensor, double couple, forces
  • Vertical, North, East, Radial or Transverse components (or any combination)
  • displacement, velocity, or acceleration. (default is displacement in meters)
  • Fully loaded headers so users can mimic data, e.g. origin time & trace start time
  • zip archive of SAC files or miniseed output formats

Syngine is smart:

Syngine uses IRIS webservices to look up receiver location given network and station name(s) and can accept event IDs (e.g. from GCMT) for origin and moment tensor parameters. Syngine can also window traces based on travel times for any phase.

Syngine is fast:

Since the databases for models are precomputed and running “hot” on IRIS servers (explanation), only Green’s Function extraction, parameter look-ups and basic processing (e.g. resampling, source convolutions) are done. Requests can be fulfilled as fast as fractions of a second, though connection bandwidth, load from other user requests, and complexity of request can add significant time.

Building a request

Request details/parameters and a URL builder are available.
Example request:

Example output:
note: location code = SE (Synthetics Engine)

Choosing a new sampling rate (dt):

In order to avoid aliasing, downsampling from the database dt is not allowed by Instaseis, only upsampling. If a model has a database dt=0.5, dt=0.1 is allowed, dt=1.0 is not allowed. Detailed examples on resampling

Default source:

By default Instaseis returns the response to a very narrow Gaussian source time function with a full-width at half-max of approximately two-thirds the shortest period resolved, which is as close to a delta function as possible with AxiSEM.

Geodetic/Geocentric Latitudes:

AxiSEM and Instaseis, which drive Syngine, use geocentric latitudes. Station and earthquake coordinates use geodetic/geographic latitudes. It is common practice in seismology to convert from geodetic/geographic to geocentric latitudes in order to calculate distance using spherical geometry. Syngine also does this.

Headers convention for SAC output

When output is chosen as saczip, the SAC files will have header values populated. Header fields of note for Syngine SAC files are:

SAC header name example description
KCMPNM BXE Convention for channel name is: sample rate – “X” for synthetics – component
USER0 1e-9 The SCALE parameter for amplitude scaling. Syngine default units are meters.
KUSER1 Syngine Who generated the synthetic trace
KUSER2 prem The name of the reference model
KUSER2 a_2s Short descriptor in the model name. Always ends with the resolution limit
OMARKER -621.5 Offset time (seconds) of the origin relative to the begin time (KZTIME)
DIST 9.269906e+03 Distance in km on a sphere
GCARC 8.327261e+01 Distance in degrees on WGS84 ellipsoid


Using ObsPy to download and compare Syngine & data waveforms

Using FetchData and SAC to compare Syngine synthetics & data:
A small amount of post-processing is required if users wish to directly compare data and synthetics for a given earthquake. Synthetic seismograms from Syngine are calculated as displacement for a point-like source. Comparing to data requires correcting for instrument gain, a finite width source (not performed here), and sometimes filtering. The following example uses the 2010-05-24 Western Brazil 582km deep M6.5 event. FetchData is available here.

# Get data:
FetchData -N IU -S ANMO -C BHZ -L 00 -s 2010,05,24,16,18,28 -e 2010,05,24,17,18,28 -o data.mseed
mseed2sac data.mseed
mv IU.ANMO.00.BHZ.M.2010,144,16:18:28.SAC ANMO.M6.5.dataraw.sac
# Get RESP file:
FetchData -N IU -S ANMO -C BHZ -L 00 -s 2010,05,24,16,18,28 -e 2010,05,24,17,18,28 -rd .
# Get synthetic using the GCMT id:
wget -O ""
mv Tutorial_IU.ANMO.SE.BXZ.sac ANMO.M6.5.syn.sac
#--------- remove response of data trace to displacement -----
r ANMO.M6.5.dataraw.sac
w over
taper width 0.05
transfer from evalresp to none FREQLIMITS 0.005 0.01 4 8
w ANMO.M6.5.dataRESP.sac
#--------- plot the traces -----
r ANMO.M6.5.dataraw.sac ANMO.M6.5.dataRESP.sac ANMO.M6.5.syn.sac
bp co 0.1 1.0
qdp off
xlim 480 550

Comparison of traces from tutorial.

Downloading model databases:

Users can download the databases for entire models as .netcdf4 files. Within the model directories are PZ and PX folders for the vertical and horizontal databases, respectively, which have the ordered_output.nc4 files needed to run Instaseis locally.

# Create the appropriate directory structure for Instaseis
mkdir PX PZ PX/Data PZ/Data
# Download the databases
wget -O PZ/Data/ordered_output.nc4 ""
wget -O PX/Data/ordered_output.nc4 ""
# Get started using Instaseis with your database locally!
>>> import instaseis
>>> db = instaseis.open_db("/path/to/MYMODEL")
>>> print(db)
InstaseisDB reciprocal Green's function Database (v7) generated with these parameters:
	components           : vertical and horizontal
	velocity model       : prem_ani
	attenuation          : True
	dominant period      : 20.000 s
	dump type            : displ_only
	excitation type      : dipole
	time step            : 4.869 s
	sampling rate        : 0.205 Hz
	number of samples    : 370
	seismogram length    : 1796.8 s
	source time function : errorf
	source shift         : 34.085 s
	spatial order        : 4
	min/max radius       : 5700.0 - 6371.0 km
	Planet radius        : 6371.0 km
	min/max distance     : 0.0 - 180.0 deg
	time stepping scheme : newmark2
	compiler/user        : gfortran 4.9.1 by lion on
	directory/url        : MYMODEL
	size of netCDF files : 598.2 MB
	generated by AxiSEM version 60945ec at 2014-10-23T15:35:34.000000Z 

Bug history:

  • ak135f_1s: from 2016.01.07 – 2016.02.08: rather than vertical seismograms, the zz-component of the strain tensor was given. (being recalculated as of 2016.02.08)
  • prem_a_5s: from 2015.12.10 – 2016.05.16: reference model used was ak135, not prem. (being recalculated as of 2016.05.16)

Citations and DOIs

To cite the IRIS DMC Data Products effort:

  • Hutko, A. R., M. Bahavar, C. Trabant, R. T. Weekly, M. Van Fossen, T. Ahern (2017), Data Products at the IRIS‐DMC: Growth and Usage, Seismological Research Letters, 88, no. 3, doi:10.1785/0220160190.

To cite the source of this product:

  • Krischer, L., Hutko, A., van Driel, M., Stähler, S., Bahavar, M., Trabant, C., and Nissen‐Meyer, T. (2017). On‐demand custom broadband synthetic seismograms, Seismol. Res. Lett. 88, no. 4, doi:10.1785/0220160210.
  • Nissen-Meyer, T., van Driel, M., Stähler, S. C., Hosseini, K., Hempel, S., Auer, L., Colombi, A., and Fournier, A.: AxiSEM: broadband 3-D seismic wavefields in axisymmetric media, Solid Earth, 5, 425-445, doi:10.5194/se-5-425-2014, 2014.
  • van Driel, M., Krischer, L., Stähler, S. C., Hosseini, K., and Nissen-Meyer, T.: Instaseis: instant global seismograms based on a broadband waveform database, Solid Earth, 6, 701-717, doi:10.5194/se-6-701-2015, 2015.

To cite the IRIS DMC Syngine or reference the use of it:


  • Tarje Nissen-Meyer (University of Oxford)
  • Martin van Driel (ETH Zürich)
  • Lion Krischer (Munich University)
  • Simon Stähler (Munich University)
  • Kasra Hosseini (Munich University)
  • Alexander Hutko


Syngine online