Source code for schrodinger.application.phase.packages.mmp_compare_utils

"""
Provides comparison functionality for mmp unit tests.
"""

import pytest

from schrodinger.application.phase.compare_utils import FLOAT_TOL
from schrodinger.application.phase.packages import mmp2d


[docs]def assert_approx(item1, item2, tolerance): """ This is exactly like assert item1 == pytest.approx(item2) except also allows for item1 or item2 to be None. """ if item1 is None: assert item1 == item2 else: assert item1 == pytest.approx(item2, abs=tolerance)
[docs]def compare_mmp_transformations(trans1, trans2, tol=FLOAT_TOL): """ Compares two lists of MMP transformation dictionaries. """ assert len(trans1) == len(trans2) for dict1, dict2 in zip(trans1, trans2): assert len(dict1) == len(dict2) assert dict1[mmp2d.TRANS_KEYS.FROM_SMILES] == dict2[ mmp2d.TRANS_KEYS.FROM_SMILES] assert dict1[mmp2d.TRANS_KEYS.TO_SMILES] == dict2[ mmp2d.TRANS_KEYS.TO_SMILES] assert_approx(dict1[mmp2d.TRANS_KEYS.MIN], dict2[mmp2d.TRANS_KEYS.MIN], tolerance=tol) assert_approx(dict1[mmp2d.TRANS_KEYS.MAX], dict2[mmp2d.TRANS_KEYS.MAX], tolerance=tol) assert_approx(dict1[mmp2d.TRANS_KEYS.AVG], dict2[mmp2d.TRANS_KEYS.AVG], tolerance=tol) assert_approx(dict1[mmp2d.TRANS_KEYS.STD], dict2[mmp2d.TRANS_KEYS.STD], tolerance=tol) assert dict1[mmp2d.TRANS_KEYS.COUNT] == dict2[mmp2d.TRANS_KEYS.COUNT]