Skip to content

analysiscenter/segfast

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


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_i slide_x slide_d crop
(256, 256, 500)
batch
(20, 256, 256, 500)
segyio 2.58254 7.16672 3041.3 941.285 16104.4
segfast 1.48056 3.37418 50.1355 82.0574 2761.94
segfast
segyio engine
2.92379 5.69101 225.13 117.571 3968.81
seismiqb 1.46763 3.45154 50.3333 151.877 2738.86
seismiqb+HDF5 1.04213 1.93414 1.80567 81.3581 2616.83
segfast
quantized
0.252452 0.518485 56.6672 7.71151 1212.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.