File size: 1,355 Bytes
072f65e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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