You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
Getting started
After installation just import segfast into your code. A quick demo of our primitives and methods:
importsegfast# 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 dataframesegfast_file.load_headers(['INLINE_3D', 'CROSSLINE_3D', ...])
# Data access. All methods support optional buffer as target memorysegfast_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 lotsegfast_file.convert(format=5)
You can get more familiar with the library, its functional and timings by reading examples.