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.1b1-cp38-cp38-win_amd64.whl (503.3 kB view details)

Uploaded CPython 3.8Windows x86-64

xtgeo-2.9.1b1-cp38-cp38-manylinux2010_x86_64.whl (489.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ x86-64

xtgeo-2.9.1b1-cp37-cp37m-win_amd64.whl (501.9 kB view details)

Uploaded CPython 3.7mWindows x86-64

xtgeo-2.9.1b1-cp37-cp37m-manylinux2010_x86_64.whl (487.2 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ x86-64

xtgeo-2.9.1b1-cp36-cp36m-win_amd64.whl (501.9 kB view details)

Uploaded CPython 3.6mWindows x86-64

xtgeo-2.9.1b1-cp36-cp36m-manylinux1_x86_64.whl (484.2 kB view details)

Uploaded CPython 3.6m

xtgeo-2.9.1b1-cp35-cp35m-manylinux1_x86_64.whl (484.2 kB view details)

Uploaded CPython 3.5m

xtgeo-2.9.1b1-cp27-cp27mu-manylinux1_x86_64.whl (483.9 kB view details)

Uploaded CPython 2.7mu

File details

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

File metadata

  • Download URL: xtgeo-2.9.1b1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 503.3 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/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.0

File hashes

Hashes for xtgeo-2.9.1b1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 ecbc0046cabd452c3f40bc02f282aa9979c460ede5327b74fa513eb86999d261
MD5 a916c164c2d924e0d5d8262ee7cb1375
BLAKE2b-256 dce33e9647bd8d1c290ed23d9ca51a5a73d04956eb4ba8a84de751ad95a4ddd7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: xtgeo-2.9.1b1-cp38-cp38-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 489.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.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.6.7

File hashes

Hashes for xtgeo-2.9.1b1-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 30b412eddd662187759b7382ba27534d81394b900ae76e1f0ccd08f8f2ce85f7
MD5 8a6da60a688c88ef153bd2445e915fcb
BLAKE2b-256 50902b8f63d28cf8b8f43b5007befe505c736d117ce2728eb26dff4f9f6a689b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: xtgeo-2.9.1b1-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 501.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/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.5

File hashes

Hashes for xtgeo-2.9.1b1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 1cbb7c54016c8b61b2517c2d654e26523d7c0943454a01603597cb6bc2be2ea2
MD5 8dacf0eda2dccc3c63e401e8e9f629f4
BLAKE2b-256 e73d7d9f66a240a410eb9e8f590b50ba640dee0e95b14a58dab886e4d44d09d4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: xtgeo-2.9.1b1-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 487.2 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.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.6.7

File hashes

Hashes for xtgeo-2.9.1b1-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 cdf86e10485c69db2a45374c272b74c9ed854355928ae008df8f2e7c26f37be1
MD5 b94d51f210aabf8325fbefc534cbfbec
BLAKE2b-256 a582887b6404fd31c123b22bf67b96d80a7235b76b783d71b82ee0fd64edbc7a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: xtgeo-2.9.1b1-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 501.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/40.6.2 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.6.8

File hashes

Hashes for xtgeo-2.9.1b1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 373cafbb9cc8e24480afdecaa5f1abda6ee9eefd8eafb1d9fa7b4424ec6a900b
MD5 9c7f6f3d8b290cd2d9aa5fab64d2dea8
BLAKE2b-256 5a253a0d8e78e0e52e70fef608d852c584ddec9a45b726e27001f00d61264ca7

See more details on using hashes here.

File details

Details for the file xtgeo-2.9.1b1-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: xtgeo-2.9.1b1-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 484.2 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.6.7

File hashes

Hashes for xtgeo-2.9.1b1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 df8e6c64ae71a878a8f73b8e65c3ef3aa838d4c7659a686689ee69055ca9bf4f
MD5 e7d3c739315caf003c2d0e666bf85f68
BLAKE2b-256 4a51b7e1274a02c91a9410a0a2ceddb833a50752c79779eded4b638fa365a099

See more details on using hashes here.

File details

Details for the file xtgeo-2.9.1b1-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

  • Download URL: xtgeo-2.9.1b1-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 484.2 kB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.6.7

File hashes

Hashes for xtgeo-2.9.1b1-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ae45c52f81010a85b28c2f7a051b5d2bcd5581fad20ef1eecaecab8913dcc2e3
MD5 9a56601a7df840a2c0f04be14f835964
BLAKE2b-256 4886299a68688e81c36b8f9cfb4922c915ad6852240431bc7f7018bbcc389539

See more details on using hashes here.

File details

Details for the file xtgeo-2.9.1b1-cp27-cp27mu-manylinux1_x86_64.whl.

File metadata

  • Download URL: xtgeo-2.9.1b1-cp27-cp27mu-manylinux1_x86_64.whl
  • Upload date:
  • Size: 483.9 kB
  • Tags: CPython 2.7mu
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.6.7

File hashes

Hashes for xtgeo-2.9.1b1-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 286909500e484b04e0a7a1a0d1b3114f6b129c0e9f438ccd765fd03ac0a02fa4
MD5 c56d53da6e47cd34334c12c62f545b92
BLAKE2b-256 26d081d2467c38526a07044e4c5d18a4fb6b4bcaf444f994f66be6062db57f1a

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