Skip to main content

XTGeo is a Python library for 3D grids, surfaces, wells, etc

Project description

XTGeo

Build Status Build status Codacy Badge codecov Code style: black 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 2.7+ and 3.5+ 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 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

from xtgeo.surface import RegularSurface

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

print("Mean is {}".format(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.

History

Version 2

2.8.3

  • Fix a bug for renaming points and polygons coordinate columns, ref #349
  • Added and "F" in SPECGRID when exporting 3D grid to GRDECL format

2.8.2

  • Fix a bug wrt writing bytestream instances on non-Linux, #342

2.8.1

  • Fix a clib related issue that made XTGeo import feil on RHEL6 in Python2, #346

2.8.0

  • New features:
    • Added gridlink option in GridProperty import, #329
    • More keyword options in Grid get_ijk_from_points() #327
    • Well method report_zone_mismatch() rewritten and improved
    • Well: added get_surface_picks()
    • Initialise a new GridProperty instance from existing GridProperty
    • Grid(): added name as attribute #319
  • Bug fixes:
    • The gridproperty list in GridProperty() is now unique
    • Fixed bug in Well: get_zonation_points
    • More fixes on pathlib (general rewrite) #332
  • Fixes for developers:
    • Replace logging methods in the C part, and relocated clib folder
    • Added code coverage in travis CI

2.7.1

  • Bugfig:
    • Issue with pathlib solved, #332

2.7.0

  • New features:
    • Support for petromod binary format for RegularSurface()
    • Added name attribute for Grid()
    • Enhanced plotting for well logs
    • The arrays stored Grid() are no longer SWIG C pointers, but numpy arrays. This simplifies pickling.
  • Bug fixes:
    • File names used in e.g. from_file should now handle pathlib instances
    • Improved error messages if issues with e.g. file names used in export/import
    • Fix of excessive logger output in
  • Fixes for developers:
    • General refactorizion of C code, to improve speed and stability. Also change logger method in C (still ongoing)

2.6.0

  • New features:
    • A Grid() instance can now be "numpified" so that pickling can be done, method numpify_carrays()
    • An existing GridProperty() instance should now accept scalar input which will be broadcasted to the full array
    • Added a method so one can create a GridProperty instance directly for a Grid() instance #291
    • Added several alternatives to instantate Points(), e.g. from a list of tuples
    • A general method that finds the IJK indices in a 3D grid from from Points() is made get_ijk_from_points #287
    • For RegularSurface(), the fill() methid will now accept an optional fill_value (constant) #294
  • Bug fixes:
    • Making surface write to BytesIO stream threading safe (Irap binary format)
    • Assigning a GridProperty() inside/outside a polygon is now more robust.
    • Many internal build fixes and improves, including requirements.txt
    • For surfaces, some operator overload function changed unintentionally the other instance #295
    • For surfaces, operator overload on instances with same topology will not unintentionally trigger resampling

2.5.0

  • New features:
    • Be able to write surfaces to BytesIO (memory streams), Linux only
    • Add the ability for 3D grids to detect and swap handedness of a 3D grid.
    • Available on Python 3.8 on all platforms
  • Fixes for developers
    • Now backward compatible to cmake 2.8.12
    • Many internal build fixes and improves, including requirements.txt

2.4.3

  • Fix of bugs when exporting points/polygons to Roxar API
  • Fix (for developers) various setup in cmake/swig etc so that cmake can be downgraded to 3.13.3 and hence a manylinux1 image is available in PYPI for Linux (Python versions < 3.7)

2.4.2

  • Fix a bug that occurs when reading Eclipse properties from E300 runs

2.4.1

  • Push to trigger travis build and deploy

2.4.0

  • New features:
    • Added a general kwargs to savefig() in plot module, so e.g. dpi keyword can be passed to matplotlib
  • Bug fixes:
    • More robust on reading saturations from UNRST files from Eclipse 300 and IX, where "IPHS" metadata (describing phases present) is unreliable.
  • Fixes for developers:
    • Setup can now be ran in "develop mode"

2.3.1

  • Preliminary support for Python 3.8 (Linux only)
  • Several bug fixes:
    • User warning when requested colour map is not found
    • Printing of a Points of Polygons instance shall now work
    • UNDEF values in property grdecl or bgrdecl export shall now be 0.0, not a large number
    • Name in GridProperty to_file(name=...) is fixed
    • If fformat in GridProperty import is mispelled, an exception will be raised

2.3.0

  • Added support for MacOS on PYPI (Python 3.6, 3.7)
  • Added functionality on grid slices as method ()
  • More flexible reading on phases present in Eclipse/IX UNRST files
  • Several minor bugfixes and improvements

2.2.2

  • Several smaller bug fixes
  • Use of realisation in gridproperty_from_roxar() was not working

2.2.1

  • Full C code and compile restructuring, now using scikit-build!
  • Use of realisation in gridproperty_from_roxar() was not working

2.2.0

Several fixes and new features, most important:

  • Well() class
    • Added tvd interval for rescaling of well logs.
    • When sampling a discrete property to well, it will now be a discrete log
    • Added a isdiscrete() method
  • RegularSurface() class
    • Support for read from bytestrings (memory) in addition to files (Irap binary format supported)
    • Fast load of surfaces (will only read metadata) if requested
    • Support for threading/multiprocessing (concurrent.futures) when importing surfaces from Irap binary.
  • Grid() class
    • Improvements and fixes for dual porosity and/or dual permeability models from Eclipse

2.1.0

Several fixes and new features, most important:

  • Cube() class

    • A general get_randomline() methods
  • Grid() class

    • Make a rectular shoebox grid
    • Get a randomline (sampling) along a 3D grid with property
    • More robust support for binary GRDECL format
    • Possible to input dual porosity models from Eclipse (EGRID, INIT, UNRST)
  • Surfaces

    • Added a class for Surfaces(), a collection of RegularSurface instances
    • Generate surface from 3D grid
    • Lazy load of RegularSurfaces (if ROFF/RMS binary) for fast scan of metadata
    • Clipboard support in from_roxar() and to_roxar() methods
    • fill(), fast infill of undefined values
    • smooth(), median smoothing
    • get_randomline() method (more general and flexible)
  • Points/polygons

    • Added copy() method
    • Added snap to surface method (snap_surface)
    • Several other methods related to xsections from polygons
  • Well() class

    • Get polygon and and improved fence from well trajectory
    • Look up IJK indices in 3D grid from well path

2.0.8

  • Fixed a backward compatibility issue with filter vs pfilter for points/polygons to_file

2.0.7

  • (merged into 2.0.8)

2.0.6

  • Corrected issues with matplotlib when loading xtgeo in RMS

2.0.5

  • Fixed a bug when reading grids in ROXAR API, the subgrids were missing
  • Improved logo and documentation runs
  • Allow for xtgeo.ClassName() as well as xtgeo.submodule.ClassName()
  • A number of smaller Fixes
  • More badges

2.0.4

  • Technical fixes regarding numpy versions vs py version, swig setup and setup.py

2.0.3

  • Deploy to python 3.4 and 3.5 also. Numpy versions tuned to match roxar library.

2.0.2

  • Adding services for code improvements (codacy, bandit)

2.0.1

  • Minor improvements in setup and documentation
  • Travis automatic deploy works now

2.0.0

  • First version after Open Sourcing to LGPL v3+

Version 0 and 1

See github for commit and tag history:

https://github.com/equinor/xtgeo

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

xtgeo-2.9.1b4-cp38-cp38-win_amd64.whl (519.8 kB view details)

Uploaded CPython 3.8Windows x86-64

xtgeo-2.9.1b4-cp38-cp38-manylinux2010_x86_64.whl (506.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ x86-64

xtgeo-2.9.1b4-cp38-cp38-macosx_10_9_x86_64.whl (486.2 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

xtgeo-2.9.1b4-cp37-cp37m-win_amd64.whl (518.5 kB view details)

Uploaded CPython 3.7mWindows x86-64

xtgeo-2.9.1b4-cp37-cp37m-manylinux2010_x86_64.whl (503.3 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ x86-64

xtgeo-2.9.1b4-cp37-cp37m-macosx_10_9_x86_64.whl (484.7 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

xtgeo-2.9.1b4-cp36-cp36m-win_amd64.whl (518.5 kB view details)

Uploaded CPython 3.6mWindows x86-64

xtgeo-2.9.1b4-cp36-cp36m-manylinux2010_x86_64.whl (503.3 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.12+ x86-64

xtgeo-2.9.1b4-cp36-cp36m-macosx_10_9_x86_64.whl (484.7 kB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

File details

Details for the file xtgeo-2.9.1b4-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: xtgeo-2.9.1b4-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 519.8 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.4

File hashes

Hashes for xtgeo-2.9.1b4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 c1c5670d040e56a5cae494c3db9a9a370546d21599c87c2f60a73b63e78532f3
MD5 9b282ac5f7f751002b9426c619053ba1
BLAKE2b-256 aa39634055297023014b770309448d23296755050fd4e6ee8177a0ec1bc7ef43

See more details on using hashes here.

File details

Details for the file xtgeo-2.9.1b4-cp38-cp38-manylinux2010_x86_64.whl.

File metadata

  • Download URL: xtgeo-2.9.1b4-cp38-cp38-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 506.2 kB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.3

File hashes

Hashes for xtgeo-2.9.1b4-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 5d40fff2d907451fc9fde8fc0f0fa7fe194c53538b26c9a2d328b0a92c5d4c0d
MD5 0359afde798df6f47fcc488ae5f3ad01
BLAKE2b-256 d94203a2dc16d82acd31a3919707069f3753741d5ce24c760e1d94e69dc97276

See more details on using hashes here.

File details

Details for the file xtgeo-2.9.1b4-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: xtgeo-2.9.1b4-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 486.2 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.3

File hashes

Hashes for xtgeo-2.9.1b4-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 626c1908655e30e0751671c608f47d01a6fe7cb459862345da3c05adbe818f2d
MD5 a805b09775c6e2bb117fa03ee7ad3461
BLAKE2b-256 42d851b3b158c10dbacabac17cf79c5aa8fb8baf24d7f04a2ca330cf31101249

See more details on using hashes here.

File details

Details for the file xtgeo-2.9.1b4-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: xtgeo-2.9.1b4-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 518.5 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.4

File hashes

Hashes for xtgeo-2.9.1b4-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 906e32f8170a7e7fd0c9d2923933f8288a549a7b98c5e66282294a09a66048a1
MD5 67af8e480cc40a64525df9a28e30154a
BLAKE2b-256 4f1d9710feb3bcd935623274a5b66bbc66013fc7399bbe7830dda29c85319a62

See more details on using hashes here.

File details

Details for the file xtgeo-2.9.1b4-cp37-cp37m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: xtgeo-2.9.1b4-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 503.3 kB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.3

File hashes

Hashes for xtgeo-2.9.1b4-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 d2263d0f1b7a789354ad9b1fe768a8266cd60306779f7a0dc73eb75f546c6d4d
MD5 ececf8582c382917d1ba282b89a9bfdf
BLAKE2b-256 8a6ff78d452b7e69e5d81d20c2525274e10347e1879f618dddd21faae70e5af7

See more details on using hashes here.

File details

Details for the file xtgeo-2.9.1b4-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: xtgeo-2.9.1b4-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 484.7 kB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.3

File hashes

Hashes for xtgeo-2.9.1b4-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c138c9099425df4bf031be92c0eb21cb5ff4d8c4fec2a3af4d667ac5baa8d84a
MD5 4cd205ca459efc61c3cc5c465e032dd0
BLAKE2b-256 917cc8ca9166f0d7a29fe5d221d8485b6a7d2a33fe1acab654c0e7539bd6f534

See more details on using hashes here.

File details

Details for the file xtgeo-2.9.1b4-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: xtgeo-2.9.1b4-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 518.5 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.4

File hashes

Hashes for xtgeo-2.9.1b4-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 f3179efcfc73c6cfb3007d28d616d6c7a9ed2325c7e80c060ec73ccb83e4e527
MD5 206ebe9616e3ee2eec30377f16c561cb
BLAKE2b-256 ad2595ddb31b8b65d49329101b4779e7127dfd80adfb43b7e54ab6d6968c7cc0

See more details on using hashes here.

File details

Details for the file xtgeo-2.9.1b4-cp36-cp36m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: xtgeo-2.9.1b4-cp36-cp36m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 503.3 kB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.3

File hashes

Hashes for xtgeo-2.9.1b4-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 522cc7563171c09389b5ac8da7b49af55eea0d4405f464b0973799f8a3faaccb
MD5 dc75fd88c1bf7e3a7c50ae876080501a
BLAKE2b-256 ff2b6a373943ee9f9edf92ea387efba0070790f1e7da7fe17c099069c4436d54

See more details on using hashes here.

File details

Details for the file xtgeo-2.9.1b4-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: xtgeo-2.9.1b4-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 484.7 kB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.3

File hashes

Hashes for xtgeo-2.9.1b4-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f22e763498c5c19fd431b290ac28cf07bb9a527e973b080575ab110112a6acbe
MD5 b69d5087087bb085769c969dc4c6c321
BLAKE2b-256 3824b42def8b39b40b7e5003c71b099fc4f43a8608b4ebb9be2823947839bf4f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page