Metadata-Version: 2.4
Name: pmmoto
Version: 0.1.5
Summary: Porous Media Topology and Morphology Toolkit
Author-email: "Timothy M. Weigand" <timothy.weigand@unc.edu>
License-Expression: MIT
Project-URL: Homepage, https://tmweigand.github.io/PMMoTo/
Project-URL: Source, https://github.com/tmweigand/PMMoTo
Project-URL: Issue Tracker, https://github.com/tmweigand/PMMoTo/issues
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy<2.0
Requires-Dist: cython==3.0
Requires-Dist: mpi4py>=4.0.0
Requires-Dist: scipy>=1.11
Requires-Dist: connected_components_3d>=3.12.4
Requires-Dist: matplotlib>=3.0
Provides-Extra: dev
Requires-Dist: pytest>=6.0; extra == "dev"
Requires-Dist: pytest-cov>=2.0; extra == "dev"
Requires-Dist: mypy>=1.15; extra == "dev"
Requires-Dist: tox>=3.24; extra == "dev"
Requires-Dist: pytest_benchmark>=5.1.0; extra == "dev"
Requires-Dist: ruff>=0.11.5; extra == "dev"
Requires-Dist: interrogate>=1.5.0; extra == "dev"
Requires-Dist: typing_extensions>=4.6; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx>=7.0; extra == "docs"
Requires-Dist: sphinx_rtd_theme; extra == "docs"
Requires-Dist: myst-parser; extra == "docs"
Requires-Dist: sphinxcontrib-bibtex; extra == "docs"
Requires-Dist: typing_extensions; extra == "docs"
Dynamic: license-file

# PMMoTo

![Tests](https://github.com/tmweigand/PMMoTo/actions/workflows/tests.yml/badge.svg)

![logo-1-text](https://github.com/tmweigand/PMMoTo/assets/68024672/5f667c8f-5498-4597-9af0-76fd6a9bc59a)

---

The Porous Media Morphology and Topology (PMMoTo) toolkit is an open-source Python library for analyzing, modeling, and characterizing the structure of porous materials. Built with Cython and C++ and designed for distributed memory systems using MPI, PMMoTo includes parallelized implementations of connected components analysis, morphological operations (e.g., dilation and erosion), and Euclidean distance transforms. Unlike many tools that focus on image-based analysis, PMMoTo is specifically designed for synthetically generated porous media, such as sphere packings and molecular dynamics simulations.

---

## Website

tmweigand.github.io/PMMoTo/

## Installation

**PMMoTo requires MPI** (see https://tmweigand.github.io/PMMoTo/user_guide/installation.html)

### Standard

1. **Clone the repository:**

   ```bash
   git clone https://github.com/tmweigand/PMMoTo.git
   cd PMMoTo
   ```

2. **Install the package:**

   ```
   pip install .
   ```

### Development

1. **Clone the repository:**

   ```bash
   git clone https://github.com/tmweigand/PMMoTo.git
   cd PMMoTo
   ```

2. Install in editable mode with dev dependencies:
   ```bash
   pip install -e .[dev]
   ```

---

## Citing

If you use PMMoTo in your research, please cite the relevant publication (too come).

---

## Community Guidelines

Contributions and community feedback is welcomed!

### Contributing

- Fork the repo and create a branch.
- Make your changes and submit a pull request.
- Ensure tests pass.

### Reporting Issues

- Use [GitHub Issues](https://github.com/tmweigand/PMMoTo/issues).
- Include details: steps to reproduce, expected vs. actual behavior, and system info.

### Support

- See the [docs](https://tmweigand.github.io/PMMoTo) and [examples](https://tmweigand.github.io/PMMoTo/examples).
- For questions, open a [discussion](https://github.com/tmweigand/PMMoTo/discussions) or file an [issue](https://github.com/tmweigand/PMMoTo/issues).

## License

This project is licensed under the MIT License. See [LICENSE](https://github.com/tmweigand/PMMoTo/blob/main/LICENSE) for details.

---

## Contact

For questions, issues, or contributions, please open an issue or pull request on [GitHub](https://github.com/tmweigand/PMMoTo).
