===================================
Changes:
- obspy.core:
* Minimum supported Python version is now 3.8 (see 3081, 3087)
* Minimum supported dependency versions are now numpy 1.20, scipy 1.7 and
matplotlib 3.3 (see 3081, 3087)
* response: avoid reporting all unkown units (e.g. "RAD/S") to evalresp as
displacement ("DIS") which with default value for "output" ("VEL") leads
to evalresp adding a differentiation during response calculation. Instead
report undefined unit, which makes evalresp use response as is and
essentially ignoring "output" parameter (see 2945)
* Improved expanded channel information in string representation of Station,
e.g. when displaying station in IPython shell (see 3024)
* limit length of list which records processing info (see 2882)
* map plots: fix initial map setup, properly pass through user specified
options, like "projection" etc (see 3191)
- obspy.clients.fdsn:
* update URL for NCEDC to https (see 3203)
* add all valid parameters to get_stations_bulk, e.g. geographical
constraints (see 3140)
* do not use autodiscovery of file format in get_stations, unless "format"
is set to something we do not recognize (see 3138)
* fix a bug in routing client that made any request made error out when
"debug=True" was set (see 3214)
* fix raising FDSNTooManyRequestsException when server rejects request due
to rate limiting, due to a bug instead a TypeError was raised (see 3219)
- obspy.clients.seishub:
* submodule removed completely, since it is outdated and not even test
servers have been running for years (see 2994)
- obspy.db:
* submodule removed completely, since mostly being used in discontinued
seishub server (see 2994)
- obspy.imaging:
* spectrogram: change the computation for default window length if not
specified to give useful values for sampling rates much higher or lower
than 100 Hz (see 3093)
* spectrogram: better exception type and messages when input signal is too
short (see 3093)
* map plots: fix initial map setup, properly pass through user specified
options, like "projection" etc (see 3191)
- obspy.io.alsep:
* new module for reading data from the Apollo missions stored in ALSEP
format (see 3156)
- obspy.io.nlloc:
* avoid mangling channel/component code when writing nonlinloc phase file,
just write full channel code unchanged into nonlinloc's "component" field
(see 3223)
* fix reading nonlinloc hypocenter files written by newer nonlinloc
versions, data parsed into Arrivals was wrong (see 3223)
* read geometrical station azimuth instead of ray takeoff azimuth from
hypocenter. This is more robust (ray takeoff values sometimes not accurate
at all) and also follows more the QuakeML documentation that states
"Azimuth of station as seen from the epicenter" which implies a simple
geometrical calculation (see 3224)
* ignore ray takeoff dip if the stated quality for it is "0 - unreliable".
our example data show that values can be blatantly wrong when quality is
reported as "0" (see 3224)
* write timing error as "0.0" if it is not set on a pick, as recommended by
nonlinloc's author (see 2371, 3224)
- obspy.io.nordic:
* add support for writing multiple amplitudes for one pick (only new format)
and writes some amplitude lines more compact (see 3075, also 2814)
* add full support for reading and writing apparent velocity and backazimuth
with new nordic format (see 3075)
* fix comments on angle of incidence vs. takeoff angle (What is called
angle of incidence in Seisan is the same as what is usually referred to as
takeoff angle, see 3075)
* add function to check whether phase is valid IASPEI phase in Seisan (3075)
* full support for writing high-accuracy origin line (see 3075)
- obspy.io.sac:
* expose a `keep_sac_header` flag to the `write` plugin, which allows users
to write a "fresh" SAC header, instead of attempting to merge information
from an old SAC header, if one exists. (see 2760)
* fix writing SACPZ when a channel's sensor filed is unset (see 3187)
- obspy.io.seiscomp:
* update SeisComP 0.11 and 0.12 schema to potentially speed up sc3ml to qml
event catalog conversions (see 3216 and SeisComP/common74)
- obspy.signal:
* coincidence trigger: improve speed of template matching and less memory
usage (see 3104)
* added energy_ratio and modified_energy_ratio trigger methods (see 3161)
* Baer picker: fix a bug that could cause crashes on certain versions of
libffi (see 3183)
* polarization analysis: fix calculation of timestamps of the resulting
values (see 3211)
- obspy.taup:
* add option "indicate_wave_type" to distinguish S waves in ray paths
plot by using wiggly lines for shear waves (see 3047)
* improved accuracy of ray paths by change of root-finding algorithm
in SeismicPhase.refine_arrival (see 3064, 3096)
* improved accuracy of travel time estimates by using theta function
(see 3068)
* add support for models without a core or inner core
(see 1200, 1423, 2086, 2192, 2390, 3070)
* add support for a wider range of diffracted phases, like SedPdiffKP
(see 3085) and PKdiffP (see 3095)
* allow rapid travel time plotting in plot_travel_times by using
precalculated travel times (see 3092)
* return pierce points for any depth (see 1742, 3072)
* bug fix for rays which cannot turn due to low velocity at bottom
of layer (see 3080)
* add some checks for bad phases, so "ScScS" is not allowed
(see 2774, 3082)
* bug fix for sources within high slowness regions (see 2976, 3100)