Home

Awesome

<div align="center">

SeismicPro

<p align="center"> <a href="#installation">Installation</a> • <a href="#getting-started">Getting Started</a> • <a href="#tutorials">Tutorials</a> • <a href="#citing-seismicpro">Citation</a> </p>

License Python PyTorch Status Test installation

</div>

SeismicPro is a framework for acceleration of pre-stack seismic data processing with deep learning models.

Main features:

Installation

SeismicPro module is in the beta stage. Your suggestions and improvements via issues are very welcome.

Note that the Benchmark module may not work on Windows due to dependency issues. Use it with caution.

SeismicPro is compatible with Python 3.8+ and is tested on Ubuntu 20.04 and Windows Server 2022.

Getting Started

SeismicPro provides a simple interface to work with pre-stack data.

import seismicpro as spr

A single SEG-Y file can be represented by a Survey instance that stores a requested subset of trace headers and allows for gather loading:

survey = spr.Survey(path_to_file, header_index='FieldRecord', header_cols='offset')

header_index argument specifies how individual traces are combined into gathers: in this example, we consider common source gathers. Both header_index and header_cols correspond to names of trace headers in segyio.

All loaded headers are stored in headers attribute as a pd.DataFrame indexed by passed header_index:

survey.headers.head()
offsetTRACE_SEQUENCE_FILE
FieldRecord
1753261
1753262
1753333
1753344
1753485

A randomly selected gather can be obtained by calling sample_gather method:

gather = survey.sample_gather()

Let's take a look at it being sorted by offset:

gather.sort(by='offset').plot()

gather

Moreover, processing methods can be combined into compact pipelines like the one below which performs automatic stacking velocity picking and gather stacking:

stacking_pipeline = (dataset
    .pipeline()
    .load(src="raw")
    .mute(src="raw", dst="muted_raw", muter=muter)
    .calculate_vertical_velocity_spectrum(src="muted_raw", dst="spectrum")
    .calculate_stacking_velocity(src="spectrum", dst="velocity")
    .get_central_gather(src="raw")
    .apply_nmo(src="raw", stacking_velocity="velocity", max_stretch_factor=0.65)
    .stack(src="raw", amplify_factor=0.2)
    .dump(src="raw", path=STACK_TRACE_PATH)
)

stacking_pipeline.run(BATCH_SIZE, n_epochs=1)

Tutorials

You can get more familiar with the framework and its functionality by reading SeismicPro tutorials.

Citing SeismicPro

Please cite SeismicPro in your publications if it helps your research.

Khudorozhkov R., Kuvaev A., Broilovskiy A., Kalashnikov N., Podvyaznikov D., Altynova A. SeismicPro: bringing AI solutions to Seismic Processing. 2021.
@misc{seismicpro_2021,
  author       = {R. Khudorozhkov and A. Kuvaev and A. Broilovskiy and N. Kalashnikov and D. Podvyaznikov and A. Altynova},
  title        = {SeismicPro: bringing AI solutions to Seismic Processing},
  year         = 2021
}