Skip to content

SeisIO v0.1.3

Compare
Choose a tag to compare
@jpjones76 jpjones76 released this 08 Apr 02:37
79095c3

get_data for Web Requests

Web requests for time-series data (formerly IRISget, FDSNget) now uniformly use the function get_data (or, equivalently, get_data! with an existing SeisData object).

  • get_data works as a mass downloader with FDSN dataselect queries:
    • Long requests are fully supported.
      • Specify subrequest length in days with keyword nd (default: nd=1).
    • Rectangular region data queries can be done with keyword reg.
    • Radial data queries around a central point can be done with keyword rad.
  • FDSN methods now support the full list of standard FDSNWS servers.
    • Type ?seis_www for server list and correspondence.
  • Minor changes:
    • Station XML is now written to file "FDSNsta.xml" by default; change the filename with keyword xml_file.
    • Deprecated keyword q (quality) due to breakingly non-standard implementation.

Float32 Support

  • Arrrays in the "data" field of a SeisData object (:x) can now be either Array{Float64,1} or Array{Float32,1}.
  • readsac, readsegy, readuw, and readwin32 now rMajor changes since last release:

get_data for Web Requests

Web requests for time-series data (formerly IRISget, FDSNget) now uniformly use the function get_data (or, equivalently, get_data! with an existing SeisData object).

  • get_data works as a mass downloader with FDSN dataselect queries:
    • Long requests are fully supported.
      • Specify subrequest length in days with keyword nd (default: nd=1).
    • Rectangular region data queries can be done with keyword reg.
    • Radial data queries around a central point can be done with keyword rad.
  • FDSN methods now support the full list of standard FDSNWS servers.
    • Type ?seis_www for server list and correspondence.
  • Minor changes:
    • Station XML is now written to file "FDSNsta.xml" by default; change the filename with keyword xml_file.
    • Deprecated keyword q (quality) due to breakingly non-standard implementation.

Float32 Support

  • Arrrays in the "data" field of a SeisData object (:x) can now be either Array{Float64,1} or Array{Float32,1}.
  • readsac, readsegy, readuw, and readwin32 now read into single-precision channels, consistent with each file format's native precision.
  • SEED files and SEED data (e.g. SeedLink, readmseed, FDSN requests) use double-precision channels.
  • Data processing operations preserve the precision of SeisData channels.

Data Formats

Mini-SEED

  • Added support for blockette types:
    • [300] Step Calibration Blockette (60 bytes)
    • [310] Sine Calibration Blockette (60 bytes)
    • [320] Pseudo-random Calibration Blockette (64 bytes)
    • [390] Generic Calibration Blockette (28 bytes)
    • [395] Calibration Abort Blockette (16 bytes)
    • [2000] Variable Length Opaque Data Blockette
  • Added support for Geoscope, CDSN, SRO, and DWWSSN decoders.
  • Improved time gap handling. For data sampled at fs, with δ = 1.0/fs, a time gap is now recorded when the gap between the end of one packet and the start of the next exceeds 1.5x the sample rate δ (i.e. when total drift > 0.5δ).
  • Blockettes of unrecognized types are now skipped; they should no longer throw errors.

Other

  • Win32
    • readwin32 is now orders of magnitude faster and uses orders of magnitude less memory.
    • Use kw jst=false to NOT apply a 9h correction to win32 data times.
  • SEG Y
    • Dictionary keys with full=true are now comprehensible.
  • SAC
    • readsac now supports bigendian files

New functions

  • find_regex adds OS-agonstic find functionality.
  • equalize_resp! translates instrument frequency responses to a given complex response matrix.
  • detrend! removes a linear trend from each channel in a SeisData object.
  • demean! removes the mean from each channel of a SeisData object.

Minor Changes

  • FDSNevt has been rewritten.
  • The built-in ls now behaves like Bash ls but outputs full paths in returned file names.
    • Most invocations of ls still invoke readdir or isile.
    • Partial file name wildcards (e.g. "ls(data/*.sac)) now invoke glob.
    • Path wildcards (e.g. ls(/data/*/*.sac)) invoke find_regex to circumvent glob limitations.
    • Passing only "*" as a filename (e.g. "ls(/home/*)) invokes find_regex to recursively search subdirectories, as in the Bash shell.
  • Improved read methods for rseis.

merge!

Functionality, robustness, and speed have been greatly improved.

  • Channels are no longer combined if they have different (non-empty) values for resp, units, or loc, or if they have different fs values.
  • Channels with no data (:x empty) or time info (:t empty) are deleted during a merge.
  • The data array (:x) of each merged channel is now aligned in memory at the end of the merge process.

sync!

Functionality, robustness, and speed have been greatly improved.

  • No longer calls ungap! or requires ungapped data
  • No longer has an option to resample data

RandSeis

The "randseis" functions are now a submodule, SeisIO.RandSeis. Functions have been renamed:

  • randseischannel --> RandSeis.randSeisChannel
  • randseisdata --> RandSeis.randSeisData
  • randseishdr --> RandSeis.randSeisHdr
  • randseisevent --> RandSeis.randSeisEvent
  • Minor changes:
    • randSeisEvent now uses the same keywords as randSeisData

Bug Fixes

  • Mini-SEED:
    • Timing information from mini-SEED blockette type 500 (Timing Blockette) is now saved in the :misc dictionary for the appropriate channel.
    • Fixed parsing of event detection blockettes.
    • Now correctly handles SEED volumes in which record endianness changes.
    • Fixed bug #7.
  • SEG Y:
    • Fixed how elevation are set for PASSCAL SEG Y.
  • Fixed several breaking readwin32 issues.
  • Irregularly-sampled data should now be handled correctly by processing routines.
  • isempty is no longer defined for SeisEvent.
  • rseis, wseis:
    • The :loc field is no longer assumed to contain length-5 vectors.
    • The :resp field is once again read from file correctly.
    • wseis no longer fails to write channels with very few data points.
  • SeisData:
    • SeisData(n) now always allocates memory correctly and uniquely.
    • Creation of SeisData objects from multiple SeisChannels works again.
    • Consolidated methods for channel delete; standardized syntax.

Consistency and Performance

  • Web functions now use standardized keywords (?'SeisIO.kw for a list)
  • Bad web requests no longer throw exceptions.
  • When reading/writing strings from/to SeisIO composite types, the SeisIO native file format now support all Unicode characters supported by the Juila language.
  • Addition of SeisChannel and SeisData objects is once again commutative.
  • Exported functions are now more consistent and complete.
  • SeedLink keywords are now more intuitive.
  • SeisData objects:
    • Can now be created from SeisEvent objects, incorporating (only) the :data subfield.
    • SeisData() no longer sets any fields.
    • SeisData(1) and SeisData(SeisChannel()) are now identical.
    • isempty redefined in a self-consistent way.
  • gcdist now returns an array, rather than a tuple of vectors.
  • get_pha is now correctly exported.
  • note! is a factor of 4 faster due to rewriting the time stamper.
  • readsegy now always returns a SeisData object.