SEGFAST

August 10, 2023 · View on GitHub

SEGFAST

InstallationBenchmarksGetting Started

License Python Status


segfast is a library for interacting with SEG-Y seismic data. Main features are:

  • Faster access to read data: both traces headers and values
  • Optional bufferization, where user can provide a preallocated memory to load the data into
  • Convenient API that relies on numpy.memmap for most operations, while providing segyio as a fallback engine

Installation

# pip / pip3
pip3 install segfast

# developer version (add `--depth 1` if needed)
git clone https://github.com/analysiscenter/segfast.git

Benchmarks

Timings for reading data along various projections:

slide_islide_xslide_dcrop
(256, 256, 500)
batch
(20, 256, 256, 500)
segyio2.582547.166723041.3941.28516104.4
segfast1.480563.3741850.135582.05742761.94
segfast
segyio engine
2.923795.69101225.13117.5713968.81
seismiqb1.467633.4515450.3333151.8772738.86
seismiqb+HDF51.042131.934141.8056781.35812616.83
segfast
quantized
0.2524520.51848556.66727.711511212.74

SlideBenchmarks

Getting started

After installation just import segfast into your code. A quick demo of our primitives and methods:

import segfast

# Open file and read some meta info. Engine can be `segyio` or `memmap`
segfast_file = segfast.open('/path/to/cube.sgy', engine='memmap')

# Load requested headers as dataframe
segfast_file.load_headers(['INLINE_3D', 'CROSSLINE_3D', ...])

# Data access. All methods support optional buffer as target memory
segfast_file.load_traces([123, 333, 777], buffer=None)
segfast_file.load_depth_slices([5, 10, 15], buffer=None)

# Convert data format to IEEE float32: speeds up operations by a lot
segfast_file.convert(format=5)

You can get more familiar with the library, its functional and timings by reading examples.