Skip to content

@megies megies released this Jun 29, 2020 · 250 commits to master since this release


  • obspy.core:
    • Fix wrong values in Stats object after deepcopy or pickle of Stats object
      for edge cases (see #2601)
  • obspy.clients.fdsn:
    • EIDA routing client: fix an issue that leaded to a request of all EIDA
      data when requesting an invalid, out-of-epochs time window for a valid
      station (see #2611)
    • update RASPISHAKE URL mapping to use https
    • fix a bug of not handling HTTPException in mass_downloader (see #2606)
    • use the client's set timeout in service discovery, too (see #2656)
    • add URL mapping for FDSNWS at UIB-NORSAR (see #2659)
  • obspy.clients.filesystem:
    • sds: continue get_all_stations() even if encountering an invalid channel
      code (see #2636)
  • obspy.clients.neic:
    • Make client socket blocking (see #2617)
    • Allow 60.0 seconds in the second field of origin times, allow NaN in
      the magnitude field for pha format (see #2627)
    • Fixed a bug raising an exception when reading a nordic file with a non
      positive-definite covariance matrix (see #2593)
    • Fixed an issue where a response has zero zeros or poles (see #2633)
Assets 2
Jun 29, 2020
Jun 29, 2020
Jun 29, 2020

@megies megies released this Mar 11, 2020 · 321 commits to master since this release

ObsPy 1.2.1 (doi: 10.5281/zenodo.3706479)


  • fix an installation issue with pip and setuptools version 46 (see #2578)
  • fix response plots when providing axes=... with a numpy array of Axes
    instances (see #2579)
Assets 2

@megies megies released this Mar 6, 2020 · 327 commits to master since this release

ObsPy 1.2.0 (doi: 10.5281/zenodo.3674646)

Work on this release was in parts and among others supported by the following
institutions/companies and grants (in alphabetical order):

  • Earthquake Commision of New Zealand (EQC), grant 18/753
  • École et Observatoire des Sciences de la Terre - Université de Strasbourg
  • ETH Zürich
  • Friedrich-Schiller-Universität Jena
  • Geoscience Australia
  • Incorporated Research Institutions for Seismology (IRIS), NSF (SAGE) award
    :: EAR-1851048
  • Institut de Physique du Globe de Strasbourg
  • Institut de Physique du Globe de Paris
  • Institutions for Seismology (IRIS) through the PASSCAL Instrument Center at
    New Mexico Tech. The facilities of the IRIS Consortium are supported by the
    National Science Foundation under Cooperative Agreement EAR-1261681 and the
    DOE National Nuclear Security Administration.
  • Istituto Nazionale di Geofisica e Vulcanologia, Osservatorio Etneo (Italy),
    Allegato B2 DPC-INGV 2012-2021 Task 10
  • Ludwig-Maximilians-Universität München
  • National Institute for Occupational Safety and Health
  • Royal Netherlands Meteorological Institute (KNMI)
  • School of Geography, Environment and Earth Sciences, Victoria University of
  • The European Union’s Horizon 2020 research and innovation programme under
    the ChEESE project, grant agreement No. 823844
  • The Royal Observatory of Belgium
  • U.S. Geological Survey


  • obspy.core:
    • Inventory objects have been adapted to StationXML 1.1 for details on
      changes see #2510 and
    • Fixed import of custom plugins (see #2423)
    • Fixed "==" comparison for Stream and Trace which was very slow in case of
      traces with >1e6 samples (see #2377)
    • Added almost_equal method for Stream and Trace classes (see #2286).
    • Casting FDSN identifiers to strings upon setting in the stats dictionary
      (see #1997).
    • UTCDateTime objects will now always evaluate equal if their string
      representations are equal (see #2049).
    • UTCDateTime objects now issue depreciation warnings when setting any
      attributes outside of init, or comparing UTCDateTime objects with
      different precisions (see #2077).
    • UTCDateTime objects can now accept hour, minute, second, and microsecond
      values greater than their normal limits by setting the strict keyword
      argument to False (see #2232).
    • Fixed UTCDateTime(..., julday=366) for non-leap years. This was returning
      January 1st of the next year in case of non-leap years being used. Now it
      properly raises an out-of-bounds ValueError (see #2369)
    • When reading StationXML/SC3ML, make sure to properly read empty string
      fields as empty strings instead of "None" (see #2519 and #2527)
    • Better ISO8601 detection for UTCDateTime objects and UTCDateTime(...,
      iso8601=False) now completely disables ISO8601 handling (see #2447)
    • Added replace method to UTCDateTime class (see #2077).
    • Added remove method to Inventory class (see #2088).
    • Added id property to WaveformStreamID (see #2131).
    • Added str and repr_pretty method for Comment class (see #2115)
    • Added eq to QuantityError so empty instances equal None (see #2185).
    • Reworked the event scoped resource identifiers for the event classes
      hopefully fixing all edge-cases (see #2091).
    • Added a hook to allow users to customize finding objects for
      resource_ids which are not found via the normal means (see #2279).
    • Calling Stream.write(...) on an empty stream will now raise an
      ObsPyException consistently across all I/O plugins (see #2201)
    • Stream.get_gaps() will now properly report gaps within Traces that
      have masked arrays (i.e. Traces that have been merged without a fill
      value, see #2299 and #2300).
    • Added copy method to Inventory class (see #2322).
    • The Response.recalculate_overall_sensitivity() method now accepts integers
      (see #2338, #2343).
    • Added wildcard and url support to read_inventory (see #2326).
    • Modified stream.get_gaps() to deal with overlaps correctly (see #1403)
    • Added option "label_epoch_dates" to Inventory/Network.plot_response() to
      optionally add channel epoch start/end dates to legend labels (see #2309)
    • Deprecated the convert_id_to_quakeml_uri, regenerate_uuid, and
      get_quakeml_uri methods of the ResourceIdentifier class (see #2303).
    • Added get_quakeml_uri_str and get_quakeml_id methods to the
      ResourceIdentifier class (see #2303).
    • New method to create response objects directly from poles and zeros (see
    • Added Stream.stack method (see #2440).
    • Added a component field to the Stats object which allows to get and set
      the last character of the SEED channel (see #2484).
    • Fixed a bug in Stream.plot(type='section', reftime=..., ...) that caused
      wrong relative start times of traces relative to given reftime (see #2493)
    • Fixed a Windows-specific path case issue in a helper function that returns
      a list of untracked files in the git repository (see #2296)
    • Fix a bug that was causing an exception being raised in Response.plot()
      because a float was being passed down to numpy.linspace as length of array
      (see #2533)
    • Geographic select of inventory/network/station (see #2515)
    • Select traces in Stream based on an Inventory (see #2531)
  • obspy.clients.fdsn:
    • Add new _discover_services boolean flag to the Client, which allows the
      Client to skip the initial services query at instantiation. This can
      reduce the load on service providers, but skips checks against unsupported
      query parameters.
    • Adding more location codes to the default priority list in the mass
      downloader (see #2155, #2159).
    • The mass downloader now raises a warning if all channels from a station
      have been deselected due to the default location priorities setting. This
      is a pure usability improvement as it has been confusing users
      (see #2159).
    • Make sure that streams fetched via FDSN are properly trimmed to user
      requested times if data center serves additional data around the start/end
      (see #1887, #2298)
    • Fix a problem that could spam subprocesses that were not closed in routed
      clients (see #2342 and #2344)
    • Make it possible to use signed EIDA tokens and also skip token validation
      completely (see #2297)
    • Adding a mapping for RASPISHAKE
  • obspy.clients.filesystem.tsindex:
    • Add new Client & Indexer modules based on IRIS time series index (see
  • obspy.clients.iris:
    • Results of distaz method are now returned as native floats (see #2499)
  • obspy.clients.neic:
    • Properly use specified timeout value (see #2450)
  • obspy.clients.seedlink:
    • Add method "get_info()" to fetch information on what
      networks/stations/locations/channels are served by the seedlink server
      (see #2405)
    • "get_waveforms()" can now be used with '*' and '?' wildcards in any part
      of requested SEED ID, i.e. network, station, location and channel (see
  • obspy.clients.seishub:
    • Properly handle fetching poles and zeros in presence of multiple metadata
      files for a given station (see #2411)
  • obspy.geodetics:
    • New utility function inside_geobounds() to check whether an object is
      inside a geographic bound (see #2515)
  • obspy.imaging:
    • obspy-scan can now be used with wildcarded SEED IDs when specifying what
      to plot after scanning data (see #2227)
    • Fix a problem in Scanner when loading npz on Python3 that was written on
      Python2 (see #2413)
    • Fix an issue that could make small landmasses not get plotted in basemap
      plots (see #2471, #2477)
    • Fixed a bug in Stream.plot(type='section', reftime=..., ...) that caused
      wrong relative start times of traces relative to given reftime (see #2493)
    • Added read support for receiver gather format v. 1.6 (see #2070)
    • Added read support for FOCMEC 'out' and 'lst' files (see #2156)
    • Added read support for HypoDD 'pha' files (see #2378)
    • Accommodate change in SeisComP3 publicID delimiter from '#' to '/' in
      ArclinkXML (see #2552)
    • Add read support for INGV's DMX format (see #2452)
    • Fixes Python 3.8 compatibility of GCF reader. (see #2505)
    • Fix a bug resulting in an infinite loop when trying to read a FullSEED
      file without any data records (see #2534 and #2535)
    • Add ability to write int64 data to mseed if it can safely be downcast
      to int32 data, otherwise raises ObsPyMSEEDError. (see #2356)
    • The recordanalyzer can now detect calibration blockettes 300, 310,
      and 320 (see #2370).
    • Can now write zero sampling-rate traces. (see #2488, 2509)
    • Add ability to read and write focal mechanisms and moment tensor
      information. (see #1924)
    • Add explicit warnings regarding unsupported sections of Nordic files.
    • Fix mapping of magnitude-types between MS to S and Ms to s.
    • Output preferred origin when writing to Nordic format instead of using
      the first origin (see #2195)
    • Include high-accuracy phase-pick reading and writing - high-accuracy is
      now the default phase-writing format, a boolean flag high_accuracy
      has been added to turn this off. (see #2351 and #2348)
    • Allow long-phase names (both reading and writing) - longer than 4 char.
      (see #2351)
    • Include AIN as takeoff-angle when reading and writing nordic files
      (see #2404).
    • Add error ellipses and read high-accuracy hypocenter lines (see #2451)
    • Fix the incorrect handling of events missing pick evaluation information
      (see #2520)
    • Implement reading reftek encodings '16' and '32' (uncompressed data,
      16/32bit integers, see #2058 and #2059)
    • Implement module to read waveforms and headers from fcnt format (see #2265).
    • Fix reading when start+endtime are inside one data packet (see #2485).
    • Fix bug writing inventory with SOH channels to SACPZ (see #2200).
    • Blank-pad character header variables, as opposed to NUL-padding them, to
      comply with SAC behavior (see #2543).
    • Raise nicer error messages when header packing fails (see #2194, #2196).
    • Show nice error message when trying to write a trace with too many samples
      in it (see #2358, #1393)
    • Handle data format code 3 trace data (#2022, #2385).
    • Improve parsing of free-form entries (#2385).
    • Fix non-native endian data loading (#2385).
    • Adding support for SC3ML 0.10 (see #2024).
    • Update xsl to allow conversion of amplitude picks not associated with
      origins (see #2273).
    • Very large performance improvement reading large sc3ml inventory files by
      pre-indexing sensors, dataloggers and responses and reducing lxml calls
      (see #2296).
    • When reading StationXML/SC3ML, make sure to properly read empty string
      fields as empty strings instead of "None" (see #2519 and #2527)
    • Add read support for SeismicHandler EVT event files (see #2109)
    • Add possibility to add custom database columns when writing catalog or
      inventory objects to shapefile (see #2012 and #2305)
    • Allow writing invalid ids but raise a warning
      (see #2104, #2090, #2093, #1872).
    • Skip invalid enumeration values during reading but raise a warning.
      (see #2106, #2098, #2095)
    • Catalogs with empty event description objects can be round-tripped (see
      #2339, #2340).
    • Correctly handle QuakeML native namespaces (if they are not matching the
      document root's namespace) as custom namespaces and parse them into
      .extra (see #2466)
    • Ability to parse SEED files with extra newlines between blockettes
      (see #2383)
  • obspy.signal.cross_correlation:
    • Add new correlate_template() function with 'full' normalization option,
      required for correlations in template-matching
      (see #2035 and #2042).
    • 'domain' parameter in correlate function is deprecated in favour of new
      'method' parameter to be consistent with recent SciPy versions
      (see #2042).
    • Add correlate_stream_template() and correlation_detector()
      functions to detect events based on template matching (see #2315)
  • obspy.signal.PPSD:
    • Changed numpy-based serialization as to not require pickling (see #2424).
    • Fixed exact trace cutting for PSD segments (see #2040).
    • Timestamp representations internally and in npz I/O were changed to use
      integer nanosecond POSIX timestamps to avoid any potential floating point
      inaccuracies and since this is also what UTCDateTime is based on nowadays
      (see #2045).
    • Fixed the check for new PSD slices whether they should be added or whether
      they would add unwanted duplicated data (see #2229).
    • Fix period_lim option when xaxis_frequency=True (see #2246).
    • Added allow_pickle parameter to PPSD.add_npz and PPSD.load_npz and
      set its default to False (see #2457).
    • Added representation of earthquake models from Clinton & Heaton (2002) in
      'plot()' method using option 'show_earthquakes' (see #2455).
  • obspy.signal.polarization:
    • Fix an issue with covariance matrix in vidale algorithm and make adaptive
      windowing opt-out (see #2565)
    • Fix an issue in selecting Z/N/E traces from given stream (see #2365)
  • obspy.signal.trigger:
    • Fix a bug in AR picker (see #2157)
    • Option to return Baer-Kradolfer characteristic function from pk_mbaer
      function added (see #2341)
  • obspy.taup:
    • Fix cycling through colors in ray path plots (see #2470, #2478)
    • Fix a floating point issue on IBM machines (see #2559, #2560)
Assets 4
You can’t perform that action at this time.