Skip to main content

A Python Package for Petrophysical Evaluation

Project description

Documentation Status PyPI version Downloads PyPI PyPI - License Libraries.io dependency status for GitHub repo GitHub contributors

Petrolib: Petrophysical Evaluation Package

This is a python package designed to help users perform petrophysical analysis by estimating petrophysical parameters such as:

* Volume of Shale using various methods like Clavier, Stieber and Larionov methods
* Porosity - Effective and Total porosities using the density and Wyllie's sonic methods.
* Water Saturation - using both archie and simmandoux methods
* Permeability

In addition to estimating these parameters, log plots are automatically displayed for proper interpretation. Also a pay summary result/dataframe is produced to help quantify the over-all quality of the reservoirs. Cutoff such as the porosity, shale volume and water saturation are applied to flag pay regions. The pay summary include:

  • net, gross and not net thicknesses
  • % net-to-gross
  • average volume of shale
  • average porosity
  • bulk volume of water
  • water saturation.

Interestingly, the parameters are computed and displayed only for the zones of interest picked. Plots such as neutron-density and pickett are available for reservoir assessment. Geolocations of the wells can also be visualised.

Functionalities

The package is designed to handle:

  • Loading of well data
  • Processing of well log data
  • Statistical analysis such as log frequencies and correlation
  • Well log visualisation
  • Plot well locations on an actual map
  • Facilitates the loading of well tops.
  • Plot log curves along with zonation tracks
  • Neutron-density cross plot
  • Pickett Plot

Installation

pip install -U petrolib

Quick tutorial

#import necessaries
from pathlib import Path
from petrolib import procs
from petrolib import file_reader as fr
from petrolib.workflow import Quanti
from petrolib.plots import tripleCombo, Zonation, plotLog

#load data
well_path = Path(r"./15_9-19.las")
tops_path = Path(r'./well tops.csv')

df, las = fr.load_las(well_path, return_csv=True, curves=['GR', 'RT', 'NPHI', RHOB'])

#process data
df = procs.process_data(df, 'GR', 'RT', 'NPHI', 'RHOB')

#triple combo
%matplotlib inline
tripleCombo(df, 'DEPTH', 'GR', 'RT', 'NPHI', 'RHOB', ztop=3300,
               zbot=3450, res_thres=10, fill='right', palette_op='rainbow', limit='left')
               
#zone plot
zones = Zonation(df, path=tops_path)
zones.plotZone('DEPTH', ['GR', 'RT', 'RHOB', 'NPHI', 'CALI'], 3300, 3600, '15_9-19')
plotLog('DEPTH', ['GR', 'RT', 'RHOB', 'NPHI', 'CALI'], 3300, 3600, '15_9-19')

#calling the zonation object to extra info
ztop, zbot, zn, fm = zones()

#Petrophysics
pp = Quanti(df, zn, ztop, zbot, fm, 'DEPTH', 'GR', 'RT', 'NPHI', 'RHOB', use_mean=True)
vsh = pp.vshale(method='clavier', show_plot=True, palette_op='cubehelix', figsize=(9,12))
por = pp.porosity(method='density', show_plot=True, figsize=(10, 12))
sw = pp.water_saturation(method='archie', show_plot=True, figsize=(10, 12))
perm = pp.permeability(show_plot=True, figsize=(9, 10))
flags = pp.flags(por_cutoff=.12, vsh_cutoff=.5, sw_cutoff=0.8, show_plot=True, palette_op='cubehelix', figsize=(20, 15))

ps = pp.paySummary(name='15-9_F1A')

#save results to excel
pp.save(file_name='Pay Summary')

Tutorial repo link

Project details


Download files

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

Source Distribution

petrolib-1.2.6.tar.gz (31.1 kB view details)

Uploaded Source

Built Distribution

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

petrolib-1.2.6-py3-none-any.whl (32.3 kB view details)

Uploaded Python 3

File details

Details for the file petrolib-1.2.6.tar.gz.

File metadata

  • Download URL: petrolib-1.2.6.tar.gz
  • Upload date:
  • Size: 31.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for petrolib-1.2.6.tar.gz
Algorithm Hash digest
SHA256 6887897a9990a62831a0e495dbfdd164c1c524b8813a22ed3b5d71d75f4629e7
MD5 8e41977e9b0c441b00e8d72cf5e1ac2b
BLAKE2b-256 158fc2f07573f6b318917d8e807cc62d90d2f3f603addd59371f3e92885e61eb

See more details on using hashes here.

File details

Details for the file petrolib-1.2.6-py3-none-any.whl.

File metadata

  • Download URL: petrolib-1.2.6-py3-none-any.whl
  • Upload date:
  • Size: 32.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for petrolib-1.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 9a4c8491b67e0d6e85702ece1c71ecb1311d84d6fb019e3ae34d8fe86baee4ad
MD5 e67dcc837dcb50a2bc551ef36724b05d
BLAKE2b-256 5e1c11e418943f3b9b80ce5fbbfcfac8c11e627496561cdb47b6ee3eeb6ae923

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