Metadata-Version: 2.4
Name: pmmoto
Version: 0.1.4
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++ for high performance on 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 where image size and resolution are not predetermined.

---

## Website

https://tmweigand.github.io/PMMoTo/index.html

## Installation

**PMMoTo requires an MPI installation** (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

We welcome contributions and community feedback to improve PMMoTo.

### Contributing

- Fork the repo and create a branch.
- Make your changes and submit a pull request.
- Follow PEP8 and ensure tests pass.
- For major changes, open an issue first.

### 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.

Please be respectful and constructive.

## License

This project is licensed under the MIT License. See [LICENSE](LICENSE) for details.

---

## Contact

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