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]