Skip to content

Releases: obspy/obspy

1.0.2

03 Aug 15:53
4c90ea2
Compare
Choose a tag to compare

This is the second bug fix release in the 1.0.x series.

Full changelog:

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
     #1383)
 - 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)

1.0.1

24 Mar 22:05
Compare
Choose a tag to compare

This is the first bug fix release in the 1.0.x series.

Full changelog:

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)

1.0.0

19 Feb 17:30
Compare
Choose a tag to compare

This is a big release with significant internal changes, new features, stability improvements, and
much more to prepare ObsPy for future challenges and get rid of accumulated technical debt. It is now stable enough to officially declare it version 1.0. Changes are broad and numerous - follow this link to learn more:

Full Changelog

1.0.0: 
 - 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
     Stream/Trace.trim().
   * 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
     sensitivity
   * 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
     client.
 - obspy.clients.syngine:
   * New client for the IRIS Syngine service to retrieve custom synthetic
     seismograms.
 - 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
       #916)
     - 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).

0.10.3: 
  - 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 #...
Read more

0.10.2

27 May 09:22
Compare
Choose a tag to compare

This is a maintenance release containing several bug fixes:

  • obspy.core:
    • Fix catalog plot with events that have no origin depth or
      origin time (see #1021)
  • obspy.datamark:
    • Fix datawide=3 and datawide=0.5 block reading (see #1016)
  • obspy.earthworm:
    • Fix Python3 compatibility problem
  • obspy.imaging:
    • Fix flipped maps due to bug in Basemap
    • Fix handling of velocity reduction in section plots with degree offsets
      (see #1029)
    • Allow section plots over existing figures by not modifying existing lines
    • Don't prematurely close waveform figure if returning its handle
  • obspy.seedlink:
    • Fix Python3 compatibility for seedlink.easyseedlink
    • Basic seedlink client: Properly timeout requests with valid station
      selection but no data available in selected time window (see #1045)
  • obspy.signal:
    • Fix return data types/values of polarization routines (see #1026)
  • obspy.station:
    • Fix URL to FDSN StationXML schema in StationXML output (see #1023)

0.10.1

20 Mar 15:55
Compare
Choose a tag to compare

After over 2200 commits from 25 contributors ObsPy 0.10.1 is finished and has been released.

The key new features are support for Python 3, a slew of new file formats, and a new TauP implementation.

What's New in ObsPy 0.10.1

ObsPy 0.10.1 fixes some installation issues with ObsPy 0.10.0 thus ObsPy 0.10.0 is not a recommended release.

Full changelog:

  • Highlights:
    • Python3 support
    • anaconda support
    • New formats: AH, CNV, Kinemetrics EVT, NDK, NLLOC, PDAS, ZMAP
    • ObsPy licensed under LGPL v3.0 now as a whole.
  • General:
    • Support for Python 3.3 and 3.4 in addition to 2.6 and 2.7
    • ObsPy licensed under LGPL v3.0 now as a whole.
    • More generic processing history for most Stream and Trace methods.
    • Now requires NumPy >= 1.4.0
    • Now requires SciPy >= 0.7.2
    • Tested compatibility with most major Linux distributions still
      receiving updates.
    • The next major obspy release (0.11) will drop support for:
      • Python < 2.7
      • matplotlib < 1.1
      • numpy < 1.6
      • scipy < 0.10
  • obspy.ah
    • New submodule for reading the AH (Ad Hoc) waveform format
  • obspy.arclink:
    • add support for Poles and Zeros type "B" (Analog, Hz), see #899
  • obspy.core:
    • Preview waveform plot improved: interactive updating of ticks and
      ticklabels, correct ticklabels for sub-minute zoom level (#657)
    • fixed a problem with UTCDateTime with timestamps of far future
      dates (larger than 2038, often seen in StationXML end dates,
      see #805)
    • Support for basic custom namespace tags in QuakeML I/O (see #454)
    • interpolate() method for Stream/Trace objects.
    • Dictionary values added to an AttribDict will now be converted to an
      AttribDict.
    • Removed custom OrderedDict backport for Python 2.6. Now relies on the one
      provided by the future package.
    • Renamed 'type' argument to 'method' in the Trace.differentiate() method.
    • Renamed 'type' argument to 'method' in the Trace.integrate() method.
      Additionally, several broken alternate methods have been removed.
    • new plugins for NonLinLoc formats for readEvents() and
      Catalog/Event.write() (see obspy.nlloc and #900)
    • The wrap_long_string utility function is deprecated. Users may use the
      textwrap module which provides similar functionality.
    • new plugin for CNV event format (used by VELEST) for
      Catalog/Event.write() (see obspy.cnv and #905)
    • better customizable control during merging traces with sub-sample shift of
      sampling points (see #980)
  • obspy.cnv:
    • new plugin to write CNV event files (used by VELEST) from
      Catalog/Event objects. (see #905)
  • obspy.css:
    • Support for little-endian binary and ASCII files (see #881).
    • Support exporting Inventory objects to CSS relations.
  • obspy.fdsn:
    • WADL files are cached per Python process.
    • Bulk station downloading using POST requests.
    • Support for FDSNWS 1.1, e.g. the matchtimeseries parameter for the
      station service.
  • obspy.imaging:
    • Maintain beach ball aspect ratio through optional axes argument (see
      #734)
    • Refactored Catalog.plot() into helper routine
      obspy.imaging.maps.plot_basemap() (see #753).
    • The projections of Catalog.plot() have been modified slightly to provide
      equal-area projections:
      • The "cyl" projection is now named "global". It is now the Mollweide
        projection.
      • The '"local"` projection now uses the Albers Equal Area projection.
  • obspy.kinemetrics
    • New submodule for reading the Kinemetrics EVT waveform format
  • obspy.mseed:
    • Support for reading and writing all encodings supported by libmseed.
    • proper error reporting while reading
    • details=True when reading will now write to
      Trace.stats.mseed.blkt1001.timing_quality instead of
      Trace.stats.mseed.timing_quality.
    • The timing quality will now also be written to a file if it is set.
    • Non-existing values when reading with details=True will now be set to
      False instead of -1.
    • New utility function obspy.mseed.util.set_flags_in_fixed_header()
      giving the ability to overwrite flags in the fixed header of existing
      MiniSEED files.
    • The sequence number of the first record of each Trace can now be
      specified when writing MiniSEED files.
    • obspy-mseed-recordanalyzer:
      • Bugfix: when specifying an out-of-bounds record number, information
        about the last record in the file was displayed (see #957). Now a
        proper error message is shown and the command line script exits
        with non-zero exit code.
      • Faster reading of a single record header
      • Added option "-a" to print information of all records
    • upgrade to libmseed 2.15
  • obspy.ndk:
    • New submodule able to read NDK files from the Global CMT project.
  • obspy.neries:
    • The whole module is deprecated and will be removed with the next major
      release. To access EMSC event data please use the obspy.fdsn client
      (use Client(base_url='NERIES', ...)), for access to ORFEUS waveform
      data please use the obspy.fdsn client (use
      Client(base_url='ORFEUS', ...)) and for travel times please use
      obspy.taup.
  • obspy.nlloc:
    • new plugins to write NonLinLoc Phase observations files from
      Catalog/Event objects and to read NonLinLoc Hypocenter-Phase file into
      Catalog/Event objects. (see #900)
  • obspy.pdas:
    • read support for PDAS waveform files
  • obspy.sac:
    • New byteorder option for writing sac files to disk.
    • Can now read/write from/to file-like objects like io.BytesIO and open
      files.
  • obspy.seedlink:
    • bugfix: INFO responses from the IRIS ringserver are now parsed
      correctly (see #807)
    • New submodule easyseedlink providing an easier way to create
      SeedLink clients
    • New Client class providing a basic seedlink client for individual
      requests of finite time windows (i.e. non-continuous programs)
    • Fix memory leak in SLClient (MiniSEED record leak in packet parser,
      see #918)
  • obspy.seisan:
    • bugfix the actual data were misaligned by one
  • obspy.seishub:
    • use specified timeout in all requests to server (see #786)
    • Helper method Client.event.getEvents() to fetch a Catalog object
      from a seishub server of version 1.4.0 or higher.
  • obspy.signal:
    • Increased performance of PPSD plotting.
    • Interpolating methods. Wrappers around routines from scipy and a custom
      weighted average slopes method from Wiggins 1976.
    • PPSD has new methods to extract mean and mode of the histogram by
      frequency (see #804)
    • PPSD: water level in instrument correction can now be specified by user
      on PPSD initialization
    • New polarization analysis methods: flinn, vidale, pm
  • obspy.station:
    • add plotting methods (response/bode, location maps) to
      Inventory/Station/Channel/Response objects (see #750)
    • add get_coordinates method to inventory and network objects (see #740)
    • read/write support for DataAvailability tags in StationXML files.
    • write support for SACPZ ASCII representation of channel responses.
  • obspy.taup:
    • Replaced Fortran implementation with much more powerful Python port of
      Java TauP. This enabled us to drop all Fortran code, which simplifies
      releases and builds tremendously.
  • obspy.xseed:
    • add support for Poles and Zeros type "B" (Analog, Hz), see #899
  • obspy.zmap:
    • New module which adds ZMAP read/write support
  • scripts:
    • All scripts now require argparse instead of optparse.
    • All scripts now accept -V or --version to print version information.
    • obspy-dataless2xseed: -v and --version options are renamed to -x and
      --xml-version to not conflict with above option.
    • obspy-indexer: Options have been modified or amended slightly:
      • --data is a new alias to -d.
      • --db-uri is a new alias to -u.
      • --log is a new alias to -l.
      • --poll-interval is a new alias to -i.
      • --recent is a new alias to -r.
      • -a is a new alias to --all-files.
      • -f is a new alias to --force-reindex.
      • -H is a new alias to --host.
      • -p is a new alias to --port.
      • --check_duplicates is renamed to --check-duplicates.
      • --drop_database is renamed to --drop-database.
      • --mapping_file is renamed to --mapping-file.
      • --run_once is renamed to --run-once.
    • obspy-mopad: Options have been modified or amended slightly:
      • convert subcommand:
        • No changes.
      • decompose subcommand:
        • --input_system is renamed to --input-system.
      • --output_system is renamed to --output-system.
      • gmt subcommand:
        • --show_1fp is renamed to --show-1fp.
      • --show_isotropic_part is renamed to --show-isotropic-part.
      • plot subcommand:
        • --basis_vectors is renamed to --basis-vectors.
      • --full_sphere is renamed to --full-sphere.
      • --input_system is renamed to --input-system.
      • --lines_only is renamed to --lines-only.
      • --output_file is renamed to --output-file.
      • --pa_system is renamed to --pa-system.
      • --pressure_colour is renamed to --pressure-colour.
      • --show1fp is renamed to --show-1fp.
      • --show_isotropic_part is renamed to --show-isotropic-part.
      • --tension_colour is renamed to --tension-colour.
    • obspy-plot: --format option is accepted as an alias of -f.
    • obspy-print: Options have been modified or amended slightly:
      • --format is a new alias of -f.
      • --nomerge is renamed to --no-merge.
    • obspy-runtests: -a option is accepted as an alias of --all.
    • obspy-scan: Options have been modified or amended slightly:
      • --endtime is renamed to --end-time.
      • --event-times is renamed to --event-time. --event-time may be specified
        multiple times.
      • --ids is renamed to --id. --id may be specified multiple times.
      • --nox is renamed to --no-x.
      • --nogaps is renamed to --no-gaps.
      • --starttime is renamed to --start-time.

0.10.0

19 Mar 23:35
Compare
Choose a tag to compare

After over 2200 commits from 25 contributors ObsPy 0.10.0 is finished and has been released.

The key new features are support for Python 3, a slew of new file formats, and a new TauP implementation.

Migration Guide from older ObsPy Versions

Full changelog:

  • Highlights:
    • Python3 support
    • anaconda support
    • New formats: AH, CNV, Kinemetrics EVT, NDK, NLLOC, PDAS, ZMAP
    • ObsPy licensed under LGPL v3.0 now as a whole.
  • General:
    • Support for Python 3.3 and 3.4 in addition to 2.6 and 2.7
    • ObsPy licensed under LGPL v3.0 now as a whole.
    • More generic processing history for most Stream and Trace methods.
    • Now requires NumPy >= 1.4.0
    • Now requires SciPy >= 0.7.2
    • Tested compatibility with most major Linux distributions still
      receiving updates.
    • The next major obspy release (0.11) will drop support for:
      • Python < 2.7
      • matplotlib < 1.1
      • numpy < 1.6
      • scipy < 0.10
  • obspy.ah
    • New submodule for reading the AH (Ad Hoc) waveform format
  • obspy.arclink:
    • add support for Poles and Zeros type "B" (Analog, Hz), see #899
  • obspy.core:
    • Preview waveform plot improved: interactive updating of ticks and
      ticklabels, correct ticklabels for sub-minute zoom level (#657)
    • fixed a problem with UTCDateTime with timestamps of far future
      dates (larger than 2038, often seen in StationXML end dates,
      see #805)
    • Support for basic custom namespace tags in QuakeML I/O (see #454)
    • interpolate() method for Stream/Trace objects.
    • Dictionary values added to an AttribDict will now be converted to an
      AttribDict.
    • Removed custom OrderedDict backport for Python 2.6. Now relies on the one
      provided by the future package.
    • Renamed 'type' argument to 'method' in the Trace.differentiate() method.
    • Renamed 'type' argument to 'method' in the Trace.integrate() method.
      Additionally, several broken alternate methods have been removed.
    • new plugins for NonLinLoc formats for readEvents() and
      Catalog/Event.write() (see obspy.nlloc and #900)
    • The wrap_long_string utility function is deprecated. Users may use the
      textwrap module which provides similar functionality.
    • new plugin for CNV event format (used by VELEST) for
      Catalog/Event.write() (see obspy.cnv and #905)
    • better customizable control during merging traces with sub-sample shift of
      sampling points (see #980)
  • obspy.cnv:
    • new plugin to write CNV event files (used by VELEST) from
      Catalog/Event objects. (see #905)
  • obspy.css:
    • Support for little-endian binary and ASCII files (see #881).
    • Support exporting Inventory objects to CSS relations.
  • obspy.fdsn:
    • WADL files are cached per Python process.
    • Bulk station downloading using POST requests.
    • Support for FDSNWS 1.1, e.g. the matchtimeseries parameter for the
      station service.
  • obspy.imaging:
    • Maintain beach ball aspect ratio through optional axes argument (see
      #734)
    • Refactored Catalog.plot() into helper routine
      obspy.imaging.maps.plot_basemap() (see #753).
    • The projections of Catalog.plot() have been modified slightly to provide
      equal-area projections:
      • The "cyl" projection is now named "global". It is now the Mollweide
        projection.
      • The '"local"` projection now uses the Albers Equal Area projection.
  • obspy.kinemetrics
    • New submodule for reading the Kinemetrics EVT waveform format
  • obspy.mseed:
    • Support for reading and writing all encodings supported by libmseed.
    • proper error reporting while reading
    • details=True when reading will now write to
      Trace.stats.mseed.blkt1001.timing_quality instead of
      Trace.stats.mseed.timing_quality.
    • The timing quality will now also be written to a file if it is set.
    • Non-existing values when reading with details=True will now be set to
      False instead of -1.
    • New utility function obspy.mseed.util.set_flags_in_fixed_header()
      giving the ability to overwrite flags in the fixed header of existing
      MiniSEED files.
    • The sequence number of the first record of each Trace can now be
      specified when writing MiniSEED files.
    • obspy-mseed-recordanalyzer:
      • Bugfix: when specifying an out-of-bounds record number, information
        about the last record in the file was displayed (see #957). Now a
        proper error message is shown and the command line script exits
        with non-zero exit code.
      • Faster reading of a single record header
      • Added option "-a" to print information of all records
    • upgrade to libmseed 2.15
  • obspy.ndk:
    • New submodule able to read NDK files from the Global CMT project.
  • obspy.neries:
    • The whole module is deprecated and will be removed with the next major
      release. To access EMSC event data please use the obspy.fdsn client
      (use Client(base_url='NERIES', ...)), for access to ORFEUS waveform
      data please use the obspy.fdsn client (use
      Client(base_url='ORFEUS', ...)) and for travel times please use
      obspy.taup.
  • obspy.nlloc:
    • new plugins to write NonLinLoc Phase observations files from
      Catalog/Event objects and to read NonLinLoc Hypocenter-Phase file into
      Catalog/Event objects. (see #900)
  • obspy.pdas:
    • read support for PDAS waveform files
  • obspy.sac:
    • New byteorder option for writing sac files to disk.
    • Can now read/write from/to file-like objects like io.BytesIO and open
      files.
  • obspy.seedlink:
    • bugfix: INFO responses from the IRIS ringserver are now parsed
      correctly (see #807)
    • New submodule easyseedlink providing an easier way to create
      SeedLink clients
    • New Client class providing a basic seedlink client for individual
      requests of finite time windows (i.e. non-continuous programs)
    • Fix memory leak in SLClient (MiniSEED record leak in packet parser,
      see #918)
  • obspy.seisan:
    • bugfix the actual data were misaligned by one
  • obspy.seishub:
    • use specified timeout in all requests to server (see #786)
    • Helper method Client.event.getEvents() to fetch a Catalog object
      from a seishub server of version 1.4.0 or higher.
  • obspy.signal:
    • Increased performance of PPSD plotting.
    • Interpolating methods. Wrappers around routines from scipy and a custom
      weighted average slopes method from Wiggins 1976.
    • PPSD has new methods to extract mean and mode of the histogram by
      frequency (see #804)
    • PPSD: water level in instrument correction can now be specified by user
      on PPSD initialization
    • New polarization analysis methods: flinn, vidale, pm
  • obspy.station:
    • add plotting methods (response/bode, location maps) to
      Inventory/Station/Channel/Response objects (see #750)
    • add get_coordinates method to inventory and network objects (see #740)
    • read/write support for DataAvailability tags in StationXML files.
    • write support for SACPZ ASCII representation of channel responses.
  • obspy.taup:
    • Replaced Fortran implementation with much more powerful Python port of
      Java TauP. This enabled us to drop all Fortran code, which simplifies
      releases and builds tremendously.
  • obspy.xseed:
    • add support for Poles and Zeros type "B" (Analog, Hz), see #899
  • obspy.zmap:
    • New module which adds ZMAP read/write support
  • scripts:
    • All scripts now require argparse instead of optparse.
    • All scripts now accept -V or --version to print version information.
    • obspy-dataless2xseed: -v and --version options are renamed to -x and
      --xml-version to not conflict with above option.
    • obspy-indexer: Options have been modified or amended slightly:
      • --data is a new alias to -d.
      • --db-uri is a new alias to -u.
      • --log is a new alias to -l.
      • --poll-interval is a new alias to -i.
      • --recent is a new alias to -r.
      • -a is a new alias to --all-files.
      • -f is a new alias to --force-reindex.
      • -H is a new alias to --host.
      • -p is a new alias to --port.
      • --check_duplicates is renamed to --check-duplicates.
      • --drop_database is renamed to --drop-database.
      • --mapping_file is renamed to --mapping-file.
      • --run_once is renamed to --run-once.
    • obspy-mopad: Options have been modified or amended slightly:
      • convert subcommand:
        • No changes.
      • decompose subcommand:
        • --input_system is renamed to --input-system.
      • --output_system is renamed to --output-system.
      • gmt subcommand:
        • --show_1fp is renamed to --show-1fp.
      • --show_isotropic_part is renamed to --show-isotropic-part.
      • plot subcommand:
        • --basis_vectors is renamed to --basis-vectors.
      • --full_sphere is renamed to --full-sphere.
      • --input_system is renamed to --input-system.
      • --lines_only is renamed to --lines-only.
      • --output_file is renamed to --output-file.
      • --pa_system is renamed to --pa-system.
      • --pressure_colour is renamed to --pressure-colour.
      • --show1fp is renamed to --show-1fp.
      • --show_isotropic_part is renamed to --show-isotropic-part.
      • --tension_colour is renamed to --tension-colour.
    • obspy-plot: --format option is accepted as an alias of -f.
    • obspy-print: Options have been modified or amended slightly:
      • --format is a new alias of -f.
      • --nomerge is renamed to --no-merge.
    • obspy-runtests: -a option is accepted as an alias of --all.
    • obspy-scan: Options have been modified or amended slightly:
      • --endtime is renamed to --end-time.
      • --event-times is renamed to --event-time. --event-time may be specified
        multiple times.
      • --ids is renamed to --id. --id may be specified multiple times.
      • --nox is renamed to --no-x.
      • --nogaps is renamed to --no-gaps.
      • --starttime is renamed to --start-time.

0.9.2

30 Apr 14:51
Compare
Choose a tag to compare

This is a maintenance release and contains the collective bug fixes and minor feature improvements of around 150 commits so we advise all users to upgrade.

Changelog:

  • general:
    • fix installation on CygWin (see #755)
  • obspy.core:
    • bugfix: Input/Output to/from QuakeML was missing Amplitude
      elements (see #763)
    • fixing very slow response removal for some magic bad values of npts
      (see #715)
    • extend remove_response for polynomial responses
      (thanks to Sebastien/bonaime, see #566)
  • obspy.datamark:
    • bugfix: channel code now correctly read (4 hex char)
    • bugfix: channels can have different sampling rate
    • improvement: datawide 0.5 (4 bits) encoding now supported
    • century of data can now be specified
  • obspy.fdsn:
    • time out errors get raised properly now. timeout can be specified at
      Client initialization now. (see #717)
    • for advanced users: endpoints of any particular service can now be
      specified explicitly (see #754)
    • new known FDSN providers: 'ORFEUS', 'GFZ', 'NERIES'
    • more robust WADL parser
    • the attach_response=True argument now uses a faster approach to
      download the station data
  • obspy.imaging:
    • Fixing waveform plotting.
  • obspy.sac:
    • SAC files with two digit year header field are now interpreted as
      "19xx", same as done by SAC (see #779)
  • obspy.seedlink:
    • bugfix: different instances of a SeedLink connection had a shared
      state (see #561)
    • multiple smaller bugfixes (see #777)
    • trailing null characters are now stripped from INFO responses (see #778)
  • obspy.seg2:
    • numbers are now also recognized as months
    • now filters non-printable chars from the header enabling it to read some
      more files
  • obspy.signal:
    • the TF misfits now correctly use logarithmic axes instead of scaling an
      image
  • obspy.station:
    • some bugfixes in the obspy.station object classes (see #710)
    • more robust writing of StationXML in case of missing elements
  • obspy.taup:
    • bugfix: avoid a bug that caused multiple calls to taup to result in
      spurious unexpected results (see #728)

0.9.0

09 Jan 19:45
Compare
Choose a tag to compare

This release contains 1423 commits from 20 contributors. Thanks a bunch to everyone!

The new key features are full support for the FDSN web services (waveform, event, and station data) and the FDSN StationXML format including the calculation of instrument responses directly from StationXML files. Other notable changes are the support for the Nanometrics Y file format, the CSS (Center for Seismic Studies) waveform data format, the NEIC PDE bulletin event catalog files, a new client to access data from the NEIC CWB QueryServer, and numerous smaller enhancements and bug fixes.

Migration Guide from older ObsPy Versions

Full Changelog:

  • general:
    • Added mock testing library.
  • obspy.arclink:
    • user keyword is now required during client initialization
  • obspy.core:
    • Stream/Trace.attach_response(): convenience method to attach response to
      traces from inventories.
    • new method Stream/Trace.remove_response() to remove instrument response
      from Response object attached to trace(s), e.g. after parsing a
      StationXML file. Similar to Stream/Trace.simulate(seedresp=...) for
      using a Parser object (from dataless or xseed) or RESP file, but less
      cluttered parameters and without the simulating a different instrument
      part.
    • Updated event classes to QuakeML 1.2 final.
    • Moved obspy.core.event.validate() to obspy.core.quakeml.validate()
    • The writeQuakeML() function, also accessible through
      Catalog.write(..., format="quakeml"), now has an optional keyword
      argument 'validate'. If True, the resulting QuakeML file will be
      validated against the QuakeML schema before being written. An
      AssertionError will be raised in case the validation fails.
    • validation of QuakeML against official schema working now
    • renamed obspy.core.util.types into obspy.core.util.obspy_types (#595)
    • new parameter replace for Enums which allows definition of replaceable
      keywords (fixes #531)
    • Trace.split() will return a stream object containing traces with unmasked
      arrays
    • trim(pad=True, fill_value=xxx) will return a NumPy ndarray as stated in
      the API documentation (#540)
    • read() supports now tar und zip archives and variants (tar.gz, tar.bz2)
    • new options for Stream/Trace.taper() to control the length of the
      tapering for all windowing functions and perform one-sided tapering
    • Many Stream and Trace methods are now chainable, e.g. st.taper().plot()
    • when using Stream/Trace.simulate(seedresp={...})) parameter "date" can
      now be omitted, start time of each trace is used for response lookup then
    • when using Stream/Trace.simulate(seedresp={...})) for parameter
      "filename" instead of the path to a local file now also can be provided
      either a file-like object with RESP information or an obspy.xseed.Parser
      object (e.g. created reading a dataless SEED file).
    • fix Stream.select() when using values like "" or 0, e.g.
      Stream.select(location="") or when filtering by component with a channel
      code less than 3 characters long (now these traces will be omitted from
      the result when filtering by component).
    • fix a bug when merging valid data into a masked trace (see #638)
    • event.ResourceIdentifier objects are now initialized with a QuakeML
      conform string by default, i.e. if no custom prefix is provided during
      initialization.
    • event.ResourceIdentifier.resource_id attribute was renamed to
      event.ResourceIdentifier.id
    • event.ResourceIdentifier now was has a method regenerate_uuid() that
      allows the random hash part to be regenerated for resource identifiers
      with no fixed id string (can be useful to generate a new hash if the
      referred object changes).
    • added a new test that asserts that the whole codebase is valid according
      to the flake8 tool.
    • inverse filtering of catalogs.
    • bugfix: Trace.simulate() now passes the SEED network, station, location,
      and channel identifiers to evalresp.
    • added command line script "obspy-print" to print information on local
      waveform files
    • check if ndim == 1 when setting Trace.data and raise if necessary,
      see #695
    • change waveform_id parameter in obspy.core.event.FocalMechanism to list of
      WaveformStreamID as specified in QuakeML docs (#633)
  • obspy.css:
    • new module for CSS (Center for Seismic Studies) format
    • currently read support for waveform data
  • obspy.db:
    • obspy-indexer script uses from now on hash symbols (#) instead
      of pipe (|) for features because pipe has a special meaning on
      most operating systems
  • obspy.fdsn:
  • obspy.gse2:
    • read/write STA2 header line which is officialy mandatory but in pratice
      often not used
  • obspy.imaging:
    • more options to customize day plots
    • dayplot now plots matching picks (station, network, location) if a list
      of event objects is provided using the events kwarg.
    • obspy-scan: new option --print-gaps
    • added plotting of record sections
    • automatic merging can be disabled for obspy-plot
  • obspy.pde:
    • new module for reading NEIC PDE bulletin files into an obspy catalog
      object. Only the "mchedr" format (file format revision of February 24,
      2004) is supported.
  • obspy.realtime:
    • two new processing plugins (offset, kurtosis)
  • obspy.seg2:
    • adding read support for SEG2 data format code 1 and 2
      (signed 16bit/32bit integer)
  • obspy.segy:
    • fix a bug in plotting (see #689)
  • obspy.signal:
    • adding cross correlation single-station similarity checking with
      master event templates to coincidence trigger
    • add PPSD support for segments of arbitrary length
    • default bin width of PPSD is changed to 1dB. This is the value used by
      McNamara and Buland 2004.
    • fix a bug when using evalresp with RESP files with very short epochs.
      see #631.
    • for seisSim(seedresp={...})) for parameter "filename" instead of the
      path to a local file now also can be provided either a file-like
      object with RESP information or an obspy.xseed.Parser object
      (e.g. created reading a dataless SEED file).
    • seisSim(seedresp={...}): the seedresp dictionary now requires network,
      station, location, and channel keys.
    • removed deprecated psd module - use spectral_estimation module instead
    • removed deprecated sonic function - use array_processing function instead
    • corrected function signature of c_sac_taper
  • obspy.station:
    • adding support for FDSN StationXML
  • obspy.mseed:
    • new kwarg arguments for reading mseed files: header_byteorder and
      verbose
    • libmseed v2.12
  • obspy.neic:
    • new module to access data from CWB QueryServer run at the National
      Earthquake Information Center (NEIC) in Golden, CO USA.
  • obspy.y:
    • adding read support for Nanometrics Y file format
  • scripts:
    • obspy-plot: new option "-o" to output plot to file instead of opening
      a window

0.9.0rc1

09 Dec 13:35
Compare
Choose a tag to compare
0.9.0rc1 Pre-release
Pre-release
  • general:
  • Added mock testing library.
  • obspy.arclink:
    • user keyword is now required during client initialization
  • obspy.core:
    • Updated event classes to QuakeML 1.2 final.
    • Moved obspy.core.event.validate() to obspy.core.quakeml.validate()
    • The writeQuakeML() function, also accessible through
      Catalog.write(..., format="quakeml"), now has an optional keyword
      argument 'validate'. If True, the resulting QuakeML file will be
      validated against the QuakeML schema before being written. An
      AssertionError will be raised in case the validation fails.
    • validation of QuakeML against official schema working now
    • renamed obspy.core.util.types into obspy.core.util.obspy_types (#595)
    • new parameter replace for Enums which allows definition of replaceable
      keywords (fixes #531)
    • Trace.split() will return a stream object containing traces with unmasked
      arrays
    • trim(pad=True, fill_value=xxx) will return a NumPy ndarray as stated in
      the API documentation (#540)
    • read() supports now tar und zip archives and variants (tar.gz, tar.bz2)
    • new options for Stream/Trace.taper() to control the length of the
      tapering for all windowing functions and perform one-sided tapering
    • Many Stream and Trace methods are now chainable, e.g. st.taper().plot()
    • when using Stream/Trace.simulate(seedresp={...})) parameter "date" can
      now be omitted, start time of each trace is used for response lookup then
    • when using Stream/Trace.simulate(seedresp={...})) for parameter
      "filename" instead of the path to a local file now also can be provided
      either a file-like object with RESP information or an obspy.xseed.Parser
      object (e.g. created reading a dataless SEED file).
    • fix Stream.select() when using values like "" or 0, e.g.
      Stream.select(location="") or when filtering by component with a channel
      code less than 3 characters long (now these traces will be omitted from
      the result when filtering by component).
    • fix a bug when merging valid data into a masked trace (see #638)
    • event.ResourceIdentifier objects are now initialized with a QuakeML
      conform string by default, i.e. if no custom prefix is provided during
      initialization.
    • event.ResourceIdentifier.resource_id attribute was renamed to
      event.ResourceIdentifier.id
    • event.ResourceIdentifier now was has a method regenerate_uuid() that
      allows the random hash part to be regenerated for resource identifiers
      with no fixed id string (can be useful to generate a new hash if the
      referred object changes).
    • added a new test that asserts that the whole codebase is valid according
      to the flake8 tool.
    • inverse filtering of catalogs.
    • bugfix: Trace.simulate() now passes the SEED network, station, location,
      and channel identifiers to evalresp.
    • Stream/Trace.attach_response(): convenience method to attach response to
      traces from inventories.
    • added command line script "obspy-print" to print information on local
      waveform files
  • obspy.css:
    • new module for CSS (Center for Seismic Studies) format
    • currently read support for waveform data
  • obspy.db:
    • obspy-indexer script uses from now on hash symbols (#) instead
      of pipe (|) for features because pipe has a special meaning on
      most operating systems
  • obspy.fdsn:
  • obspy.gse2:
    • read/write STA2 header line which is officialy mandatory but in pratice
      often not used
  • obspy.imaging:
    • more options to customize day plots
    • dayplot now plots matching picks (station, network, location) if a list
      of event objects is provided using the events kwarg.
    • obspy-scan: new option --print-gaps
    • added plotting of record sections
    • automatic merging can be disabled for obspy-plot
  • obspy.pde:
    • new module for reading NEIC PDE bulletin files into an obspy catalog
      object. Only the "mchedr" format (file format revision of February 24,
      2004) is supported.
  • obspy.realtime:
    • two new processing plugins (offset, kurtosis)
  • obspy.seg2:
    • adding read support for SEG2 data format code 1 and 2
      (signed 16bit/32bit integer)
  • obspy.segy:
    • fix a bug in plotting (see #689)
  • obspy.signal:
    • adding cross correlation single-station similarity checking with
      master event templates to coincidence trigger
    • add PPSD support for segments of arbitrary length
    • default bin width of PPSD is changed to 1dB. This is the value used by
      McNamara and Buland 2004.
    • fix a bug when using evalresp with RESP files with very short epochs.
      see #631.
    • for seisSim(seedresp={...})) for parameter "filename" instead of the
      path to a local file now also can be provided either a file-like
      object with RESP information or an obspy.xseed.Parser object
      (e.g. created reading a dataless SEED file).
    • seisSim(seedresp={...}): the seedresp dictionary now requires network,
      station, location, and channel keys.
    • removed deprecated psd module - use spectral_estimation module instead
    • removed deprecated sonic function - use array_processing function instead
  • obspy.station:
    • adding support for FDSN StationXML
  • obspy.mseed:
    • new kwarg arguments for reading mseed files: header_byteorder and
      verbose
  • obspy.neic:
    • new module to access data from CWB QueryServer run at the National
      Earthquake Information Center (NEIC) in Golden, CO USA.
  • obspy.y:
    • adding read support for Nanometrics Y file format
  • scripts:
    • obspy-plot: new option "-o" to output plot to file instead of opening
      a window

0.8.4

03 Jul 08:45
Compare
Choose a tag to compare
  • bugfixes to make ObsPy work with the latest Python 2.x and NumPy releases
  • critical bugfixes for the waveform plotting and the xml wrapper
  • bugfix so that copy.deepcopy() works with the obspy.core.stream.Stream
    class
  • fixing some imports