A comprehensive Open Source repository for Petrophysics, providing tools, scripts, and resources for analyzing subsurface data. Ideal for geoscientists, engineers, and researchers working with porosity, permeability, and other petrophysical properties. Join us in advancing the science of subsurface exploration and reservoir characterization.
We have created this GitHub repository titled Open-Source-Petrophysics where we will be sharing specialized petrophysical tools, primarily written in Jupyter Notebooks, to document and streamline various processes. This repository will also include example datasets, and each notebook will feature links to run the code directly in Google Colab, allowing users to execute the notebooks without needing Python installed locally.
The goal of the Open-Source-Petrophysics repository is to consolidate various petrophysical tools and scripts into a focused, well-documented resource. Initially, the repository will serve as a launchpad for tools designed with one or two specific objectives, making them easy for others to try out and build upon. Over time, we’ll also develop more comprehensive workflows, like those we have shared in this repository.
Below are some topics for the petrophysical tools we are developing. Any topic highlighted in blue is a hyperlink to a python Colab-ready Jupyter Notebook accessible from that link. These notebooks can be run directly in the Colab environment using an ordinary web browser. As we develop more notebooks, the number of blue links will increase.
Clicking a link will first open the Jupyter Notebook in GitHub. Press the 'Open in Colab' button in the upper left corner to launch the notebook in Colab. While in Colab, the notebook will automatically load the necessary data files and any required python libraries. Ensure that you are logged into your Google account by checking the upper right corner of the webpage. If not, log in before running Colab. To execute the notebook, go to the top title bar of Colab, click on the 'Runtime' tab, and select 'Run all.' The notebook will upload all necessary data files and run the Python code. The process may take a few minutes, but we've tested it in our environment, and Colab usually works fine. When finished, we suggest that in the "Runtime" column, click on "Disconnect and delete runtime" to end your CoLab session. That is it.
- Read in las file using Lasio and explore data
- Read in las file and create a Depth Plot using matplotlib
- Neutron-Density Chartbook Porosity calculation using Knn
- Lithology from Optimization
- Refine saturation calculations using interactive Pickett plots with Panel interactive widgets
- Python-based optimization for lithology estimation using the original work of Ruben Charles
- Shaley Sand Workflow
- Hodges-Lehmann Multiple Shale Indicator method used to model Clay Bound Water, PHIE and Qv.
- Calculate Clay Bound Water, PHIE and Qv for Waxman-Smits saturation analysis using Panel interactive widgets.
- Convert routine core analysis Kair to Klinkenberg permeability
- Create Relative Permeability curves using rock/fluid properties with Panel
- View Clastic Thin Section photomicrographs from selected Porosity-Permeability samples using Altair
- View Carbonate Capillary Pressure curves from selected Porosity-Permeability samples using Altair. This notebook creates the HPMI Pc curves from the Thomeer parameters prior to the interactice visualization.
- Interactive Thomeer parameter analysis from High Pressure Mercury Injection data and a Geolog Project with Interactive Python Loglans
- Chicheng Xu's normal Gaussian fit of HMPI data - Needs_Revision_to_CDF
- Buiting Upscaled Capillary Pressure and Buiting-Clerke Upscaled Permeability
- Evaluation of various unsupervised Cluster analysis techniques with different elbow type methods.
- Rock Typing and the creation of full pore system Petrophysical Rock Types.
- Permeability estimation using KNN, ...
- Use of Thomeer parameters to estimate well log and 3D model saturations
- Free Water Level (FWL) search using Capillary Pressure data
- Free Water Level search results from individual wells used to create a FWL surface for 3D modeling of saturations
- Calculate Reservoir Fluid properties and IFTcos(theta) for carbonate and clastic reservoirs characterization projects. IFTcos(theta) for carbonates is much lower than for clastic reservoirs.
- Create field production maps with interactive links to well-by-well dynamic data (pressure and production) for better understanding of the productive characteristics of your reservoir.
- Comprehensive Carbonate workflow for reservoir characterization using a new, comprehensive carbonate reservoir characterization database from Costa, Geiger and Arnold(1). This repository has 17 wells from Costa Field, and a single Jupyter Notebook that performs the following tasks:
- Load las file using lasio
- Visualize Data Extent using Andy McDonald's methods
- Calculate Total Porosity from digitized Chart Book data using Knn
- Calculate Water Saturation using Interactive Pickett Plot tool from Panel
- Optimization of log response functions to model lithology
- Model Permeability using kNN
- Estimate Thomeer Capillary Pressure parameters from PHIT and Knn Permeability using Knn again
- Perform Free Water Level (FWL) search on subject well
- Estimate Capillary Pressure based saturations from Thomeer parameters and and height above FWL
- Export results to Excel and las files
- Workflow in a Geolog Project with python Loglans
- Interactive workflows for Waxman-Smits saturation analysis Workflow in a Geolog Project with python Loglans
- Interactive Passey methods used in unconventional well log analysis
- Create an NMR logs from echo trains created from bin porosities and then process these echo trains with added noise for the T2 distribution. This approach provides an introductory understanding of converting time-domain echo train data into the T2 domain through T2 inversion. While the process is somewhat circular, real echo trains could be used instead. During this process, the user can introduce random noise to the echo trains, stack multiple echo trains to average out some of the noise, and then process the stacked echo trains to generate an NMR log. This method serves as an effective educational tool for NMR logging to better understand the process.
- Interactively Interrogate Well Log data using Python's Altair with Geolog python Loglan files.
- Equinor DLISIO
- LASIO
- Utilities – SPWLA PDDA ML Contests
- Utilities – UTFE
- SEG
- Andy McDonald Petrophysical Website
- If you click on the Jupyter Notebook links that we have provided, then you will see the following type of image while you are still in GitHub. Click on the banner "Open in CoLab" at the top. This will then open the notebook in Google CoLab. Look to the far upper right corner of the web page to make sure that you are logged into your Google account. If not, then login before trying to run CoLab.
- On the top title bar of CoLab there is a label called "Runtime"(second image below). Click on this and then click on "Run all". That is it. The notebook should upload all of the data files, load the necessary python libraries and run the python notebook. It could take a few minutes, but we have tested each notebook in this environment, and CoLab works well most of the time. If you have any issues, then click on Run all again. That should take care of the problem unless the CoLab network is extremely busy.
- When finished, then we suggest in the "Runtime" tab, click on "Disconnect and delete runtime" to end your CoLab session. This will delete all of the data and terminate the runtime.
- Xu, C., Torres-Verdín, C. Pore System Characterization and Petrophysical Rock Classification Using a Bimodal Gaussian Density Function. Math Geoscience 45, 753–771 (2013). https://doi.org/10.1007/s11004-013-9473-2
- Costa Gomes J, Geiger S, Arnold D. The Design of an Open-Source Carbonate Reservoir Model. Petroleum Geoscience, https://doi.org/10.1144/petgeo2021-067
- Phillips, E. C., Buiting, J. M., Clerke, E. A, “Full Pore System Petrophysical Characterization Technology for Complex Carbonate Reservoirs – Results from Saudi Arabia”, AAPG, 2009 Extended Abstract.
- Clerke, E. A., Mueller III, H. W., Phillips, E. C., Eyvazzadeh, R. Y., Jones, D. H., Ramamoorthy, R., Srivastava, A., (2008) “Application of Thomeer Hyperbolas to decode the pore systems, facies and reservoir properties of the Upper Jurassic Arab D Limestone, Ghawar field, Saudi Arabia: A Rosetta Stone approach”, GeoArabia, Vol. 13, No. 4, p. 113-160, October 2008.
- .J.M. Buiting, Fully Upscaled Saturation-Height Functions for Reservoir Modeling Based on Thomeer's Method for Analyzing Capillary Pressure Measurements, SPE Paper 105139, 2007.
- J.J.M. Buiting, E.A. Clerke, Permeability from Porosimetry Measurements: Derivation for a Tortuous and Fractal Tubular Bundle, Journal of Petroleum Science and Engineering, 108 (2013), 267–278.