Metadata-Version: 2.4
Name: rokpy
Version: 1.0.0
Summary: A comprehensive object-oriented Python package for building rock-physics models.
Author-email: Mostafa Abbasi <abbasi.mstfa@gmail.com>
License: GPL-3.0-only
Project-URL: Homepage, https://github.com/abbasi-mst/rokpy
Project-URL: Repository, https://github.com/abbasi-mst/rokpy
Project-URL: Bug Tracker, https://github.com/abbasi-mst/rokpy/issues
Project-URL: Documentation, https://github.com/abbasi-mst/rokpy
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.20
Requires-Dist: scipy>=1.7
Requires-Dist: matplotlib>=3.3
Requires-Dist: pandas>=1.3
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: black>=21.0; extra == "dev"
Requires-Dist: flake8>=3.9; extra == "dev"
Requires-Dist: isort>=5.0; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx<7,>=6.2; extra == "docs"
Requires-Dist: furo>=2024.4.0; extra == "docs"
Requires-Dist: myst-parser>=0.18.0; extra == "docs"
Requires-Dist: nbsphinx>=0.9.8; extra == "docs"
Requires-Dist: sphinx-rtd-theme>=1.0; extra == "docs"
Provides-Extra: notebooks
Requires-Dist: jupyter>=1.0; extra == "notebooks"
Requires-Dist: jupyterlab>=3.0; extra == "notebooks"
Dynamic: license-file

![rokpy](rokpy.png)

# `rokpy`

A comprehensive object-oriented Python package for building rock-physics models.

**by: Mostafa Abbasi**

## Introduction

`rokpy` is a comprehensive python package for Rock-physical modeling that includes a wide variety of models and relations. the package follows an object-oriented programming (OOP) scheme for modeling the rock and its components. According to this scheme, a rock is object with many different attributes such as porosity, minerals, fluids, inclusions, etc. and also many different properties such as velocities, bulk and shear moduli, density, etc. All these properties are already included into a rock (or any of its components), therefore, It doesn't require the user to write code for any of these features. 

Once a rock model is build and it's hyper parameters such as pore shapes or fluid and mineral properties are fine-tuned for a given formation in a filed, one may use the model for another field. Therefore, using the `rokpy`, you may **"Model here, apply there"**.

In addition to pre-designed models of rock and its components, these users may also use an extensive library of rock-physical relations and methods to build their own models from the scratch. These methods are categorized into different modules such as **bound methods**, **inclusion methods**, **contact methods** and **fluid effect methods**. 

The package methods are mainly written on the basis of the formulations and descriptions given in *The Rock-Physics handbook (Mavko et al., 2020)*, however, the methods are not limited to this book and many other key literatures are also reviewed to build the package. It worth noting that I have been tried to verify the codes by regenerating the plots in the book and and corresponding papers. 

> NOTE: Despite the breadth of `rokpy`, this is a one-man project developed merely by myself during my spare times in few last years. Therefore, it's not unlikely to see some bugs or mistakes in the codes. Therefore, I'll appreciate if you contact me if you find any issue in the codes or if you have any recommendations.
> 
> **Mostafa Abbasi**
> abbasi.mstfa@gmail.com 

## Key Features

- Object-oriented design for rock-physics modeling
- An extensive library of rock-physics models and relations
- Effective medium theory implementations
- Empirical relations (Vernik, Gardner, Castagna, Han, etc.)
- Fluid and mineral property databases
- Well-log visualization utilities

## Installation

```bash
pip install rokpy
```

## Quick start

```python
import rokpy as rp

shale = rp.Material(p_velocity=3200, s_velocity=1800, density=2.4)
print(shale.poisson)
```

## Examples

The package has an *examples* directory containing some tutorials notebooks. This tutorials give you a good primary outlook to implement different models and codes. These notebooks also show you different capabilities of the codes beyond just modeling.

Don't limit yourself to these notebooks and also dive into the documentations to explore different classes, attributes and functions.

## Contributing

Contributions are highly welcome. Please open issues for bugs and feature requests. Let's improve it together.
