Skip to content

Releases: equinor/segyio

Version 1.7.0

26 Sep 12:31
Compare
Choose a tag to compare

1.7.0

  • segyio has learned to open non-ascii file paths on Windows
  • Fixed an issue where segyio-catr would sometimes print the same trace twice
  • segyio no longer incorrectly considers files where the
    inline/crossline/offset triple doesn't change sorted
  • The test suite has seen some overhaul, making test cases more focused on the
    actual thing to test
  • Checking sorting won't silently fail when the offset-word is broken
  • f.text is now a Sequence, meaning it has slicing and other common array
    operations
  • The makefiles no longer build both static and shared libraries, but rather
    respect the BUILD_SHARED_LIBS variable
  • Python 3.7 support
  • Various refactoring and internal improvements

Version 1.6.0

05 Jun 07:42
Compare
Choose a tag to compare

1.6.0

  • segyio has learned to handle int16 and int32 sample formats
  • segyio has learned to write any array_likes with any float-convertible
    contents. f.trace = np.linspace(0, 1, 0.01) works as expected.
  • segyio types have been extended to be more container-like, and conform to
    more protocols. Notably, headers and lines are properly dict_like, and traces
    are properly array_like
  • trace.ref added, a write-back mode where changes to yielded trace data are
    written back to disk
  • trace.raw has been improved, is faster and supports setitem and the
    container protocol
  • Headers have learned to accept (seismic unix) keywords in update, so
    header.update(cdpx=10) works as expected
  • f.dtype added, this is the dtype used in all segyio-provided numpy arrays,
    and reflects the underlying data format
  • f.readonly added, to query if file handles are writable
  • segyio gracefully handle non-contiguous and more array_likes in setitem
  • The type requirements of f.samples has been relaxed, and it now is whatever
    numpy uses as default
  • segyio now assumes IBM float if the format identifier is meaningless
  • Some exception types are cleaned up, notably header key misses raise
    KeyError, not IndexError
  • General speed and clarity improvements, some more exception guarantees
  • segyio has learned to raise an error when provided with too short data traces
  • segyio has started raising deprecation warnings when using to-be-removed
    features
  • The python library has overall been simplified
  • Lots of new documentation has been written, the sphinx docs structure has
    been overhauled

Version 1.5.3

19 Apr 06:51
Compare
Choose a tag to compare

1.5.3

  • segyio-catr has learned to handle no arguments, and as a results read the
    first trace header as intended
  • segyio-catr has its help text and man page corrected
  • segyio-crop has learned to say how many traces it copies
  • segyio-crop has learned to warn when no traces are copied
  • segyio-crop has learned not to overwrite its input file when source and dest
    is the same
  • The makefiles understand the BUILD_DOC option, to build the python docs with
    sphinx
  • Test suite has some speed and robustness improvements

Version 1.5.2

19 Mar 12:15
Compare
Choose a tag to compare

1.5.2

  • open and create handle anything string-convertible as filename argument
  • pytest replaces unittest, both as library and test driver
  • segyio-crop now respects the byte-offset arguments, instead of just ignoring
    them and using 189 & 193 from SEG-Y revision 1
  • Some errors in readme and documentation is cleared up
  • Fixed a bug in create that would trigger 16-bit integer overflow, effectively
    breaking any file with more than 65k traces.

1.5.1

07 Feb 16:45
Compare
Choose a tag to compare
Deploy bugfix

Version 1.5.0

07 Feb 14:23
Compare
Choose a tag to compare

1.5.0

  • A bug making an external text header disappear has been fixed
  • The python extension has been changed to use C++ features, simplifying code
    and dropping the use of capsules
  • segyio-cath sets non-zero status code on failures
  • Application testing is moved from python to cmake, giving a large speedup
  • The IndexError message when accessing headers out-of-range has been improved
  • Some work has been moved from python into the extension
  • Error messages in python have received an overhaul
  • Errors produced when memory-mapping files are made consistent with fstream
    sourced errors

Version 1.4.0

16 Jan 11:39
Compare
Choose a tag to compare

1.4.0

  • segyio has learned how to resample a file (segyio.tools.resample). This
    function does not actually touch the data traces, but rewrites the header
    fields and attributes required to persistently change sample rate.
    Interpolation of data traces must be done manually, but for a strict
    reinterpretation this function is sufficient
  • segyio has learned to read enough structure from a file to create a new file
    with the same dimensions and lines (segyio.tools.metadata)
  • segyio has learned to create unstructured files (only traces, no inlines or
    crosslines)
  • f.text[0] = requires bytes convertability. This catches some errors that
    were previously fatal or silent
  • f.text broken internal buffer allocations fixed
  • f.text[n] = supports strings longer or shorter than 3200 bytes by
    truncating or padding, respectively
  • Fixed a bug where a particular length of mode strings caused errors
  • segyio.open('w') raises an exception, instead of silently truncating the
    file and failing later when the file size does not match the expected.
  • segy_traces now fails if trace0 is outside domain, instead of silently
    returning garbage
  • Return correct size for dirty, newly-created files. This means carefully
    created new files can be mmapd earlier
  • Methods on closed files always raise exceptions
  • mmap support improved - all C functions are mmap aware.
  • The file is now closed after a successful mmap call
  • str.format used for string interpolation over the % operator
  • Several potential issues found by static analysis, such as non-initialised
    temporaries, divide-by-zero code paths, and leak-errors (in process teardown)
    addressed, to reduce noise and improve safety
  • Error message on failure in segyio.tools.dt improved
  • Error message on unparsable global binary header improved
    changes for the next major release
  • Catch2 is introduced to test the core C library, replacing the old
    test/segy.c family of tests
  • Contract for segy_traces clarified in documentation
  • Docstrings improved for depth_slice and segyio.create
  • A new document, breaking-changes.md, lists planned deprecations and API
  • The readme has gotten a makeover, with better structure, an index, and more
    examples
  • setup.py requires setuptools >= 28. A rather recent setuptools was always a
    requirement, but not codified
  • scan-build (clang analysis) enabled on Travis

1.3.9

05 Jan 08:06
Compare
Choose a tag to compare
Bugfix release 1.3.9

Version 1.4-beta3

04 Jan 09:02
Compare
Choose a tag to compare
Version 1.4-beta3 Pre-release
Pre-release
Help delocate find dylibs on OS X on travis

delocate is used to build wheels on travis, and the logic that looks up
run-time dependencies could not figure out where the correct .dylib was
from @rpath/libsegyio.1.dylib. This is apparently expected behaviour.
From delocate's readme:

> where the first line is the install name id that the linker picked up
> when linking myext.so to libme.dylib. You job is to fix the build
> process so that libme.dylib has install name id /path/to/libme.dylib.
> This is not a problem specific to delocate; you will need to do this
> to make sure that myext.so can load libme.dylib without libme.dylib
> being in the current working directory. For CMAKE builds you may want
> to check out CMAKE_INSTALL_NAME_DIR.

https://pypi.python.org/pypi/delocate

By passing CMAKE_INSTALL_NAME_DIR to cmake (which does nothing on linux
as far as I'm aware), multibuild is able to pick up the correct dylib
and build it into the wheel.

Version 1.3.8

25 Nov 11:47
Compare
Choose a tag to compare

1.3.8

  • Automate python ast analysis with bandit on travis
  • The installed python extension is built without rpath
  • The numpy minimum requirement is handled in setup.py
  • The python installation layout can be configured via cmake
    e.g. -DPYTHON_INSTALL_LAYOUT=deb