Coverage for cvpack/base_rmsd.py: 100%
15 statements
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-16 00:10 +0000
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-16 00:10 +0000
1"""
2.. class:: BaseRMSD
3 :platform: Linux, MacOS, Windows
4 :synopsis: Root-mean-square deviation of a group of atoms
6.. classauthor:: Charlles Abreu <craabreu@gmail.com>
8"""
10from __future__ import annotations
12import numpy as np
14from .collective_variable import CollectiveVariable
15from .units import MatrixQuantity, VectorQuantity, value_in_md_units
18class BaseRMSD(CollectiveVariable):
19 r"""
20 A base class for root-mean-square deviation (RMSD) collective variables.
21 """
23 def _getDefinedCoords(
24 self,
25 referencePositions: MatrixQuantity | dict[int, VectorQuantity],
26 group: list[int],
27 ) -> None:
28 if isinstance(referencePositions, dict):
29 positions = {
30 atom: value_in_md_units(coords)
31 for atom, coords in referencePositions.items()
32 }
33 else:
34 positions = value_in_md_units(referencePositions)
35 return {atom: [float(x) for x in positions[atom]] for atom in group}
37 def _getAllCoords(
38 self, definedCoords: dict[int, list[float]], numAtoms: int
39 ) -> np.ndarray:
40 all_coords = np.zeros((numAtoms, 3))
41 for atom, coords in definedCoords.items():
42 all_coords[atom] = coords
43 return all_coords