Changes:
- General
- obspy.core:
- response: tweaks to allow sane processing of PolynomialResponseStage
responses if they have 2 coefficients or less (see #3632) - response: allow recalculating overall sensitivity even if unit type is not
one of VEL/ACC/DISP (see #3235), add method for calculating the normalization
factor for pole–zero response stages (see #3580) - deprecate
Trace.attach_response()andStream.attach_response()in
favor of passing metadata directly to response-removal methods
(see #2026) - trace: additional catch to remove_response for PolynomialResponseStage
responses with 2 coefficients (see #3632) - trace: 5x quicker retrieval of seed-id with trace.id / trace.get_id()
(see #3251) - inventory: additional formatting tweaks to expanded channel information
(see #3261) - replace pkg_resources with importlib for internal entry point and plugin
handling, add compatibility code for py 3.8 and 3.9 (should not affect
users, see #3333) - read(): better support for reading from file-like objects in many plugins
(see #3346) - allow to specify Trace and Stream filter frequencies as arguments
(see #3294) - improve error messages when traces fail to get merged due to differing
data type, sampling rate etc (see #3418) - add helper methods to change/unify byteorder on trace/stream (see #3418)
- window 'slepian' was removed in Trace/Stream.taper() as it was removed
from scipy with version 1.6, add new window 'dpss' that scipy promotes as
replacement but might need other parameters passed in (see #3331) - UTCDateTime: Using
__slots__, faster comparisons and initialisation (see #3653) - Trace: faster initialisation and stats updates (see #3653)
- util: fix logic bug in _generic_reader to properly catch byte objects
(see #3643) - Ensure UTCDateTime can unpickle old UTCDateTime instances by adding
setstate method (see #3684)
- response: tweaks to allow sane processing of PolynomialResponseStage
- obspy.clients.fdsn
- Natural Resources Canada (NRCAN) added to list of known clients
- Spanish National Geographic Institute (IGN) added to known clients
- GFZ FDSN url updated to https://geofon.gfz.de
- EARTHSCOPE & IRIS updated to https://service.earthscope.org (#3700)
- RESIFPH5 removed (service deprecated)
- EPOSFR defined, will replace RESIF
- Various FDSNWS URL mappings updated to https
- A FDSNNoServiceException is now raised instead of a ValueError when
querying a webservice not present in Client.services (see #3483) - make it possible to opt out of server side gzip compression (see #3469)
- fix a regression introduced by #3306 which lead to some network errors not
getting raised as an FDSNException but some low-level exceptions like
AttributeError, which in turn caused problems in Mass Downloader (see
#3513) - mass downloader: Use the
download(threads_per_client)value for
StationXML downloads. (see #3678)
- obspy.clients.filesystem:
- obspy.clients.neic
- Update the default CWB QueryServer IP address from the old IP to the
new USGS server address (see #3592)
- Update the default CWB QueryServer IP address from the old IP to the
- obspy.clients.seedlink:
- fix a bug in basic client
get_info()which leaded to exceptions when
querying withlevel="channel"in presence of stations with no current
data available. Also, stations without data are now excluded from the
results. See docs forget_info()for information how to see the excluded
stations (see #2808)
- fix a bug in basic client
- obspy.imaging.beachball:
- allow isotropic component to be plotted. Ensure explosions and
implosions plot fully colored/uncolored, and that the correct
"dominant" eigenvalue is chosen. Bug fix to fully implement
check to see if a new segment is needed for the matplotlib patches.
(see #3583) - add tutorial to code_snippets to showcase isotropic plotting.
(see #3583)
- allow isotropic component to be plotted. Ensure explosions and
- obspy.imaging.waveform
- Adapt the code to match the documentation of the section plots, make use
of metres everywhere instead of kilometres (see #3371)
- Adapt the code to match the documentation of the section plots, make use
- obspy.io:
- add read and write support for CSV, EVENTTXT and CSZ formats (see #3285)
- obspy.io.ascii:
- add support for more dtypes (INT32, INT64, FLOAT32 etc) (see #3611)
- obspy.io.cybershake:
- add read support for CyberShake seismogram format (see #3370)
- obspy.io.iaspei:
- read the origin-specific data from the ISF phase block (see #3515)
- obspy.io.kinemetrics:
- obspy.io.mseed:
- _read_mseed can use interpolation search optionally to find start
and end time in O(log(log(N))) for linearly ordered data with
"use_bisection=True" (see #3622) - _read_mseed: 2GB limitation lifted (see #3622)
- _read_mseed: use of numpy.memmap to improve efficiency (see #3622)
- _read_mseed: Can now handle numpy.ndarray(dtype=numpy.int8), and
and anything that can be read into numpy.ndarray(dtype=numpy.int8) with
np.frombuffer to increase efficiency when data is already in memory. (see
#3622) - new routine to spread a time interval progressively across all mseed
blockettes in a file (see #3271)
- _read_mseed can use interpolation search optionally to find start
- obspy.io.nlloc:
- set origin evaluation status to "rejected" if nonlinloc reports the
location run as "ABORTED", "IGNORED" or "REJECTED" (see #3230) - store "NLLOC" info header line in event and origin comments (see #3230)
- add reading of confidence ellipsoids (see #3350)
- add support for reading and writing "PUBLIC_ID" line in NonLinLoc
hypocenter and observation files (see #3701)
- set origin evaluation status to "rejected" if nonlinloc reports the
- obspy.io.nordic:
- Parse ID-lines (type I) into event.extra['nordic_event_id] (see #3287)
- Support reading of compact Nordic files (only containing header lines)
- Write amplitude with highest possible precision
- Fix writing / reading of high-frequency IAMLHF amplitudes
- Fix parsing of BAZ when they precede the associated phase pick in file
- Fix bug where check for nordic format version crashed on long phase names
- obspy.io.sac:
- fix floating point accuracy issues in sampling rate when reading some SAC
files. when reading SAC files, the sample spacing interval read from file
will now by default be rounded to microseconds before taking the
reciprocal to set the sampling rate. This can be deactivated using
"read(..., round_sampling_interval=False)" (see #3408) - fix writing SACPZ END tag when empty (open ended) (see #3696)
- fix floating point accuracy issues in sampling rate when reading some SAC
- obspy.io.seg2:
- Less strict date/time parsing (#3283).
- obspy.io.seisan:
- Fix parsing of files written in int16 (see #3287)
- obspy.io.seiscomp:
- overhaul codebase towards "SCML" label instead of SC3ML
but SC3ML still works as a FORMAT kwarg (for now) - add option to write different SCML catalog versions
- update/refresh XSL files to latest (2025)
Fixes origin/confidenceEllipsoid conversion. The unit for
'semiMajorAxisLength', 'semiMinorAxisLength' and
'semiIntermediateAxisLength' is already meter and does not need a
conversion. - convert negative azimuth or |dip|>90 to 0-360/-90-90 for fdsnXML (#3689)
- add seiscomp scml 0.14 support, drop 0.6
- add seiscomp scxml 0.13 support (see #3345)
- overhaul codebase towards "SCML" label instead of SC3ML
- obspy.io.shapefile:
- add support for pyshp v3 (see #3599)
- obspy.io.stationxml:
- Fix a bug writing the informational "description" field of instrument
sensitivity input/output units (see #3572).
- Fix a bug writing the informational "description" field of instrument
- obspy.io.win:
- obspy.io.xseed:
- Improve error message when trying to read a local path to a file that does
not exist with XSEED Parser (see #2686)
- Improve error message when trying to read a local path to a file that does
- obspy.signal:
- PPSD: performance improvement in init: faster frequency array
calculation (see #3644) - PPSD: Changed the moment instrument responses are calculated by evalresp:
they are now preloaded at PPSD instantiation time, and no longer
calculated for each time window (see #3589) - all butterworth filters: correct zero-phase filtering of 2-d arrays and
filtering along non-default axis of 2-d arrays (see #3291) - fix naming of input args in function "rotate_rt_ne()" (see #3383)
- add support for Chebyshev I/II, elliptic and Bessel filters alongside
the default Butterworth filters (see #3294) - fix potential out of bounds array access in AR picker (see #1801)
- fix a small issue in evalresp linked to picky new gcc (see #3578)
- array analysis: minor docstring fix in "get_geometry()" (see #3516, #3606)
- MSEEDMetadata: Computation of sample metrics replaced with vectorised
numpy code. Speedup of roughly factor 10 for integer data and 1.5 for
floating point data. (see #3621) - Fix filter construction (_filter) where freqs has len 1, linked to
numpy 2.4.0 deprecation expiration. (see #3668) - Add warnings.catch_warnings for spectral_estimation tests, linked to
a new numpy 2.4.0 deprecation. (see #3668) - Prep SciPy dropping ODR for polarization.partical_motion_odr, prompt user
to install odrpack if they have SciPy >= 1.19.0 (see #3676, #3662)
- PPSD: performance improvement in init: faster frequency array