Metadata-Version: 2.4
Name: posecheck-fast
Version: 0.1.13
Summary: Fast docking evaluation metrics: symmetry-corrected RMSD and PoseBusters filters
Keywords: docking,rmsd,posebusters,molecular-docking,benchmark
Author: Nikolenko
License-Expression: MIT
Requires-Dist: numpy>=1.21
Requires-Dist: pandas>=1.3,!=2.0.0
Requires-Dist: spyrmsd>=0.6
Requires-Dist: rdkit>=2022.3
Requires-Dist: torch>=1.10
Requires-Dist: posebusters>=0.2
Requires-Dist: tqdm>=4.60
Requires-Dist: pytest>=7.0 ; extra == 'dev'
Requires-Dist: pytest-cov>=4.0 ; extra == 'dev'
Requires-Dist: ruff>=0.4 ; extra == 'dev'
Requires-Python: >=3.10
Provides-Extra: dev
Description-Content-Type: text/markdown

# posecheck-fast

[![PyPI version](https://badge.fury.io/py/posecheck-fast.svg)](https://pypi.org/project/posecheck-fast/)
[![CI](https://github.com/LigandPro/posecheck-fast/actions/workflows/ci.yml/badge.svg)](https://github.com/LigandPro/posecheck-fast/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)

Fast docking evaluation metrics: symmetry-corrected RMSD and lightweight PoseBusters filters.

## Installation

```bash
uv pip install posecheck-fast
```

## Features

- **Symmetry-corrected RMSD** — accounts for molecular symmetry (benzene, carboxylates, etc.)
- **Fast PoseBusters filters** — 4 distance/clash checks optimized for throughput (auto-uses CUDA if available)

## Performance

Designed for throughput: **~0.03–0.12 ms/pose** on the fast filter set (CPU/GPU depending on batch size).

## Usage

```python
from posecheck_fast import compute_all_isomorphisms, get_symmetry_rmsd_with_isomorphisms

# Symmetry-corrected RMSD
isomorphisms = compute_all_isomorphisms(rdkit_mol)
rmsd = get_symmetry_rmsd_with_isomorphisms(true_coords, pred_coords, isomorphisms)
```

```python
from posecheck_fast import check_intermolecular_distance

# Fast filters: not_too_far_away, no_clashes, no_volume_clash, no_internal_clash
results = check_intermolecular_distance(
    mol_orig=rdkit_mol,
    pos_pred=pred_positions,      # (n_samples, n_atoms, 3)
    pos_cond=protein_positions,   # (n_protein_atoms, 3)
    atom_names_pred=lig_atoms,
    atom_names_cond=prot_atoms,
)
```

## Related

- [PoseBench](https://github.com/BioinfoMachineLearning/PoseBench) — full benchmark suite
- [PoseBusters](https://github.com/maabuu/posebusters) — full 27-test validation
- [spyrmsd](https://github.com/RMeli/spyrmsd) — symmetry RMSD algorithms

## License

MIT
