.. _reading-seismogramms: =================== Reading Seismograms =================== Seismograms of various formats (e.g. SAC, MiniSEED, GSE2, SEISAN, Q, etc.) can be imported into a :class:`~obspy.core.stream.Stream` object using the :func:`~obspy.core.stream.read` function. :class:`Streams ` are list-like objects which contain multiple :class:`~obspy.core.trace.Trace` objects, i.e. gap-less continuous time series and related header/meta information. Each :class:`~obspy.core.trace.Trace` object has a attribute called ``data`` pointing to a NumPy_ :class:`~numpy.ndarray` of the actual time series and the attribute ``stats`` which contains all meta information in a dictionary-like :class:`~obspy.core.trace.Stats` object. Both attributes ``starttime`` and ``endtime`` of the :class:`~obspy.core.trace.Stats` object are :class:`~obspy.core.utcdatetime.UTCDateTime` objects. The following example demonstrates how a single GSE2_-formatted seismogram file is read into a ObsPy :class:`~obspy.core.stream.Stream` object. There exists only one :class:`~obspy.core.trace.Trace` in the given seismogram: .. doctest:: >>> from obspy import read >>> st = read('http://examples.obspy.org/RJOB_061005_072159.ehz.new') >>> print(st) 1 Trace(s) in Stream: .RJOB..Z | 2005-10-06T07:21:59.849998Z - 2005-10-06T07:24:59.844998Z | 200.0 Hz, 36000 samples >>> len(st) 1 >>> tr = st[0] # assign first and only trace to new variable >>> print(tr) .RJOB..Z | 2005-10-06T07:21:59.849998Z - 2005-10-06T07:24:59.844998Z | 200.0 Hz, 36000 samples ------------------- Accessing Meta Data ------------------- Seismogram meta data, data describing the actual waveform data, are accessed via the ``stats`` keyword on each :class:`~obspy.core.trace.Trace`: .. doctest:: >>> print(tr.stats) # doctest: +NORMALIZE_WHITESPACE network: station: RJOB location: channel: Z starttime: 2005-10-06T07:21:59.849998Z endtime: 2005-10-06T07:24:59.844998Z sampling_rate: 200.0 delta: 0.005 npts: 36000 calib: 0.0948999971151 _format: GSE2 gse2: AttribDict({'instype': ' ', 'datatype': 'CM6', 'hang': -1.0, 'auxid': 'RJOB', 'vang': -1.0, 'calper': 1.0}) >>> tr.stats.station 'RJOB' >>> tr.stats.gse2.datatype 'CM6' ----------------------- Accessing Waveform Data ----------------------- The actual waveform data may be retrieved via the ``data`` keyword on each :class:`~obspy.core.trace.Trace`: .. doctest:: >>> tr.data array([-38, 12, -4, ..., -14, -3, -9]) >>> tr.data[0:3] array([-38, 12, -4]) >>> len(tr) 36000 ------------ Data Preview ------------ :class:`~obspy.core.stream.Stream` objects offer a :meth:`~obspy.core.stream.Stream.plot` method for fast preview of the waveform (requires the :mod:`obspy.imaging` module): >>> st.plot() .. plot:: tutorial/code_snippets/reading_seismograms.py .. _NumPy: http://www.numpy.org/ .. _GSE2: https://github.com/obspy/obspy/blob/master/obspy/io/gse2/docs/provisional_GSE2.1.pdf?raw=true