./geography/py-obspy, Python framework for seismological observatories

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]

Branch: CURRENT, Version: 1.1.0nb1, Package name: py27-obspy-1.1.0nb1, Maintainer: pkgsrc-users

ObsPy is an open-source project dedicated to provide a Python framework for
processing seismological data.

Required to run:
[graphics/py-matplotlib] [lang/g95] [shells/bash] [devel/py-setuptools] [databases/py-sqlalchemy] [textproc/py-lxml] [math/py-scipy] [math/py-numpy] [lang/python27] [devel/py-decorator] [devel/py-requests] [devel/py-future]

Required to build:

Master sites:

SHA1: 511e816d1fb40409c790aa1eb412a7c2687b2fbe
RMD160: cfc1c65b2bd956990baea2316d8221da82efbecd
Filesize: 23308.891 KB

Version history: (Expand)

CVS history: (Expand)

   2017-12-28 15:03:29 by David A. Holland | Files touched by this commit (2) | Package updated
Log message:
Restore plist vars, clobbered by last update.
   2017-11-13 08:49:46 by Wen Heping | Files touched by this commit (3) | Package updated
Log message:
Update to 1.1.0

Upstream changes:
1.1.0: (doi: 10.5281/zenodo.165135)
 - General:
   * Read support for Guralp Compressed Format (GCF) waveform data,
     obspy.io.gcf (see #1449)
   * Read support for Reftek 130 (rt130) waveform data,
     obspy.io.reftek (see #1433)
   * Add Nordic format (s-file) read/write (see #1517)
   * Read and write support for events in the SCARDEC catlogue format
     (see #1391).
   * Read support for IASPEI ISF ISM 1.0 Bulletin event data,
     (see #1946)
   * Write support for AH (Ad Hoc version 1) format (see #1754)
   * Client to access the Nominal Response Library (NRL) (see #1185).
   * `obspy.read_inventory()` can now read dataless SEED and RESP files
     (see #1185).
   * change version number scheme for scenarios when no official version number
     can be determined (see #1889 and #1916)
   * Support for the IRIS Federator and EIDAWS FDSNWS web routing services
     (see #1779 and #1919).
 - obspy.core:
   * UTCDateTime is now based on nanoseconds (long) instead of a unix
     timestamp in microseconds (float) - resulting in higher precision and
     support for years 1-9999 (see #1325)
   * Ensure that Trace.data is always C-contiguous in memory (see #1732)
   * Event/ResourceIdentifier is now object aware, meaning even if two
     objects share a resource_id the distinct objects will be returned with
     the get_referred_object method provided both are still in scope. If one
     of the objects gets garbage collected, however, a warning will be issued
     and the behavior will be the same as before (see #1644).
   * Better error message when attempting to write invalid QuakeML resource
     ids (see #1699).
   * Stream/Trace.write() can now autodetect file format from file extension
     (see #1321).
   * New convenience property `.matplotlib_date` for `UTCDateTime` objects to
     get matplotlib datetime float representation (which can be used in
     time-based matplotlib axes, e.g. by Stream.plot(); see #1339).
   * Trace.times() has new options `type` and `reftime` to support fetching an
     array of sampletimes in various different timing varieties \ 
     the old default, float relative to trace starttime or `reftime` in
     seconds; "utcdatetime": absolute times as UTCDateTime objects;
     "timestamp": array of float POSIX timestamps, compare
     `UTCDateTime.timestamp`; "matplotlib": array of float matplotlib \ 
     useful for plotting on matplotlib time axes; see #1307)
   * A trace's stats.network/station/location/channel can now also be set in
     one line using a SEED ID string (e.g. `trace.id = "GR.FUR..HHZ"`,
     see #1439).
   * Instrument correction for response list stages originating from inventory
     objects (see #1514).
   * `Stream.rotate(...)` can now also be used to rotate unaligned channels to
     Z-N-E, given an Inventory (see #1310)
   * Non finite floats (NaN, inf, -inf) can now no longer be set for all
     event objects (see #1597).
   * Instrument responses can now also be calculated for a given list of
     frequencies (see #1598).
   * Order of extra tags for event type classes serialized to QuakeML can now
     be controlled by using an OrderedDict (see #1617)
   * Bode plots can now optionally plot the phase in degrees (see #1763).
   * `Stream.select()` now also works on the component level if channels only
     have one letter (see #1847).
   * Now strips all invalid characters from the temporary filenames used for
     downloading data using the `read_X()` methods (see #1958).
 - obspy.clients.earthworm:
   * Much faster trace unpacking (see #1762).
 - obspy.clients.fdsn:
   * empty SEED codes (e.g. ``network=''``) will now be properly sent to the
     server as options and not omitted, which led to wildcard matching (for
     details see #1578)
   * The mass downloader now has `exclude_networks` and `exclude_stations`
     arguments to not download certain pieces of data. (see #1305)
   * The mass downloader can now download stations that are part of a given
     inventory object.
   * The mass downloader now also works with restricted data. (See #1350)
   * No data (HTTP 204) responses now raise `FDSNNoDataException` rather than
     the more general `FDSNException`.
   * Fixing cross implementation of bulk waveform and station requests (see
   * Adding mappings for the TEXNET (see #1852) and the ICGC (see #1902)
   * Support for the non-standard EIDA token authentication (see #1928).
 - obspy.imaging:
   * The functionality behind the `obspy-scan` command line script has been
     refactored into a `Scanner` class so that it can be reused in custom
     workflows. (see #1444)
 - obspy.imaging.cm:
   * new colormap: viridis_white. This is a modification of viridis that
     goes to white instead of yellow but remains perceptually uniform. It
     is especially useful for printing when an image should merge with the
     white background.
 - obspy.imaging.waveform:
   * Support for filling the wiggles when plotting sections (horizontal and
     vertical, see #1445).
 - obspy.io.arclink:
    * Read support for Arclink Inventory XML (see #1539)
    * default for `route` parameter in metadata requests is changed to `False`
      (see #1756)
 - obspy.io.ascii:
    * Custom formatting of sample values when writing SLIST and TSPAIR.
 - obspy.io.datamark:
    * Renamed without deprectation to obspy.io.win to match its original name.
      Datamark is a datalogger, saving the WIN format.
 - obspy.io.gse2:
    * Read support for GSE2.0 bulletin (see #1528)
 - obspy.io.nlloc:
    * Also parse author information and COMMENT line (see #1484)
    * Fix reading hypocenter files created by NonLinLoc versions of the 6.0.x
      beta branch (see #1760 and #1783)
 - obspy.io.quakeml:
    * Read and write support for nested custom tags (see #1463)
    * Fix some minor bugs that could lead to empty stub elements, e.g. like
      empty MomentTensor when reading and later writing again a QuakeML file
      with a FocalMechanism but no MomentTensor, potentially resulting in
      QuakeML files that breach the QuakeML schema (see #1896)
 - obspy.io.seiscomp:
    * Read and write support for SC3ML event (see #1638 and #1848)
    * Fix bug where files with arbitrary publicIDs and files with missing
      depth, latitude, longitude, or elevation tags could not be read
      (see #1817)
 - obspy.io.stationtxt:
    * Write support for stationtxt format (see #1466)
 - obspy.io.stationxml:
    * Read and write support for custom tags (see #1024)
    * No longer add the (unused) time zone field to StationXML datetimes to
      follow the example of big data centers. (see #1572)
    * Level of detail can be specified during inventory write (see #1830)
      using the level keyword (one of: network, station, channel, response).
    * Skip empty and incomplete channels during reading (see #1839, #1840).
 - obspy.io.segy:
    * Fixing an issue when comparing two still packed SEG-Y trace headers
      (see #1735).
    * Iterative reading of large SEG-Y and SU files with
      `obspy.io.segy.segy.iread_segy` and `obspy.io.segy.segy.iread_su`.
      (see #1400).
    * Write correct revision number (see #1737).
    * Textual headers will now always contain the file revision number and the
      end header mark if nothing else exists at these positions (see #1738).
    * The SEG-Y format detection now also checks the format version number
      (see #1781).
    * Enable reading SEG-Y files that have day of year 0 in trace header
      (see #1722).
    * Write textual file headers also if given as a text string
      (see #1811, #1813).
 - obspy.io.css:
   * Read support for NNSA KB Core format waveform data. (see #1332)
 - obspy.io.mseed:
   * New generic get_flags() utility function able to retrieve statistics
     about all fixed header flags and the timing quality. This makes the
     get_timing_and_data_quality() function obsolete which is thus
     deprecated and will be removed with the next release. The get_flags()
     function is also much faster. (see #1141)
   * Always hook up the libmseed logging to its Python counterpart to avoid
     some rare segfaults. (see #1658)
   * Update to libmseed v2.19.5 (see #1703, #1780, #1939).
   * Correctly read MiniSEED files with a data offset of 48 bytes (see #1540).
   * InternalMSEEDReadingError now called InternalMSEEDError and
     InternalMSEEDReadingWarning now called InternalMSEEDWarning as both
     can now also be raised in non-reading contexts (see #1658).
   * Should no-longer segfault with arbitrarily truncated files (see #1728).
   * Will now raise an exception when attempting to directly read mini-SEED
     files larger than 2048 MiB (#1746).
   * `.stats.mseed` attributes are no longer per-file but per-trace where
     applicable (see #1782).
   * `get_record_information()` - Don't fail if the word order is invalid.
 - obspy.io.nlloc:
   * Set preferred origin of event (see #1570)
 - obspy.io.nordic:
   * Add Nordic format (s-file) read/write (see #1517)
 - obspy.io.win:
   * see obspy.io.datamark.
 - obspy.io.xseed:
   * Added azimuth and dip to the get_coordinates() function. (see #1315)
   * Fixing some issues with the get_resp() output on Python 3 (see #1748).
   * Can now also parse RESP files (see #1185).
   * Can transform responses in the Parser object to ObsPy Inventory objects
     (see #1185).
 - obspy.scripts:
   * obspy-scan command line script now also plots and prints overlaps
     alongside gaps (see #1366)
   * obspy-plot now has option to disable min/max plot (see #1583)
 - obspy.signal:
   * fixed a bug in calibration.rel_calib_stack (resulting amplitude response
     had wrong scaling if using non-default "overlap_fraction", see #1821)
   * fixed a bug in coincidence_trigger() with event templates. when a template
     with mismatching SEED ID was encountered all following (potentially valid)
     templates were skipped as well (see #1850)
   * New obspy.signal.quality_control module to compute quality metrics from
     MiniSEED files. (see #1141)
   * New correlate function for calculating the cross-correlation function
     (new implementation based on Scipy).
     To calculate the shift of the maximum of the cross correlation use
     xcorr_max. The old xcorr function is deprecated but currently still
     exists (see #1585).
   * New obspy.signal.regression module to compute linear regressions, with or
     without weights, with or without allowing for an intercept. (see #1716,
   * add new plotting capabilities to PPSD (temporal variations per frequency
     and spectrogram-like plot) and also make underlying processed PSDs
     available via `PPSD.psd_values` property (see #1327)
   * Fixed bug in `rotate2zne()` for non-orthogonal configurations
     (see #1913, #1927).
   * Fixed build warnings in evalresp, partially backported from evalresp
     4.0.6 (see #1939).
 - obspy.taup:
   * Add obspy.taup.taup_geo.calc_dist_azi, a function to return the distance,
     azimuth and backazimuth for a source - receiver pair. (see #1538)
   * Fixing calculations through very small regional models. (see #1761)
   * Updated ray path plot method, added travel time plot method, and wrapper
     functions for both ray path and travel time plotting. (see #1501, #1877)
   2017-03-04 12:05:35 by Wen Heping | Files touched by this commit (3) | Package updated
Log message:
Update to 1.0.3

Upstream changes:
1.0.3: (doi: 10.5281/zenodo.165134)
 - obspy.core:
   * properly pass through kwargs specified for Trace.plot() down to the
     low-level plotting routines (e.g. events were not shown properly in
     dayplot of a trace, see #1566)
   * properly pass through kwargs from Stream.detrend() to Trace.detrend()
     (see #1607)
   * Correctly splitting masked arrays in Trace objects for a couple of corner
     cases (see #1650, #1653).
 - obspy.core.event.source:
   * Fix `farfield` if input `points` is a 2D array. (see #1499, #1553)
 - obspy.clients.earthworm:
   * Better end of stream detection. (see #1605)
   * More efficient unpacking of server response. (see #1680)
 - obspy.clients.neic:
   * Better end of stream detection. (see #1563)
 - obspy.clients.seedlink:
   * Better end of stream detection. (see #1605)
 - obspy.clients.seishub:
   * Fix wrong kwargs `first_pick` and `last_pick` in
     `Client.event.get_list()`. (see #1661)
 - obspy.io.mseed:
   * ObsPy can now also read (Mini)SEED files with noise records. (see #1495)
   * ObsPy can now read records with a data-offset of zero. (see #1509, #1525)
   * ObsPy can now read MiniSEED files with micro-second wrap arounds.
     (see #1531)
   * ObsPy can now read MiniSEED files with no blockette 1000. (see #1544)
   * ObsPy now always writes Blockette 100 if sampling rate accuracy is
     otherwise lost. (see #1550)
   * obspy.io.mseed.util.set_flags_in_fixed_header() now works with Python 3
     and also for files with Blockette 100 (see #1648).
 - obspy.io.quakeml:
   * write StationMagnitude.residual even when it is zero (see #1625)
   * read & write Event.region
 - obspy.io.sac:
   * `SACTrace.lpspol` and `lcalda` are `True` and `False` by default, when
      created via `SACTrace.from_obspy_trace` with a `Trace` that has no SAC
      inheritance. (see #1507)
   * Reference time not written to SAC file when made from scratch
     (see #1575)
 - obspy.io.sh:
   * Fix writing of long headers for python3
   * Whitespace in header fields is not ignored anymore (see #1552)
 - obspy.io.stationxml:
   * Datetime fields are written with microseconds to StationXML if
     microseconds are present. (see #1511)
 - obspy.io.zmap:
   * Use first origin/magnitude when writing to zmap if no origin/magnitude is
     set as preferred. (see #1569)
   * Parse origin time seconds as a float to avoid losing accuracy (see #1573)
 - obspy.signal:
   * PPSD: fix warning message on Python 3 that gets shown when waveforms and
     metadata mismatch (see #1506)
 - obspy.taup:
   * Allow for more than 10 phases with identical names (can happen for certain
     custom models, see #1593).
   2016-09-07 15:36:35 by Richard PALO | Files touched by this commit (1)
Log message:
Apparently python3 insists that print arguments are inside parens
should fix PLIST issues on py34 & py35
   2016-09-05 18:09:11 by Richard PALO | Files touched by this commit (1)
Log message:
PYTHONBIN doesn't exist during the first phase of the build.
   2016-08-20 20:56:56 by Richard PALO | Files touched by this commit (2) | Package updated
Log message:
remove obsoleted dependency on py-suds permitting the package to build
under py3 necessiting a bump of PKGREVISION for changed dependencies.

Update PLIST processing to use egg.mk and add support to other platforms
than NetBSD x86_64.

At the request of wen@, MAINTAINER is now set to pkgsrc-users@
(thanks to wiz@ for early feedback too)
   2016-08-07 12:36:44 by Wen Heping | Files touched by this commit (3) | Package updated
Log message:
Update to 1.0.2

Upstream changes:
1.0.2: (doi: 10.5281/zenodo.49636)
 - obspy.core:
   * Added workaround for numpy issue where many FFTs of various lengths fill
     a cache that never gets cleared, effectively creating a memory leak
     (see #1424).
   * Trace.filter and Stream.filter don't work on masked arrays anymore because
     it produced unpredictable results due to the un-initialized data-chunk.
     The uninitialized masked gap is now also initialized to np.nan in case
     of floating point data which and a consistent fill value in case of
     integer data. (see #1363)
 - obspy.clients.fdsn:
   * Fixing issue with location codes potentially resulting in unwanted data
     to be requested. (see #1422)
   * Included low-gain seismometers in default channel filters in
     mass-downloader, also included non-oriented channels by default
     (see #1373).
 - obspy.db:
   * Fixed a bug in obspy-indexer command line script (see #1369,
     command line script was not working, probably since 0.10.0)
 - obspy.imaging:
   * Fixed a bug that leads to pressure/tension color blending when plotting
     semi-transparent DC beachball patches (i.e. with "alpha" not \ 
equal to 1,
     see #1464)
   * Fixed a bug when plotting non-DC beachball patches without fill colors
     (i.e. with "nofill=True", see #1464)
   * Fix arbitrary units in waveform section plot's offset axis, making it
     possible to add customizations to the plot afterwards (see #1382, see
 - obspy.io.ascii:
   * Fixed a bug that lead to wrong header information in output files when
     writing non-integer sampling rate data to SLIST or TSPAIR formats
     (see #1447)
- obspy.io.cmtsolution:
   * Make sure newer CMTSOLUTION files can also be read (see #1479).
 - obspy.io.gse2:
   * Fixed a bug that could lead to network code not present in GSE2 output
     (see #1448)
 - obspy.io.mseed:
   * Fixed a bug in obspy-mseed-recordanalyzer (see #1386)
 - obspy.io.nlloc:
   * Use geographic coordinates from the NonLinLoc Hypocenter-Phase file if
     no custom coordinate converter is provided. (see #1390)
   * Fix reading NonLinLoc Hypocenter-Phase files with more than one
     hypocenter in it. (see #1480)
   * Fix reading NonLinLoc Hypocenter-Phase files with unicode characters in
     them. (see #1483)
 - obspy.io.quakeml:
   * Fixed issue with improperly raised warnings when the same file is read
     twice. (#1376)
   * Fix writing empty network/station/channel codes in WaveformStreamID
     objects to QuakeML. (see #1483)
 - obspy.io.sac:
   * Try to set SAC distances (dist, az, baz, gcarc) on read, if \ 
"lcalda" is
     true.  If "dist" header is found, distances aren't calculated.
   * SACTrace class returns header values as native Python types instead of
     NumPy types.
   * SACTrace.iqual is no longer accepts enumerated string values, but
     arbitrary integer values. (see #1472)
   * SACTrace.read now replaces non-ASCII and null-termination characters in
     string headers with whitespace unless the "debug_strings=True" flag is
     used. (see #1432)
 - obspy.io.stationxml:
   * Always set the number attribute for poles and zeros. (see #1481)
 - obspy.signal:
   * PPSD.plot(): fix plotting of percentiles, mode and mean and setting
     period limits when using "xaxis_frequency=True" (see #1406, #1416)
   * Work around a bug in SciPy that results in wrong results for bandpass
     filter when using Nyquist frequency (or higher) as high corner of the
     passband (see #1451)
 - obspy.taup:
   * Fixing path for Pn. (see #1392)
   2016-07-16 06:11:55 by Wen Heping | Files touched by this commit (3) | Package updated
Log message:
Update to 1.0.1

Upstream changes:
1.0.1: (doi: 10.5281/zenodo.48254)
 - General:
   * Some methods might have unnecessarily upcasted float32 arrays to float64.
     Now methods for which it makes sense and which don't lose accuracy don't
     upcast float32 arrays. Integers are still upcasted. Trace.resample() will
     also no longer return the original dtype which might have resulted in a
     large loss of accuracy but it now always returns float64 arrays.
     (see #1302)
 - obspy.core:
   * Trace.normalize() does no longer divide by zero in case an all-zeros
     data trace is being used. (see #1343)
   * Inventory.select() and consorts now behave as expected even with empty
     child elements. (see #1126, #1348)
   * Code formatting is no longer checked for clean release versions. Thus
     updates to the linters no longer break the tests for releases.
     (see #1312)
   * remove_response(..., pre_file=None, plot=True) works again. (see #1320)
 - obspy.clients.arclink:
   * Restored ArcLink encryption support. (see #1352, #1347)
 - obspy.clients.fdsn:
   * Local URLs are now recognized as valid URLs. (see #1309)
   * Some bug fixes for the mass downloader. (see #1293, #1304)
   * The NOA node has been added to the list of known nodes.
     (see 2347a25714bc3e16068031f4b6138fafd627d34e)
 - obspy.io.sac:
   * More automatic merging of SAC and ObsPy headers. The new `obspy.io.sac`
     modules thus behaves more like the old one and more in line with
     expectations of users. (see #1285)
   * No more out of bounds errors when assigning coordinates. (see #1300)
   * The evdp header can be set again. (see #1345)
   * Correctly propagating sampling rate changes to the SAC headers.
     (see #1317)
   * Always set nvhdr, leven, lovrok, iftype to ensure valid SAC files.
     (see #1204)
 - obspy.io.xseed:
   * The Parser.get_paz() method now works with multiple blockette 53s.
     (see #1281)
 - obspy.taup
   * Fixed wrong azimuth direction for paths > 180 degrees distance (see #1289)
   * Azimuth is appended to arrivals as well (see #1289)
   * Fixed issue with taup cache function on Python 2.7. (see #1308)

 - General:
   * Requirements have been increased to reflect latest distributions:
     * Removed support for Python 2.6.
     * Added support for Python 3.5.
     * matplotlib >= 1.1.0 is now required.
     * numpy >= 1.6.1 is now required
     * scipy >= 0.9.0 is now required
   * Reorganized the submodule structure. We provide a deprecation path so the
     old imports will continue to work for one ObsPy version.
   * Consistent naming scheme across the code base. This results in some
     functions having different names. Most things that worked with ObsPy 0.10
     will continue to work with this version, but starting with the next
     version they will fail. Pay attention to the deprecation warnings.
   * Support for additional waveform data formats:
     - Read support for the ASCII format for waveforms from the K-NET and
       KiK-net strong-motion seismograph networks.
   * Support for additional event data formats:
     - CMTSOLUTION files used by many waveform solvers.
     - ESRI shapefile write support, useful in GIS applications (see #1066)
     - Google Earth KML output.
   * Support for additional station data format:
     - The FDSN web service station text format can now be read.
     - Read support for the NIED's moment tensor TEXT format (see #1125)
     - Google Earth KML output.
     - Read support for SeisComP3 inventory files.
 - obspy.core:
   * New method for generating sliding windows from Stream/Trace windows.
     (see #860)
   * Stream/Trace.slice() now has the optional `nearest_sample` argument from
   * Trace.remove_response() now has `plot` option to show/output a plot of all
     individual steps of instrument response removal in frequency domain
     (see #1116).
   * New method Stream/Trace.remove_sensitivity() to remove instrument
   * Fix incorrect parsing of some non-ISO8601 date/time strings. (see #1215)
   * Added plotting method to Event (customizable subplots from a selection
     of map, beachball and farfield radiation plots, see #1192)
 - obspy.clients.fdsn:
   * Replace FDSN webservice shortcut `NERIES` with `EMSC` and deprecate the
     `NERIES` shortcut, will be removed in a future release (see #1146).
   * Now requests gzipped data for the XML files. Much smaller files!
   * The station service can now also be used to download files in the text
     format. This has limited information but is much faster.
   * New mass downloader to assist in downloading data across a large number
     of FDSN web services.
   * Catch invalid URLs when initialising Client and avoid confusing error
     messages (see #1162)
 - obspy.clients.filesystem.sds:
   * New client to read data from local SDS directory structure (see #1135).
   * Command line script `obspy-sds-report` to generate html page with
     information on latency, data availability percentage and number of gaps
     for a local SDS archive (see #1202)
 - obspy.clients.neries:
   * Removed the dedicated client. Data can still be accessed by using the FDSN
 - obspy.clients.syngine:
   * New client for the IRIS Syngine service to retrieve custom synthetic
 - obspy.imaging:
   * Experimental support for Cartopy when plotting maps. Use the `method`
     argument to functions that plot maps to select between Basemap or Cartopy.
   * New default colormap for all plots. A backport of the new viridis colormap
     from matplotlib is available for those using older matplotlib releases.
   * Added plotting routines for farfield radiation patterns of moment tensors
 - obspy.io.kml:
   * New module for Google KML output of Inventory and Catalog objects
     (e.g. for use in Google Earth)
 - obspy.io.mseed:
   * Upgrade to libmseed 2.16
 - obspy.io.seiscomp.sc3ml:
   * New module reading SeisComP3 inventory files to ObsPy inventory objects
     (see #1182).
 - obspy.io.shapefile:
   * New module for ESRI shapefile write support (see #1066)
 - obspy.io.stationtxt:
   * New module reading the FDSN station files.
 - obspy.signal:
   * Switch to second-order sections for filters; backported from SciPy 0.16.0
     (see #1028)
   * New Lanczos interpolation/resampling (see #1101)
   * Higher order detrending methods (see #1173)
   * PPSD (see #931, #1108, #1130, #1187):
     - Algorithm for PSD computation was improved, especially affecting results
       at long periods (for detailed discussion see #931 and #1108).
     - Keywords `paz` and `parser` were removed in favor of new keyword
       `metadata`. PPSD now accepts `metadata` in a much wider range
       of formats:
          * Inventory objects (e.g. from StationXML or from FDSN webservice)
          * obspy.io.xseed Parser objects (e.g. from dataless SEED file)
          * filename of a RESP file
          * dictionary with poles and zeros information (like in
            prior versions)
       Most old codes should still work, issuing a deprecation warning, but
       old code that specifies *both* `paz` and `parser` keywords will raise
       an exception.
     - Whenever possible (i.e. when using for `metadata` an Inventory,
       a Parser or a RESP file), response calculation now takes into account
       the full response (all stages) as opposed to only using the poles and
       zeros response stage (as was done in previous versions when using a
       Parser object). When using a poles and zeros dictionary response
       calculation is unchanged (as no information on other stages is
       available, of course).
     - PPSD now stores the psd for each time segment that gets processed,
       instead of only storing the stacked histogram. That way, differing
       custom stacks with various selection criteria (e.g. time of day, by
       weekday, etc.) can now be made from the same processed data
       (see #1130).
     - New save/load mechanism using numpy .npz binary format that circumvents
       some problems with the old pickle mechanism:
       `PPSD.save_npz()` and `PPSD.load_npz()` (and `PPSD.add_npz()` to add
       data from additional npz files)
     - Change default colormap to new obspy default sequential colormap
       (matplotlibs new viridis colormap). The old PQLX colormap is provided by
       `obspy.imaging.cm.pqlx` and can be used with
       `PPSD.plot(..., cmap=...)`.
     - new option `PPSD.plot(..., cumulative=True)` for a cumulative plot of
       the histogram, i.e. a non-exceedence percentage visualization, similar
       to the `percentile` option.
     - x axis in `PPSD.plot()` can be switched to frequency in Hz with
       `PPSD.plot(..., xaxis_frequency=True)` (see #1130)
     - changes to special handling of rotational: now handled by kwarg
       `special_handling="ringlaser"` (kwarg `is_rotational_data` is
       deprecated, see #916)
     - special handling option for hydrophone data (no differentiation, see
     - bin width on frequency axis can now be controlled using
       `PPSD(..., frequency_bin_width_octaves=...)` (in fractions of octaves,
       default is the old fixed setting of 1/8 octaves as in PQLX)
 - obspy.taup
   * Added support for nd file format for input velocity models. Allows for
     named discontinuities at arbitrary depths allowing for less Earth like
     models (see #1147).
   * Added three methods (`get_travel_times_geo()`, `get_pierce_points_geo()`
     and `get_ray_paths_geo()`) to `TauPyModel` to handle station and
     event location data as latitude and longitude, instead of the source to
     station distance in degrees. In addition `get_ray_paths_geo()` and
     `get_pierce_points_geo()` decorate the returned pierce points and ray
     paths with the latitude and longitude of each point. Some functionality
     needs the `geographiclib` module to be installed. (See #1164.)
   * ObsPy now ships with a bunch of new velocity models in addition to the
     existing ones: `prem`, `sp6`, `1066a,b`, `herrin` (See #1196).
   * Add support for buried receivers (see #1103.)
   * Port more accurate calculation of ray parameter from Java. The effect is
     stronger for longer phases, but also corrects issues with shorter body and
     surface waves (see #986.)
   * Fix incorrect branch splitting which also caused issues for extremely
     shallow phases (see #1057.)
   * Proper cache for model splits resulting in much faster calculations if
     the source depth is repeatedly the same (see #1248).

  - obspy.core:
    * Fix reading of multiple catalog files using globs (see #1065).
    * Fixed a bug when using
      `Trace.remove_response(..., water_level=None)`.
      With that setting that is supposed to not use any water level
      stabilization in the inversion of the instrument response
      spectrum actually the instrument response was never inverted and
      thus instead of a deconvolution a convolution was performed
      (see #1104).
    * Fixing floating point precision/rounding issue with UTCDateTime when
      initializing with floating point seconds, i.e. with microseconds,
      that could lead to microseconds being off by 1 microsecond
      (see #1096)
    * Correct gap/overlap time returned by Stream.get_gaps() and printed
      by Stream.print_gaps() which was incorrect by one time the sampling
      interval (see #1151)
    * Stream.get_gaps(): return overlaps specified in units of samples
      as negative integers (see #1151)
  - obspy.fdsn:
    * More detailed error messages on failing requests (see #1079)
    * Follows redirects for POST requests (see #1143)
  - obspy.imaging:
    * fix some bugs in `obspy-scan` (see #1138)
  - obspy.mseed:
    * Blockette 100 is now only written for Traces that need it. Previously
      it was written or not for all Traces, depending on whether the last
      Trace needed it or not. (see #1069)
    * Fixed a bug that prevented microsecond accuracy for times before 1970
      (see #1102).
    * Updated to libmseed 2.17.
  - obspy.signal:
    * Bug fixed within rotate.rotate2zne(). Additionally it can now also
      perform the inverse rotation (see #1061).
    * Bug fixed in triggering. When using option `max_len_delete` and a trigger
      occurred right before the end of data, one trigger was potentially lost
      (see #1145 for details).
  - obspy.station:
    * Plotting responses across multiple channels is more robust now in
      presence of some strange channels (e.g. with zero sampling rate,
      happens e.g. for state of health channels, see #1115)
    * ObsPy no longer assumes that the StationXML namespace is the default
      namespace (see #1060).
    * Checking if a file is a StationXML file is less rigorous (and much
      faster) now (not checking strict validity against xsd schema but
      only looking for a FDSNStationXML root element, see #1114).
      This means that `read_inventory()` without explicitly specified
      format will correctly detect more files as StationXML that have very
      slight breaches of the schema but still can be interpreted as
    * fix saving `xcorrPickCorrection()` results to an image file (see #1154)
  - obspy.taup:
    * Calculating arrival times for surface waves now works (see #1055)
    * Calculating arrivals for underside reflections now works (see #1089)
  - obspy.y:
    * correct misspelled name of a Y specific header field (see #1127)
  - obspy.zmap
    * Add support for time values with sub-second precision (see #1093)