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)
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")
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)