Python RMSD tool with symmetry correction.
Project description
sPyRMSD
Python tool for symmetry-corrected RMSD calculations.
If you find spyrmsd
useful, please consider citing the following paper:
@article{spyrmsd2020,
Author = {Meli, Rocco and Biggin, Philip C.},
Journal = {Journal of Cheminformatics},
Number = {1},
Pages = {49},
Title = {spyrmsd: symmetry-corrected RMSD calculations in Python},
Volume = {12},
Year = {2020}
}
Installation
spyrmsd
is available on PyPI and conda-forge and can be easily installed from source. See Dependencies for a description of all the dependencies.
[!NOTE]
spyrmsd
will install rustworkx (multi-platform) when usingpip
orconda
. You can install other backends manually.
[!WARNING] If
spyrmsd
is used as a standalone tool, it is required to install either RDKit or Open Babel. Neither is automatically installed withpip
norconda
.
PyPI
pip install spyrmsd
conda
conda install spyrmsd -c conda-forge
GitHub
git clone https://github.com/RMeli/spyrmsd.git
cd spyrmsd
pip install .
Dependencies
spyrmsd
can be used both as a module or as a standalone tool.
Module
The following packages are required to use spyrmsd
as a module:
One of the following graph libraries is required:
[!NOTE]
spyrmsd
uses the following priority when multiple graph libraries are present: graph-tool, rustworkx, NetworkX. This order might change. Useset_backend
to ensure you are always using the same backend, if needed.
Standalone Tool
Additionally, one of the following packages is required to use spyrmsd
as a standalone tool:
Usage
Standalone Tool
spyrmsd
provides a convenient CLI tool. See spyrmsd
's --help
for the usage:
python -m spyrmsd -h
Module
from spyrmsd import rmsd
RMSD
The function rmsd.rmsd
computes RMSD without symmetry correction. The atoms are expected to be in the same order for both molecules being compared (no atom matching is performed).
def rmsd(
coords1: np.ndarray, # Coordinates of molecule 1
coords2: np.ndarray, # Coordinates of molecule 2
aprops1: np.ndarray, # Atomic properties of molecule 1
aprops2: np.ndarray, # Atomic properties of molecule 2
center: bool = False, # Flag to center molecules at origin
minimize: bool = False, # Flag to compute minimum RMSD
atol: float = 1e-9, # Numerical tolerance for QCP method
)
[!NOTE] Atomic properties (
aprops
) can be any Python object when using NetworkX and rustworkx, or integers, floats, or strings when using graph-tool.
Symmetry-Corrected RMSD
The function rmsd.symmrmsd
computes symmetry-corrected RMSD using molecular graph isomorphisms. Symmetry correction requires molecular adjacency matrices describing the connectivity but needs not the atoms to be in the same order.
Atom matching is performed according to the molecular graph. This function should also be used when atoms in the molecules being compared are not in the same order (even if there is not symmetry to be accounted for).
def symmrmsd(
coordsref: np.ndarray, # Reference coordinated
coords: Union[np.ndarray, List[np.ndarray]], # Coordinates (one set or multiple sets)
apropsref: np.ndarray, # Reference atomic properties
aprops: np.ndarray, # Atomic properties
amref: np.ndarray, # Reference adjacency matrix
am: np.ndarray, # Adjacency matrix
center: bool = False, # Flag to center molecules at origin
minimize: bool = False, # Flag to compute minimum RMSD
cache: bool = True, # Cache graph isomorphisms
atol: float = 1e-9, # Numerical tolerance for QCP method
)
[!NOTE] Atomic properties (
aprops
) can be any Python object when using NetworkX and rustworkx, or integers, floats, or strings when using graph-tool.
Select Backend
spyrmsd
supports the following graph libraries for the calculation of graph isomorphisms:
You can check which backend is being used with
spyrmsd.get_backend()
You can also manually select your preferred backend with
spyrmsd.set_backend("networkx")
# spyrmsd uses NetworkX
spyrmsd.set_backend("graph_tool")
# spyrmsd uses graph_tool
The available backends (which depend on the installed dependencies) are stored in spyrmsd.available_backends
.
Development
To ensure code quality and consistency the following tools are used during development:
Pre-commit git
hooks can be installed with pre-commit.
Copyright
Copyright (c) 2019-2024, Rocco Meli.
References
References are tracked with duecredit. Run the credits.sh
script in order to print up-to-date references.
Acknowledgements
Project based on the Computational Molecular Science Python Cookiecutter version 1.1
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file spyrmsd-0.8.0.tar.gz
.
File metadata
- Download URL: spyrmsd-0.8.0.tar.gz
- Upload date:
- Size: 219.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.32.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 401681c5338c06215321c7c3960ca28f22b575118478b7dec6f28b8823b58924 |
|
MD5 | b94d2b2a75e93bf9472276f18b716234 |
|
BLAKE2b-256 | 3a7d203574e7ffc3393cd3c51b9402868b7096570f5007259ac26a0bf125575f |
File details
Details for the file spyrmsd-0.8.0-py3-none-any.whl
.
File metadata
- Download URL: spyrmsd-0.8.0-py3-none-any.whl
- Upload date:
- Size: 28.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.32.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4e1281bfa3d1c96936b061835dcee70dc089dea735680d6b48b59e38f83c0d52 |
|
MD5 | b374f82db25fd148635220d4a47f9ac2 |
|
BLAKE2b-256 | e838cbcb63ff36c917127a58ccc18468e1b33bf9b9313996156790f99d7d86e1 |