Metadata-Version: 2.5
Name: furka
Version: 0.0.1a1
Summary: Composable transition-state (TS) and minimum-energy-path (MEP) algorithms for computational chemistry.
Project-URL: Homepage, https://github.com/avaucher/furka
Project-URL: Repository, https://github.com/avaucher/furka
Project-URL: Issues, https://github.com/avaucher/furka/issues
Author: Alain C. Vaucher
License-Expression: MIT
License-File: LICENSE
Keywords: chemistry,intrinsic-reaction-coordinate,minimum-energy-path,potential-energy-surface,saddle-point,transition-state
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Chemistry
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: numpy>=1.24
Requires-Dist: scipy>=1.10
Provides-Extra: ase
Requires-Dist: ase>=3.22; extra == 'ase'
Provides-Extra: geometric
Requires-Dist: geometric>=1.0; extra == 'geometric'
Provides-Extra: sella
Requires-Dist: sella>=2.3; extra == 'sella'
Provides-Extra: viz
Requires-Dist: plotly>=5.18; extra == 'viz'
Description-Content-Type: text/markdown

# furka

**`furka`** is a modular Python library for locating chemical transition states (first-order saddle points) and minimum energy paths (MEPs) on molecular potential energy surfaces.

Named after the Swiss Alpine **Furka Pass** (a saddle connecting two valleys) and Latin *furca* (a two-pronged bracket), `furka` decouples double-ended path/bracket generation (Stage 1) from local saddle-point refinement (Stage 2) and post-TS MEP/IRC verification (Stage 3).

> **Status:** Early alpha (`0.0.1a1`). Full release accompanying upcoming publication.

## Installation

```bash
pip install furka
```

## Quick Example

```python
import numpy as np
from furka import kabsch_rmsd

coords_a = np.array([[0.0, 0.0, 0.0], [0.0, 0.0, 1.15], [0.0, 1.0, -0.4]])
coords_b = coords_a + np.array([2.5, -1.0, 0.5])  # rigid translation

rmsd = kabsch_rmsd(coords_a, coords_b)  # 0.0
```

## Development

```bash
uv sync
uv run pytest
uv run ruff check
uv run mypy src tests
```

## License

MIT License — see [LICENSE](LICENSE).
