or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

data-access.mdfile-operations.mdheader-access.mdindex.mdseismic-unix.mdutilities.md
tile.json

tessl/pypi-segyio

Simple & fast IO for SEG-Y files

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/segyio@1.9.x

To install, run

npx @tessl/cli install tessl/pypi-segyio@1.9.0

index.mddocs/

Segyio

A Python library for easy interaction with SEG-Y formatted seismic data files. Segyio provides a low-level C interface with Python bindings that offers fast, streaming-based file operations with numpy integration for efficient seismic data processing.

Package Information

  • Package Name: segyio
  • Language: Python
  • Installation: pip install segyio
  • Dependencies: numpy >= 1.10

Core Imports

import segyio

Common patterns for working with SEG-Y files:

import segyio
import numpy as np

Basic Usage

import segyio
import numpy as np

# Open an existing SEG-Y file for reading
with segyio.open('seismic.sgy') as f:
    # Get basic file information
    print(f"Samples per trace: {len(f.samples)}")
    print(f"Number of traces: {f.tracecount}")
    print(f"Inline range: {f.ilines[0]} to {f.ilines[-1]}")
    print(f"Crossline range: {f.xlines[0]} to {f.xlines[-1]}")
    
    # Read a single trace
    trace = f.trace[0]
    
    # Read an inline
    inline_data = f.iline[100]
    
    # Read trace headers
    headers = f.header[0:10]

# Create a new SEG-Y file
spec = segyio.spec()
spec.samples = np.arange(0, 1000, 4)  # 0-1000ms, 4ms intervals
spec.ilines = range(1, 11)  # Inlines 1-10
spec.xlines = range(1, 21)  # Crosslines 1-20

with segyio.create('output.sgy', spec) as f:
    # Write trace data
    for i, trace_data in enumerate(synthetic_data):
        f.trace[i] = trace_data

Architecture

Segyio's architecture centers around streaming file operations and structured data access:

  • File Handle (SegyFile): Main interface for SEG-Y file operations with multiple access modes
  • Access Modes: Different views of the same data (trace, iline, xline, depth_slice, gather, header)
  • Enumerations: Type-safe constants for header fields and format codes
  • Specifications: Template system for creating new SEG-Y files with proper geometry
  • Streaming Operations: Memory-efficient processing of large seismic volumes

This design enables both low-level control for performance and high-level convenience for common seismic processing tasks.

Capabilities

File Operations

Core functionality for opening existing SEG-Y files, creating new files, and managing file handles with proper resource management.

def open(filename, mode="r", iline=189, xline=193, strict=True, ignore_geometry=False, endian='big'):
    """Open a SEG-Y file for reading or writing."""

def create(filename, spec):
    """Create a new SEG-Y file with specified geometry."""

class SegyFile:
    """Main file handle for SEG-Y operations."""

File Operations

Header Access

Access to binary header fields and trace header fields using meaningful enumeration constants instead of byte offsets.

class BinField:
    """Binary header field byte offset constants."""
    
class TraceField:
    """Trace header field byte offset constants."""

class SegySampleFormat:
    """Data sample format codes."""

Header Access

Data Access Modes

Multiple specialized interfaces for accessing seismic data organized by traces, inlines, crosslines, depth slices, and gathers.

# Access modes available on SegyFile instances
f.trace[i]        # Individual traces
f.iline[il]       # Inline slices
f.xline[xl]       # Crossline slices  
f.depth_slice[d]  # Horizontal depth/time slices
f.gather[cdp]     # Pre-stack gathers

Data Access

Utility Functions

Helper functions for format conversion, metadata extraction, array-to-SEG-Y conversion, and common seismic processing operations.

def dt(f, fallback_dt=4000.0):
    """Infer sample rate from SEG-Y file."""

def cube(f):
    """Read full 3D cube into memory."""

def from_array(filename, data, **kwargs):
    """Create SEG-Y file from numpy array."""

Utilities

Seismic Unix Compatibility

Seismic Unix field name aliases and specialized file handling for SU format compatibility.

import segyio.su

# Use SU field names instead of numeric constants
segyio.su.tracl  # Trace sequence number within line
segyio.su.cdp    # CDP ensemble number
segyio.su.offset # Source-receiver offset

Seismic Unix