mlip-arena / tests /test_mof.py
Yuan (Cyrus) Chiang
Add Widom insertion (#34)
072f65e
import sys
import pytest
from ase.build import molecule
from prefect.testing.utilities import prefect_test_harness
from mlip_arena.models import MLIPEnum
from mlip_arena.tasks.mof.flow import widom_insertion
from mlip_arena.tasks.mof.input import get_atoms_from_db
from mlip_arena.tasks.utils import get_calculator
@pytest.fixture(autouse=True, scope="session")
def prefect_test_fixture():
with prefect_test_harness():
yield
@pytest.mark.skipif(
sys.version_info[:2] != (3, 11),
reason="avoid prefect race condition on concurrent tasks",
)
@pytest.mark.parametrize("model", [MLIPEnum["MACE-MP(M)"]])
def test_widom_insertion(model: MLIPEnum):
# with prefect_test_harness():
for atoms in get_atoms_from_db("mofs.db"):
result = widom_insertion.with_options(
refresh_cache=True,
)(
structure=atoms,
gas=molecule("CO2"),
calculator=get_calculator(
model,
dispersion=True,
),
num_insertions=10,
fold=2,
)
assert isinstance(result, dict)
assert isinstance(result["henry_coefficient"][0], float)
assert isinstance(result["averaged_interaction_energy"][0], float)
assert isinstance(result["heat_of_adsorption"][0], float)
break # only test one MOF