def test_non_existing_file(self): with self.assertRaises(IOError): bad_crystal_reader = AbinsModules.LoadCRYSTAL( input_dft_filename="NonExistingFile.txt") bad_crystal_reader.read_phonon_file() with self.assertRaises(ValueError): # noinspection PyUnusedLocal poor_crystal_reader = AbinsModules.LoadCRYSTAL( input_dft_filename=1)
def _read_dft(self, filename=None): """ Reads data from .phonon file. :param filename: name of file with phonon data (name + phonon) :return: phonon data """ # 1) Read data crystal_reader = AbinsModules.LoadCRYSTAL( input_dft_filename=AbinsModules.AbinsTestHelpers.find_file( filename=filename + ".out")) data = self._get_reader_data(crystal_reader=crystal_reader) # test validData method self.assertEqual(True, crystal_reader._clerk._valid_hash()) return data
def _check_loader_data(self, correct_data=None, input_dft_filename=None): loader = AbinsModules.LoadCRYSTAL( input_dft_filename=AbinsModules.AbinsTestHelpers.find_file( input_dft_filename + ".out")) loaded_data = loader.load_formatted_data().extract() # k points correct_items = correct_data["datasets"]["k_points_data"] items = loaded_data["k_points_data"] for k in correct_items["frequencies"]: self.assertEqual( True, np.allclose(correct_items["frequencies"][k], items["frequencies"][k])) self.assertEqual( True, np.allclose(correct_items["atomic_displacements"][k], items["atomic_displacements"][k])) self.assertEqual( True, np.allclose(correct_items["k_vectors"][k], items["k_vectors"][k])) self.assertEqual(correct_items["weights"][k], items["weights"][k]) # atoms correct_atoms = correct_data["datasets"]["atoms_data"] atoms = loaded_data["atoms_data"] for item in range(len(correct_atoms)): self.assertEqual(correct_atoms["atom_%s" % item]["sort"], atoms["atom_%s" % item]["sort"]) self.assertAlmostEqual(correct_atoms["atom_%s" % item]["mass"], atoms["atom_%s" % item]["mass"], delta=0.00001) self.assertEqual(correct_atoms["atom_%s" % item]["symbol"], atoms["atom_%s" % item]["symbol"]) self.assertEqual( True, np.allclose( np.array(correct_atoms["atom_%s" % item]["fract_coord"]), atoms["atom_%s" % item]["fract_coord"]))