Metadata-Version: 2.1
Name: munkres-rmsd
Version: 0.0.1.post2.dev0
Summary: Proper RMSD calculation between molecules using the Kuhn-Munkres Hungarian algorithm.
Home-page: https://github.com/OlivierBeq/RMSD
Author: Olivier J.M. Béquignon
Author-email: olivier.bequignon.maintainer@gmail.com
Maintainer: Olivier J.M. Béquignon
Maintainer-email: olivier.bequignon.maintainer@gmail.com
License: MIT
Keywords: RMSD,docking poses,atom mapping
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.6
Description-Content-Type: text/markdown
License-File: LICENSE.md
Requires-Dist: numpy
Requires-Dist: scipy
Requires-Dist: rdkit
Provides-Extra: docs
Requires-Dist: sphinx ; extra == 'docs'
Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
Requires-Dist: sphinx-autodoc-typehints ; extra == 'docs'
Provides-Extra: testing
Requires-Dist: pytest ; extra == 'testing'

# RMSD

Determining the Root Mean Square Deviation (RMSD) between the Maximum Common Substructures (MCS) of two molecules.

The Kuhn-Munkres Hungarian algorithm allows for a fast match of atoms based on:
- atomic symbol
- Sybyl atom types
- pharmacophoric types (i.e. H-bond donors and acceptors or charges)

# Installation

```bash
pip install munkres-rmsd
```

# Example

```python
from munkres_rmsd import CalcLigRMSD, AtomType
from munkres_rmsd.RMSD import get_example_molecules

# First, load 3D poses of molecules 
mol1, mol2 = get_example_molecules()

# Then compute the RMSD of the best atomic match
rmsd = CalcLigRMSD(mol1, mol2)

print(rmsd) # 10.76150...
```

Let's use Sybyl atom types to match atoms between the two molecules instead of the default, using atomic elements.

```python
# Then compute the RMSD of the best atomic match
rmsd = CalcLigRMSD(mol1, mol2, AtomType.Sybyl)

print(rmsd) # 11.59752...
```

Should you prefer pharmacophore types (i.e. H-bond donors & acceptors, charges and others):

```python
# Then compute the RMSD of the best atomic match
rmsd = CalcLigRMSD(mol1, mol2, AtomType.Pharmacophore)

print(rmsd) # 9.49120...
```
