Exemple #1
0
def test_env_methods(structure, mask, cutoff, result):
    if mask is True:
        mask = generate_mask(cutoff)
    else:
        mask = None

    env_test = AtomicEnvironment(structure,
                                 atom=0,
                                 cutoffs=cutoff,
                                 cutoffs_mask=mask)

    assert str(env_test) == \
        f'Atomic Env. of Type 1 surrounded by {result[0]} atoms' \
        ' of Types [1, 2, 3]'

    the_dict = env_test.as_dict()
    assert isinstance(the_dict, dict)
    for key in ['positions', 'cell', 'atom', 'cutoffs', 'species']:
        assert key in the_dict.keys()

    remade_env = AtomicEnvironment.from_dict(the_dict)
    assert isinstance(remade_env, AtomicEnvironment)

    assert np.array_equal(remade_env.bond_array_2, env_test.bond_array_2)
    if len(cutoff) > 1:
        assert np.array_equal(remade_env.bond_array_3, env_test.bond_array_3)
    if len(cutoff) > 2:
        assert np.array_equal(remade_env.q_array, env_test.q_array)
Exemple #2
0
def test_env_methods(structure, mask, cutoff, result):
    if mask is True:
        mask = generate_mask(cutoff)
    else:
        mask = None

    structure = deepcopy(structure)
    structure.forces = np.random.random(size=(len(structure), 3))

    env_test = AtomicEnvironment(structure,
                                 atom=0,
                                 cutoffs=cutoff,
                                 cutoffs_mask=mask)

    assert np.array_equal(structure.forces[0], env_test.force)

    assert (
        str(env_test) ==
        f"Atomic Env. of Type 1 surrounded by {result[0]} atoms of Types [1, 2, 3]"
    )

    the_dict = env_test.as_dict()
    assert isinstance(the_dict, dict)
    the_str = env_test.as_str()
    assert dumps(the_dict, cls=NumpyEncoder) == the_str
    for key in ["positions", "cell", "atom", "cutoffs", "species"]:
        assert key in the_dict.keys()

    # This saves a few seconds, the masked envs take longer to read/write
    if not mask:
        with open("test_environment.json", "w") as f:
            f.write(env_test.as_str())
        remade_env = AtomicEnvironment.from_file("test_environment.json")
    else:
        remade_env = AtomicEnvironment.from_dict(the_dict)

    assert isinstance(remade_env, AtomicEnvironment)

    assert np.array_equal(remade_env.bond_array_2, env_test.bond_array_2)
    if len(cutoff) > 1:
        assert np.array_equal(remade_env.bond_array_3, env_test.bond_array_3)
    if len(cutoff) > 2:
        assert np.array_equal(remade_env.q_array, env_test.q_array)

    if not mask:
        remove("test_environment.json")
Exemple #3
0
def test_env_methods(cutoff):
    cell = np.eye(3)
    species = [1, 2, 3]
    positions = np.array([[0, 0, 0], [0.5, 0.5, 0.5], [0.1, 0.1, 0.1]])
    struc_test = Structure(cell, species, positions)
    env_test = AtomicEnvironment(struc_test, 0, np.array([1, 1]))
    assert str(env_test) == 'Atomic Env. of Type 1 surrounded by 12 atoms' \
                            ' of Types [2, 3]'

    the_dict = env_test.as_dict()
    assert isinstance(the_dict, dict)
    for key in ['positions', 'cell', 'atom', 'cutoffs', 'species']:
        assert key in the_dict.keys()

    remade_env = AtomicEnvironment.from_dict(the_dict)
    assert isinstance(remade_env, AtomicEnvironment)

    assert np.array_equal(remade_env.bond_array_2, env_test.bond_array_2)
    assert np.array_equal(remade_env.bond_array_3, env_test.bond_array_3)
    assert np.array_equal(remade_env.bond_array_mb, env_test.bond_array_mb)