Metadata-Version: 2.4
Name: petropandas
Version: 0.1.4
Summary: Pandas accessors for petrologists
Project-URL: Homepage, https://github.com/ondrolexa/petropandas
Project-URL: Documentation, https://petropandas.readthedocs.io
Project-URL: Repository, https://github.com/ondrolexa/petropandas.git
Project-URL: Issues, https://github.com/ondrolexa/petropandas/issues
Maintainer-email: Ondrej Lexa <lexa.ondrej@gmail.com>
License-Expression: MIT
License-File: LICENSE
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Requires-Dist: jinja2
Requires-Dist: matplotlib
Requires-Dist: mpltern
Requires-Dist: numpy
Requires-Dist: openpyxl
Requires-Dist: pandas
Requires-Dist: periodictable
Requires-Dist: pyparsing
Requires-Dist: seaborn
Requires-Dist: xlrd
Provides-Extra: database
Requires-Dist: requests; extra == 'database'
Provides-Extra: dev
Requires-Dist: black; extra == 'dev'
Requires-Dist: jupyterlab; extra == 'dev'
Requires-Dist: mkdocs; extra == 'dev'
Requires-Dist: mkdocs-jupyter; extra == 'dev'
Requires-Dist: mkdocs-material; extra == 'dev'
Requires-Dist: mkdocstrings[python]; extra == 'dev'
Requires-Dist: nbval; extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: requests; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs; extra == 'docs'
Requires-Dist: mkdocs-jupyter; extra == 'docs'
Requires-Dist: mkdocs-material; extra == 'docs'
Requires-Dist: mkdocstrings[python]; extra == 'docs'
Provides-Extra: extra
Requires-Dist: jupyterlab; extra == 'extra'
Provides-Extra: tests
Requires-Dist: nbval; extra == 'tests'
Requires-Dist: pytest; extra == 'tests'
Requires-Dist: requests; extra == 'tests'
Description-Content-Type: text/markdown

# petropandas

[![Release](https://img.shields.io/github/v/release/ondrolexa/petropandas)](https://img.shields.io/github/v/release/ondrolexa/petropandas)
[![Build status](https://img.shields.io/github/actions/workflow/status/ondrolexa/petropandas/testing.yml?branch=main)](https://github.com/ondrolexa/petropandas/actions/workflows/testing.yml?query=branch%3Amain)
[![Commit activity](https://img.shields.io/github/commit-activity/m/ondrolexa/petropandas)](https://img.shields.io/github/commit-activity/m/ondrolexa/petropandas)
[![License](https://img.shields.io/github/license/ondrolexa/petropandas)](https://img.shields.io/github/license/ondrolexa/petropandas)

Pandas accessors for petrologists

## Installation

```bash
pip install petropandas
```

### Optional extras

| Extra | Includes | Description |
|---|---|---|
| `database` | `requests` | Client for the remote petrodb REST API (`petropandas.database`) |
| `extra` | `jupyterlab` | JupyterLab support |
| `tests` | `pytest`, `nbval` | Run the test suite |
| `docs` | `mkdocs`, ... | Build documentation locally |
| `dev` | all of the above | Development setup |

```bash
pip install petropandas[database]      # basic + database client
pip install petropandas[dev]           # full development setup
```

## Getting started

`petropandas` provides several `pandas.DataFrame` accessors to seemlesly integrate
common petrological calculations to your Python data analysis workflow.

```python
from petropandas import pd, mindb
```

For more details check the [documentation](https://petropandas.readthedocs.io/).

```python
df = pd.read_excel("some/folder/data.xlsx")
df.oxides.molprop()
df.oxides.cations(noxy=12)

df.ree.normalize(reservoir='CI Chondrites', reference='McDonough & Sun 1995')
```

### Database client (optional)

The `petropandas.database` module provides a client for a remote petrodb REST API.
Install the extra and use it alongside the accessors:

```bash
pip install petropandas[database]
```

```python
from petropandas.database import PetroDB

db = PetroDB('http://127.0.0.1:8000', 'user', 'password')
project = db.projects(name="MyProject")
sample = project.samples(name="DB250")
df = sample.spots.df(mineral="Grt")
```
