diff --git a/docs/conf.py b/docs/conf.py index 60d3204f..18eb2537 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -145,13 +145,9 @@ html_theme_options = { ], "accent_color": "cantina-purple", "navigation_with_keys": False, - "navbar_end": ["navbar-icon-links"], # TODO: add "theme-switcher" to add back dark mode toggle } html_logo = "_static/OFE-color-icon.svg" html_favicon = '_static/OFE-color-icon.svg' -html_context = { - "default_mode": "light" -} # temporary fix, see https://github.com/pydata/pydata-sphinx-theme/issues/1662 html_sidebars = { "installation": [], diff --git a/docs/environment.yaml b/docs/environment.yaml index 8b9aa46a..b0bdf5dc 100644 --- a/docs/environment.yaml +++ b/docs/environment.yaml @@ -27,7 +27,7 @@ dependencies: - tqdm - pip: - git+https://github.com/OpenFreeEnergy/gufe@main - - git+https://github.com/OpenFreeEnergy/ofe-sphinx-theme@v0.3.0 + - git+https://github.com/OpenFreeEnergy/ofe-sphinx-theme@v0.3.1 # pip install these so that conda-forge gufe doesn't pull in ambertools and cause a memory error - git+https://github.com/OpenFreeEnergy/kartograf@main - git+https://github.com/OpenFreeEnergy/konnektor@main diff --git a/openfe/protocols/openmm_septop/equil_septop_method.py b/openfe/protocols/openmm_septop/equil_septop_method.py index 66bcba92..30ef4bbb 100644 --- a/openfe/protocols/openmm_septop/equil_septop_method.py +++ b/openfe/protocols/openmm_septop/equil_septop_method.py @@ -710,7 +710,7 @@ class SepTopProtocolResult(gufe.ProtocolResult): return production_lengths - def restraint_geometries(self) -> tuple[list[dict[str, Any]], list[dict[str, Any]]]: + def restraint_geometries(self) -> tuple[list[BoreschRestraintGeometry], list[BoreschRestraintGeometry]]: """ Get a list of the restraint geometries for the complex simulations. These define the atoms that have @@ -726,11 +726,15 @@ class SepTopProtocolResult(gufe.ProtocolResult): in the system that are involved in the restraint of ligand B. """ geometry_A = [ - pus[0].outputs["restraint_geometry_A"] + BoreschRestraintGeometry.model_validate( + pus[0].outputs["restraint_geometry_A"] + ) for pus in self.data["complex_setup"].values() ] geometry_B = [ - pus[0].outputs["restraint_geometry_B"] + BoreschRestraintGeometry.model_validate( + pus[0].outputs["restraint_geometry_B"] + ) for pus in self.data["complex_setup"].values() ] diff --git a/openfe/tests/protocols/openmm_septop/test_septop_protocol.py b/openfe/tests/protocols/openmm_septop/test_septop_protocol.py index 4d71f301..f0b91e84 100644 --- a/openfe/tests/protocols/openmm_septop/test_septop_protocol.py +++ b/openfe/tests/protocols/openmm_septop/test_septop_protocol.py @@ -30,6 +30,7 @@ from openfe.protocols.openmm_septop.equil_septop_method import ( ) from openfe.protocols.openmm_septop.utils import deserialize from openfe.protocols.openmm_utils import system_validation +from openfe.protocols.restraint_utils.geometry.boresch import BoreschRestraintGeometry from openfe.tests.protocols.conftest import compute_energy from openff.units import unit as offunit from openff.units.openmm import ensure_quantity, from_openmm @@ -1434,7 +1435,12 @@ class TestProtocolResult: assert isinstance(geom, tuple) assert len(geom) == 2 assert isinstance(geom[0], list) - assert isinstance(geom[0][0], dict) - assert list(geom[0][0].keys()) == [ - 'guest_atoms', 'host_atoms', 'r_aA0', 'theta_A0', 'theta_B0', 'phi_A0', 'phi_B0', 'phi_C0', - ] + assert isinstance(geom[0][0], BoreschRestraintGeometry) + assert geom[0][0].guest_atoms == [1779, 1778, 1777] + assert geom[0][0].host_atoms == [802, 801, 800] + assert pytest.approx(geom[0][0].r_aA0) == 0.774170 * offunit.nanometer + assert pytest.approx(geom[0][0].theta_A0) == 1.793181 * offunit.radian + assert pytest.approx(geom[0][0].theta_B0) == 1.501008 * offunit.radian + assert pytest.approx(geom[0][0].phi_A0) == 0.939174 * offunit.radian + assert pytest.approx(geom[0][0].phi_B0) == -1.504071 * offunit.radian + assert pytest.approx(geom[0][0].phi_C0) == -0.745093 * offunit.radian