Skip to content

SEG-Y via Xarray

Opening SEG-Y Data

SEGY Backend for reading Seismic SEGY files.

SgyBackendEntrypoint

Bases: BackendEntrypoint

open_dataset(filename_or_obj, dim_byte_fields, drop_variables=None, head_df=None, extra_byte_fields=None, segyio_kwargs=None)

Open a SEGY file with a native Xarray front end.

Parameters:

Name Type Description Default
filename_or_obj Union[str, PathLike]

The SEG-Y file/path.

required
dim_byte_fields Dict[str, int]

Dimension names and byte location pairs. This should at a minimum have the keys cdp or iline and xline.

required
drop_variables Union[tuple[str], None]

Ignored

None
head_df Union[DataFrame, None]

The DataFrame output from segy_header_scrape. This DataFrame can be filtered by the user to load select trace sets. Trace loading is based upon the DataFrame index.

None
extra_byte_fields dict

Additional header information to load into the Dataset. Defaults to None.

None
segyio_kwargs Union[dict, None]

Extra keyword arguments for segyio.open

None

Returns:

Type Description
Dataset

Lazy segy file Dataset

Example

This backend is registered within Xarray and is accessed automatically when using the xr.open_dataset method for files with extensions of .segy and .sgy.

Ensure the byte locations are correct for your data.

Python
# 3D data
ds3d = xr.open_dataset(
    segyfile_path,
    dim_byte_fields={'iline':189, 'xline':193},
    extra_byte_fields={'cdp_x':181, 'cdp_y':185},
)

# 2D data
ds2d = xr.open_dataset(
    segyfile_path,
    dim_byte_fields={'cdp':22},
    extra_byte_fields={'cdp_x':181, 'cdp_y':185},
)

Saving SEG-Y Data

SegyWriter

Handles the writing of SEG-Y files from compatible Datasets. Usually this class would not be used and SEGY-SAK users can write SEG-Y file via the seisio accessor.

Example

Writing data with the seisio accessor.

Python
ds.seisio.to_segy()

to_segy(ds, data_var='data', vert_dimension='samples', dead_trace_var=None, trace_header_map=None, **dim_kwargs)

Output xarray dataset to SEG-Y format.

Parameters:

Name Type Description Default
ds Dataset

The input dataset

required
data_var str

The Dataset variable name for the output volume.

'data'
vert_dimension str

Data dimension to output as vertical trace, defaults to 'samples'.

'samples'
dead_trace_var Union[str, None]

A variable in the Dataset which signifies dead traces.

None
trace_header_map Dict[str, int]

Defaults to None. A dictionary of Dataset variables and byte locations. The variable will be written to the trace headers in the assigned byte location. By default CMP=23, cdp_x=181, cdp_y=185, iline=189, xline=193.

None
dim_kwargs

The dimension/byte location pairs to output dimensions to. The number of dim_kwargs should be equal to the number of dimensions on the output data_array. The sort order will be as per the order passed to the function.

{}

write_text_header(text, line_numbers=True)

Write the text header for the file. The line length limit is 80 characters.

Parameters:

Name Type Description Default
text str

The text to write, new lines have newline character \n. Long lines will be truncated.

required
line_numbers bool

Add line numbers to the output text header.

True