_read_mseed(mseed_object, starttime=None, endtime=None, headonly=False, sourcename=None, reclen=None, details=False, header_byteorder=None, verbose=None, **kwargs)[source]

Reads a Mini-SEED file and returns a Stream object.


This function should NOT be called directly, it registers via the ObsPy read() function, call this instead.

  • mseed_object Filename or open file like object that contains the binary Mini-SEED data. Any object that provides a read() method will be considered to be a file like object.
  • starttime (UTCDateTime) Only read data samples after or at the start time.
  • endtime (UTCDateTime) Only read data samples before or at the end time.
  • headonly Determines whether or not to unpack the data or just read the headers.
  • sourcename (str) Only read data with matching SEED ID (can contain wildcards ”?” and “*”, e.g. “BW.UH2.*” or “*.??Z”). Defaults to None.
  • reclen If it is None, it will be automatically determined for every record. If it is known, just set it to the record length in bytes which will increase the reading speed slightly.
  • details (bool, optional)

    If True read additional information: timing quality and availability of calibration information. Note, that the traces are then also split on these additional information. Thus the number of traces in a stream will change. Details are stored in the mseed stats AttribDict of each trace. False specifies for both cases, that this information is not available. blkt1001.timing_quality specifies the timing quality from 0 to 100 [%]. calibration_type specifies the type of available calibration information blockettes:

    • 1: Step Calibration (Blockette 300)
    • 2: Sine Calibration (Blockette 310)
    • 3: Pseudo-random Calibration (Blockette 320)
    • 4: Generic Calibration (Blockette 390)
    • -2: Calibration Abort (Blockette 395)
  • header_byteorder (int or str, optional) Must be either 0 or '<' for LSBF or little-endian, 1 or '>' for MBF or big-endian. '=' is the native byte order. Used to enforce the header byte order. Useful in some rare cases where the automatic byte order detection fails.


>>> from obspy import read
>>> st = read("/path/to/two_channels.mseed")
>>> print(st)  
2 Trace(s) in Stream:
BW.UH3..EHE | 2010-06-20T00:00:00.279999Z - ... | 200.0 Hz, 386 samples
BW.UH3..EHZ | 2010-06-20T00:00:00.279999Z - ... | 200.0 Hz, 386 samples
>>> from obspy import UTCDateTime
>>> st = read("/path/to/two_channels.mseed",
...           starttime=UTCDateTime("2010-06-20T00:00:01"),
...           sourcename="*.?HZ")
>>> print(st)  
1 Trace(s) in Stream:
BW.UH3..EHZ | 2010-06-20T00:00:00.999999Z - ... | 200.0 Hz, 242 samples

Read with details=True to read more details of the file if present.

>>> st = read("/path/to/timingquality.mseed", details=True)
>>> print(st[0].stats.mseed.blkt1001.timing_quality)

False means that the necessary information could not be found in the file.

>>> print(st[0].stats.mseed.calibration_type)

Note that each change in timing quality from record to record may trigger a new Trace object to be created so the Stream object may contain many Trace objects if details=True is used.

>>> print(len(st))