Skip to main content

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

Project description

XTGeo builds linting 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

Version 2.13.0 (in prep)

  • Skip support for Python 2.7 and 3.5. Now only Python 3.6+ is supported

  • New features:

    • Grid quality indicators for Grid(): get_gridquality_properties()
    • Support for BytesIO i/o for RegularSurface() formats irap ascii and zmap ascii
  • Improvements and bug fixes

    • Reorganizing internal storage of 3D corner point grids
    • Faster read and write to ROFF binary for Grid() (read almost 4 times faster)
    • Faster read/write to Roxar API

2.12.1

  • Fix of get_dataframe() for RegularSurface which fails in some case, cf issue #415

2.12.0

  • New features:
    • Added method rename_subgrids for Grid() class.
    • Added key casting to method to_roxar() for GridProperty() class
    • Added key faciescodes to method from_roxar and gridproperty_from_roxar() for GridProperty() class
    • It is now possible to write blocked wells and ordinary wells to Roxar API
    • Added a autocrop() function for RegularSurface()

2.11.0

  • New features:
    • Added keys perflogrange and filterlogrange in Grid() report_zone_mismatch()

2.10.0

  • New features:
    • Added interpolation option in xsection when plotting 3D grids #401
  • Fixes:
    • Improvements in Roxar API interface, e.g. behaviour on when projects are saved or not
    • Fix on surface values, which data that can be accepted, issue #405
    • Some other minor fixes in code and documentation

2.9.0 and 2.9.1

  • Full rewrite of surface slice cube methods, they will now be much faster #354
  • Added activeonly key in make_ijk_from_grid for Well()
  • Improving points in cell detection algorithm (full rewrite)
  • Fix bug in cube orientation when importing fro Roxar API #359
  • Introducing new faster reading of roff grids (will not be default until later)
  • Fix of xinc/yinc for PMD map format #367
  • Improvements in various plot routines, in particular xsections
  • Changed CI and deploy from travis/appveyor to Github actions using cibuildwheel

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.13.0a1-cp38-cp38-win_amd64.whl (551.1 kB view details)

Uploaded CPython 3.8Windows x86-64

xtgeo-2.13.0a1-cp38-cp38-manylinux2010_x86_64.whl (539.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ x86-64

xtgeo-2.13.0a1-cp38-cp38-macosx_10_9_x86_64.whl (515.0 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

xtgeo-2.13.0a1-cp37-cp37m-win_amd64.whl (548.9 kB view details)

Uploaded CPython 3.7mWindows x86-64

xtgeo-2.13.0a1-cp37-cp37m-manylinux2010_x86_64.whl (535.3 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ x86-64

xtgeo-2.13.0a1-cp37-cp37m-macosx_10_9_x86_64.whl (513.2 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

xtgeo-2.13.0a1-cp36-cp36m-win_amd64.whl (548.9 kB view details)

Uploaded CPython 3.6mWindows x86-64

xtgeo-2.13.0a1-cp36-cp36m-manylinux2010_x86_64.whl (535.3 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.12+ x86-64

xtgeo-2.13.0a1-cp36-cp36m-macosx_10_9_x86_64.whl (513.2 kB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

File details

Details for the file xtgeo-2.13.0a1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: xtgeo-2.13.0a1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 551.1 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/49.2.1 requests-toolbelt/0.9.1 tqdm/4.50.1 CPython/3.8.6

File hashes

Hashes for xtgeo-2.13.0a1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 256d9acff4222cdef07555aa5b1dfcd1088d7c6752e69b1b94b6a18fb76ca5ce
MD5 d055a7325988b7868ec9b9bfeeaa97dc
BLAKE2b-256 9461d269ee4a90eaf6dbc8f2eeb5fb12974700eb9ee5ba7d183713de11f01ad7

See more details on using hashes here.

File details

Details for the file xtgeo-2.13.0a1-cp38-cp38-manylinux2010_x86_64.whl.

File metadata

  • Download URL: xtgeo-2.13.0a1-cp38-cp38-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 539.0 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/49.2.1 requests-toolbelt/0.9.1 tqdm/4.50.1 CPython/3.8.6

File hashes

Hashes for xtgeo-2.13.0a1-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 a41007a737aef4f767ba70e542a94f8398ccb4add7780dd15032c7846f87bacf
MD5 0f5c5e4fe095c8ea1d3ced5f9f5248c6
BLAKE2b-256 c8a10cf7cfed92a75892c4fe512db2b121c2921146bff27d4b405e31189a3c23

See more details on using hashes here.

File details

Details for the file xtgeo-2.13.0a1-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: xtgeo-2.13.0a1-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 515.0 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/49.2.1 requests-toolbelt/0.9.1 tqdm/4.50.1 CPython/3.8.6

File hashes

Hashes for xtgeo-2.13.0a1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9065e8f548b1a0d7e4f575de5ac060aab62248942945fb54334209fe06f1c4c6
MD5 39230b32cd8f420b425c2f690fa94cf9
BLAKE2b-256 42e0d0a419519246e3629a3860c3647e6dabe711864e2dc61f02fd113fd188b2

See more details on using hashes here.

File details

Details for the file xtgeo-2.13.0a1-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: xtgeo-2.13.0a1-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 548.9 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/49.2.1 requests-toolbelt/0.9.1 tqdm/4.50.1 CPython/3.8.6

File hashes

Hashes for xtgeo-2.13.0a1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 c91626936f61773dfcdf76b04d3e9bfc55eee45bbb5ef2ea50a9d143166c2272
MD5 d7e9b9be4894ab89ddfc9bdacf53f7eb
BLAKE2b-256 da0f5a29f99289b0b57ae29047a339e25842abc1e415f43af172f037c042e627

See more details on using hashes here.

File details

Details for the file xtgeo-2.13.0a1-cp37-cp37m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: xtgeo-2.13.0a1-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 535.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/49.2.1 requests-toolbelt/0.9.1 tqdm/4.50.1 CPython/3.8.6

File hashes

Hashes for xtgeo-2.13.0a1-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 1abe0871ff678f45f50130af8fbd54ff048f757051a763e4b584f8f8777176c2
MD5 d5c895b5f2f71f4180eca958501636e1
BLAKE2b-256 d5aad07462aed782351f16487b0f7dbf8a844dbc9664ffe4d732d73354e55ac1

See more details on using hashes here.

File details

Details for the file xtgeo-2.13.0a1-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: xtgeo-2.13.0a1-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 513.2 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/49.2.1 requests-toolbelt/0.9.1 tqdm/4.50.1 CPython/3.8.6

File hashes

Hashes for xtgeo-2.13.0a1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ca17ed9482c221a36de3e0a77eb5ed3d310016637f266dca1672c981833405ee
MD5 855e78b5914d9cb660a3f097282a115e
BLAKE2b-256 438a56122457008aaeadba954a542497345415aa142e0ef00b29a4a207a2f386

See more details on using hashes here.

File details

Details for the file xtgeo-2.13.0a1-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: xtgeo-2.13.0a1-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 548.9 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/49.2.1 requests-toolbelt/0.9.1 tqdm/4.50.1 CPython/3.8.6

File hashes

Hashes for xtgeo-2.13.0a1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 af8f1577422fa3420e3e9f73704bc4e823e0d63fc8e0635a5c7d52e146aa0c1b
MD5 4f6afad2bb4ccb5ce85724e7efb67dce
BLAKE2b-256 167c913487a59f63c3e5a9c3e5fc608b7522958a6450af378bab8ca619a9d561

See more details on using hashes here.

File details

Details for the file xtgeo-2.13.0a1-cp36-cp36m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: xtgeo-2.13.0a1-cp36-cp36m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 535.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/49.2.1 requests-toolbelt/0.9.1 tqdm/4.50.1 CPython/3.8.6

File hashes

Hashes for xtgeo-2.13.0a1-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 05bc93a21e0437ecd891527ce35ae3f75390da51854383de8b99f64dd9e0d90a
MD5 d34c535a38f0e799b571ac7a04695d73
BLAKE2b-256 4aaebc72e04eb81b086e24b139de3aee868e6f58651e1906242ff78e2306acb1

See more details on using hashes here.

File details

Details for the file xtgeo-2.13.0a1-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: xtgeo-2.13.0a1-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 513.2 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/49.2.1 requests-toolbelt/0.9.1 tqdm/4.50.1 CPython/3.8.6

File hashes

Hashes for xtgeo-2.13.0a1-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ba540acbae30978488e4c17eba2cc19a51f56695e0d0f293d5c6e80e158e726a
MD5 f1b4d98d747aaa96b49e14bb8744b89b
BLAKE2b-256 b6cc96975ce9446f8fba5cca4a8ed2495f14cfb9793791eca440d8a21404e4a6

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