# obspy.io.sac.sactrace.SACTrace

class `SACTrace`(leven=True, delta=1.0, b=0.0, e=0.0, iztype='ib', nvhdr=6, npts=0, iftype='itime', nzyear=1970, nzjday=1, nzhour=0, nzmin=0, nzsec=0, nzmsec=0, lcalda=False, lpspol=True, lovrok=True, internal0=2.0, data=None, **kwargs)

  Bases: `builtins.object`

  > Convenient and consistent in-memory representation of Seismic Analysis Code (SAC) files.

  > This is the human-facing interface for making a valid instance. For file-based or other constructors, see class methods .read and .from_obspy_trace. SACTrace instances preserve relationships between header values.

  > param data: | Associated time-series data vector. Optional. If omitted, None is set as the instance data attribute.
  > type data: | `numpy.ndarray` of float32

  > Any valid header key/value pair is also an optional input keyword argument. If not provided, minimum required headers are set to valid default values. The default instance is an evenly-space trace, with a sample rate of 1.0, and len(data) or 0 npts, starting at 1970-01-01T00:00:00.000000.

  > var reftime: | Read-only reference time. Calculated from nzyear, nzjday, nzhour, nzmin, nzsec, nzmsec.
  > var byteorder: | The byte order of the underlying header/data arrays. Raises `SacError` if array byte orders are inconsistent, even in the case where ‘<’ is your native order and byteorders look like ‘<’, ‘=’, ‘=’.

  > Any valid header name is also an attribute. See below, `header`, or individial attribution docstrings for more header information.

  > > THE SAC HEADER

  > NOTE: All header names and string values are lowercase. Header value access should be through instance attributes.

  Field Name | Type | Description
  --- | --- | ---
  a = | F | First arrival time (seconds relative to reference time.)
  az = | F | Event to station azimuth (degrees).
  b = | F | Beginning value of the independent variable.
  baz = | F | Station to event azimuth (degrees).
  cmpaz = | F | Component azimuth (degrees, clockwise from north).
  cmpinc = | F | Component incident angle (degrees, from vertical).
  delta = | F | Increment between evenly spaced samples (nominal value).
  depmax = | F | Maximum value of dependent variable.
  depmen = | F | Mean value of dependent variable.
  depmin = | F | Minimum value of dependent variable.
  dist = | F | Station to event distance (km).
  e = | F | Ending value of the independent variable.
  evdp = | F | Event depth below surface (meters).
  evel = | F | Event elevation (meters).
  evla = | F | Event latitude (degrees north positive).
  evlo = | F | Event longitude (degrees east positive).
  f = | F | Fini/end of event time (seconds relative to reference time.)
  gcarc = | F | Station to event great circle arc length (degrees).
  idep = | I | Type of dependent variable: IUNKN (Unknown) IDISP (Displacement in nm) IVEL (Velocity in nm/sec) IVOLTS (Velocity in volts) IACC (Acceleration in nm/sec/sec)
  ievreg = | I | Event geographic region.
  ievtyp = | I | Type of event: IUNKN (Unknown) INUCL (Nuclear event) IPREN (Nuclear pre-shot event) IPOSTN (Nuclear post-shot event) IQUAKE (Earthquake) IPREQ (Foreshock) IPOSTQ (Aftershock) ICHEM (Chemical explosion) IQB (Quarry or mine blast confirmed by quarry) IQB1 (Quarry/mine blast with designed shot info-ripple fired) IQB2 (Quarry/mine blast with observed shot info-ripple fired) IQMT (Quarry/mining-induced events: tremors and rockbursts) IEQ (Earthquake) IEQ1 (Earthquakes in a swarm or aftershock sequence) IEQ2 (Felt earthquake) IME (Marine explosion) IEX (Other explosion) INU (Nuclear explosion) INC (Nuclear cavity collapse) IO_ (Other source of known origin) IR (Regional event of unknown origin) IT (Teleseismic event of unknown origin) IU (Undetermined or conflicting information) IOTHER (Other)
  iftype = | I | Type of file: ITIME {Time series file} IRLIM {Spectral file—real and imaginary} IAMPH {Spectral file—amplitude and phase} IXY {General x versus y data} IXYZ {General XYZ (3-D) file}
  iinst = | I | Type of recording instrument.
  imagsrc = | I | Source of magnitude information: INEIC (National Earthquake Information Center) IPDE (Preliminary Determination of Epicenter) IISC (International Seismological Centre) IREB (Reviewed Event Bulletin) IUSGS (US Geological Survey) IBRK (UC Berkeley) ICALTECH (California Institute of Technology) ILLNL (Lawrence Livermore National Laboratory) IEVLOC (Event Location (computer program) ) IJSOP (Joint Seismic Observation Program) IUSER (The individual using SAC2000) IUNKNOWN (unknown)
  imagtyp = | I | Magnitude type: IMB (52): Bodywave Magnitude IMS (53): Surfacewave Magnitude IML (54): Local Magnitude IMW (55): Moment Magnitude IMD (56): Duration Magnitude IMX (57): User Defined Magnitude
  iqual = | N | Quality of data, as integers. Enum values listed: IGOOD (45) (Good data) IGLCH (46) (Glitches) IDROP (47) (Dropouts) ILOWSN (48) (Low signal to noise ratio) IOTHER (44) (Other)
  istreg = | I | Station geographic region.
  isynth = | I | Synthetic data flag: IRLDTA (Real data) ????? (Flags for various synthetic seismogram codes)
  iztype = | I | Reference time equivalence: IUNKN (5): Unknown IB (9): Begin time IDAY (10): Midnight of reference GMT day IO (11): Event origin time IA (12): First arrival time ITn (13-22): User defined time pick n, n=0,9
  ka = | K | First arrival time identification.
  kcmpnm = | K | Component name.
  kevnm = | K | Event name.
  kf = | F | Fini or end of event time identification.
  khole = | k | Hole identification if nuclear event.
  kinst = | K | Generic name of recording instrument
  knetwk = | K | Name of seismic network.
  ko = | K | Event origin time identification.
  kstnm = | K | Station name.
  kt0 = | F | User defined time pick identification.
  kt1 = | F | User defined time pick identification.
  kt2 = | F | User defined time pick identification.
  kt3 = | F | User defined time pick identification.
  kt4 = | F | User defined time pick identification.
  kt5 = | F | User defined time pick identification.
  kt6 = | F | User defined time pick identification.
  kt7 = | F | User defined time pick identification.
  kt8 = | F | User defined time pick identification.
  kt9 = | F | User defined time pick identification.
  kuser0 = | K | User defined variable storage area 0.
  kuser1 = | K | User defined variable storage area 1.
  kuser2 = | K | User defined variable storage area 2.
  lcalda = | L | TRUE if DIST AZ BAZ and GCARC are to be calculated from st event coordinates.
  leven = | L | TRUE if data is evenly spaced.
  lovrok = | L | TRUE if it is okay to overwrite this file on disk.
  lpspol = | L | TRUE if station components have a positive polarity (left-hand rule).
  mag = | F | Event magnitude.
  nevid = | N | Event ID (CSS 3.0)
  norid = | N | Origin ID (CSS 3.0)
  npts = | N | Number of points per data component.
  nvhdr = | N | Header version number. Current value is the integer 6. Older version data (NVHDR < 6) are automatically updated when read into sac.
  nwfid = | N | Waveform ID (CSS 3.0)
  nzhour = | N | GMT hour.
  nzjday = | N | GMT julian day.
  nzmin = | N | GMT minute.
  nzmsec = | N | GMT millisecond.
  nzsec = | N | GMT second.
  nzyear = | N | GMT year corresponding to reference time in file.
  o = | F | Event origin time (seconds relative to reference time.)
  odelta = | F | Observed increment if different from nominal value.
  scale = | F | Multiplying scale factor for dependent variable
  stdp = | F | Station depth below surface (meters).
  stel = | F | Station elevation (meters).
  stla = | F | Station latitude (degrees, north positive)
  stlo = | F | Station longitude (degrees, east positive).
  t0 = | F | User defined time (seconds picks or markers relative to reference time).
  t1 = | F | User defined time (seconds picks or markers relative to reference time).
  t2 = | F | User defined time (seconds picks or markers relative to reference time).
  t3 = | F | User defined time (seconds picks or markers relative to reference time).
  t4 = | F | User defined time (seconds picks or markers relative to reference time).
  t5 = | F | User defined time (seconds picks or markers relative to reference time).
  t6 = | F | User defined time (seconds picks or markers relative to reference time).
  t7 = | F | User defined time (seconds picks or markers relative to reference time).
  t8 = | F | User defined time (seconds picks or markers relative to reference time).
  t9 = | F | User defined time (seconds picks or markers relative to reference time).
  user0 = | F | User defined variable storage area 0.
  user1 = | F | User defined variable storage area 1.
  user2 = | F | User defined variable storage area 2.
  user3 = | F | User defined variable storage area 3.
  user4 = | F | User defined variable storage area 4.
  user5 = | F | User defined variable storage area 5.
  user6 = | F | User defined variable storage area 6.
  user7 = | F | User defined variable storage area 7.
  user8 = | F | User defined variable storage area 8.
  user9 = | F | User defined variable storage area 9.

  Attributes

  `__dict__` |
  `__doc__` | str(object=’‘) -> str
  `__module__` | str(object=’‘) -> str
  `__weakref__` | list of weak references to the object (if defined)
  `a` | F First arrival time (seconds relative to reference time.)
  `az` | F Event to station azimuth (degrees).
  `b` | F Beginning value of the independent variable.
  `baz` | F Station to event azimuth (degrees).
  `byteorder` | The byte order of the underlying header/data arrays.
  `cmpaz` | F Component azimuth (degrees, clockwise from north).
  `cmpinc` | F Component incident angle (degrees, from vertical).
  `delta` | F Increment between evenly spaced samples (nominal value).
  `depmax` | F Maximum value of dependent variable.
  `depmen` | F Mean value of dependent variable.
  `depmin` | F Minimum value of dependent variable.
  `dist` | F Station to event distance (km).
  `e` | F Ending value of the independent variable.
  `evdp` | F Event depth below surface (meters).
  `evla` | F Event latitude (degrees north positive).
  `evlo` | F Event longitude (degrees east positive).
  `f` | F Fini/end of event time (seconds relative to reference time.)
  `gcarc` | F Station to event great circle arc length (degrees).
  `idep` |
  `ievreg` | I Event geographic region.
  `ievtyp` |
  `iftype` |
  `iinst` | I Type of recording instrument.
  `imagsrc` |
  `imagtyp` |
  `internal0` |
  `iqual` | N Quality of data, as integers. Enum values listed:
  `istreg` | I Station geographic region.
  `isynth` |
  `iztype` |
  `ka` | K First arrival time identification.
  `kcmpnm` | K Component name.
  `kdatrd` |
  `kevnm` | K Event name.
  `kf` | F Fini or end of event time identification.
  `khole` | k Hole identification if nuclear event.
  `kinst` | K Generic name of recording instrument
  `knetwk` | K Name of seismic network.
  `ko` | K Event origin time identification.
  `kstnm` | K Station name.
  `kt0` | F User defined time pick identification.
  `kt1` | F User defined time pick identification.
  `kt2` | F User defined time pick identification.
  `kt3` | F User defined time pick identification.
  `kt4` | F User defined time pick identification.
  `kt5` | F User defined time pick identification.
  `kt6` | F User defined time pick identification.
  `kt7` | F User defined time pick identification.
  `kt8` | F User defined time pick identification.
  `kt9` | F User defined time pick identification.
  `kuser0` | K User defined variable storage area 0.
  `kuser1` | K User defined variable storage area 1.
  `kuser2` | K User defined variable storage area 2.
  `lcalda` | L TRUE if DIST AZ BAZ and GCARC are to be calculated from st event coordinates.
  `leven` | L TRUE if data is evenly spaced.
  `lovrok` | L TRUE if it is okay to overwrite this file on disk.
  `lpspol` | L TRUE if station components have a positive polarity (left-hand rule).
  `mag` | F Event magnitude.
  `nevid` | N Event ID (CSS 3.0)
  `norid` | N Origin ID (CSS 3.0)
  `npts` | N Number of points per data component.
  `nvhdr` | N Header version number. Current value is the integer 6.
  `nwfid` | N Waveform ID (CSS 3.0)
  `nzhour` | N GMT hour.
  `nzjday` | N GMT julian day.
  `nzmin` | N GMT minute.
  `nzmsec` | N GMT millisecond.
  `nzsec` | N GMT second.
  `nzyear` | N GMT year corresponding to reference time in file.
  `o` | F Event origin time (seconds relative to reference time.)
  `odelta` | F Observed increment if different from nominal value.
  `reftime` | Get or set the SAC header reference time as a UTCDateTime instance.
  `scale` | F Multiplying scale factor for dependent variable
  `stdp` | F Station depth below surface (meters).
  `stel` | F Station elevation (meters).
  `stla` | F Station latitude (degrees, north positive)
  `stlo` | F Station longitude (degrees, east positive).
  `t0` | F User defined time (seconds picks or markers relative to reference time).
  `t1` | F User defined time (seconds picks or markers relative to reference time).
  `t2` | F User defined time (seconds picks or markers relative to reference time).
  `t3` | F User defined time (seconds picks or markers relative to reference time).
  `t4` | F User defined time (seconds picks or markers relative to reference time).
  `t5` | F User defined time (seconds picks or markers relative to reference time).
  `t6` | F User defined time (seconds picks or markers relative to reference time).
  `t7` | F User defined time (seconds picks or markers relative to reference time).
  `t8` | F User defined time (seconds picks or markers relative to reference time).
  `t9` | F User defined time (seconds picks or markers relative to reference time).
  `unused23` |
  `user0` | F User defined variable storage area 0.
  `user1` | F User defined variable storage area 1.
  `user2` | F User defined variable storage area 2.
  `user3` | F User defined variable storage area 3.
  `user4` | F User defined variable storage area 4.
  `user5` | F User defined variable storage area 5.
  `user6` | F User defined variable storage area 6.
  `user7` | F User defined variable storage area 7.
  `user8` | F User defined variable storage area 8.
  `user9` | F User defined variable storage area 9.

  Public Methods

  `copy` |
  `from_obspy_trace` | Construct an instance from an ObsPy Trace.
  `lh` | Alias of listhdr method.
  `listhdr` | Print header values.
  `read` | Construct an instance from a binary or ASCII file on disk.
  `to_obspy_trace` | Return an ObsPy Trace instance.
  `validate` | Check validity of loaded SAC file content, such as header/data
  `write` | Write the header and (optionally) data arrays to a SAC binary file.

  Private Methods

  Warning

  Private methods are mainly for internal/developer use and their API might change without notice.

  `_allt` | Shift all relative time headers by some value (addition).
  `_byteswap` | Change the underlying byte order and dtype interpretation of the float,
  `_flush_headers` | Flush to the header arrays any header property values that may not be
  `_format_header_str` | Produce a print-friendly string of header values for __repr__ ,
  `_from_arrays` | Low-level array-based constructor.
  `_set_distances` | Calculate dist, az, baz, gcarc.

  Special Methods

  `__dir__` | default dir() implementation
  `__format__` | default object formatter
  `__init__` | Initialize a SACTrace object using header key-value pairs and a
  `__new__` | Create and return a new object.
  `__reduce__` | helper for pickle
  `__reduce_ex__` | helper for pickle
  `__repr__` |
  `__sizeof__` | size of object in memory, in bytes
  `__str__` |
  `__subclasshook__` | Abstract classes can override this to customize issubclass().

### Thank you!

We would like to thank our contributors, whose efforts make this software what it is. These people have helped by writing code and documentation, and by testing. They have created and maintained this product, its associated libraries and applications, our build tools and our web sites.

#### Contributors

- Ackerley, Nick
- Allgeyer, Sebastien
- Ammon, Charles J.
- Antunes, Emanuel
- Arnarsson, Ólafur St.
- Bank, Markus
- Barsch, Robert
- Behr, Yannik
- Bernardi, Fabrizio
- Bernauer, Felix
- Bes de Berc, Maxime
- Beyreuther, Moritz
- Boltz, Shawn
- Bonaimé, Sébastien
- Carothers, Lloyd
- Chamberlain, Calum
- Chambers, Derrick
- Chen, Zhao
- Clark, Adam
- Danecek, Peter
- Egdorf, Sven
- Engels, Fabian
- Ermert, Laura
- Eulenfeld, Tom

- Fabbri, Tommaso
- Falco, Nicholas
- Fee, Jeremy
- Grellier, Clément
- Grunberg, Marc
- Hammer, Conny
- Heimann, Sebastian
- Heiniger, Lukas
- Hope, Gaute
- Igel, Heiner
- Inza, Adolfo
- Isken, Marius
- Ketchum, David
- Koymans, Mathijs
- Kremers, Simon
- Kress, Victor
- Krieger, Lars
- Krischer, Lion
- Kula, Damian
- Käufl, Paul
- Köhler, Andreas
- Lecocq, Thomas
- Leeman, John
- Legovini, Paride

- Lesage, Philippe
- Li, Yulin
- Lomax, Anthony
- Lopes, Rui L.
- MacCarthy, Jonathan
- Maggi, Alessia
- Martin, Henri
- Medlin, Andrew
- Megies, Tobias
- Meschede, Matthias
- Michelini, Alberto
- Miller, Nathaniel C.
- Morgenstern, Bernhard
- Nof, Ran Novitsky
- Panning, Mark P.
- Parker, Tom
- Pestourie, Romain
- Rapagnani, Giovanni
- Reyes, Celso
- Ringler, Adam
- Rothenhäusler, Nicolas
- Russo, Emiliano
- Sales de Andrade, Elliott

- Satriano, Claudio
- Saul, Joachim
- Scheingraber, Chris
- Schneider, Simon
- Sippl, Christian
- Snoke, Arthur
- Stange, Stefan
- Stähler, Simon C.
- Sullivan, Benjamin
- Tian, Dongdong
- Trabant, Chad
- Trani, Luca
- Uieda, Leonardo
- Walker, Andrew
- Walther, Marcus
- Wassermann, Joachim
- Williams, Mark C.
- Winkelman, Andrew
- Zaccarelli, Riccardo
- Zad, Seyed Kasra Hosseini
- Zhu, Lijun
- van Driel, Martin
- van Wijk, Kasper

#### Funds

ObsPy was partially funded by the

- German Science Foundation (DFG) via grant DFG IG 16/9-1
- German Ministry for Education and Research (BMBF), GEOTECHNOLOGIEN grant 03G0646H.
- NERA project (Network of European Research Infrastructures for Earthquake Risk Assessment and Mitigation) under the European Community's Seventh Framework Programme (FP7/2007-2013) grant agreement n° 262330
- Leibniz Institute for Applied Geophysics (LIAG)
- VERCE EU-FP7 project (no. 283543)