Skip to content
/ xtgeo Public

XTGeo Python class library for subsurface Surfaces, Cubes, Wells, Grids, Points, etc

License

Notifications You must be signed in to change notification settings

equinor/xtgeo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

8696bec · Mar 14, 2025
Jan 16, 2025
Mar 1, 2024
Jan 28, 2025
Aug 16, 2024
Feb 20, 2025
Mar 14, 2025
Mar 14, 2025
Mar 14, 2025
Apr 7, 2020
Jan 16, 2024
Aug 8, 2023
Feb 7, 2024
Jan 11, 2024
Apr 29, 2019
Jan 8, 2025
Nov 10, 2023
Sep 16, 2021
Jan 15, 2025
Jan 10, 2025

Repository files navigation

XTGeo builds linting codecov Ruff PyPI version Documentation Status PyPI - Python Version PyPI - License

Introduction

XTGeo is a LGPL licensed Python library with C backend to support manipulation of (oil industry) subsurface reservoir modelling. Typical users are geoscientist and reservoir engineers working with reservoir modelling, in relation with RMS. XTGeo is developed in Equinor.

Detailed documentation for XTGeo at Read the Docs

Feature summary

  • Python 3.9+ support
  • Focus on high speed, using numpy and pandas with C backend
  • Regular surfaces, i.e. 2D maps with regular sampling and rotation
  • 3D grids (corner-point), supporting several formats such as RMS and Eclipse
  • Support of seismic cubes, using segyio as backend for SEGY format
  • Support of well data, line and polygons (still somewhat immature)
  • Operations between the data types listed above; e.g. slice a surface with a seismic cube
  • Optional integration with ROXAR API python for several data types (see note later)
  • Linux is main development platform, but Windows and MacOS (64 bit) are supported and PYPI wheels for all three platforms are provided.

Installation

For Linux, Windows and MacOS 64bit, PYPI installation is enabled:

pip install xtgeo

For detailed installation instructions (implies C compiling), see the documentation.

Getting started

import xtgeo

# create an instance of a surface, read from file
mysurf = xtgeo.surface_from_file("myfile.gri")  # Irap binary as default

print(f"Mean is {mysurf.values.mean()}")

# change date so all values less than 2000 becomes 2000
# The values attribute gives the Numpy array

mysurface.values[mysurface.values < 2000] = 2000

# export the modified surface:
mysurface.to_file("newfile.gri")

Note on RMS Roxar API integration

The following applies to the part of the XTGeo API that is connected to Roxar API (RMS):

RMS is neither an open source software nor a free software and any use of it needs a software license agreement in place.