def test_init(self): # test with reference file analysis = BaderAnalysis( chgcar_filename=os.path.join(PymatgenTest.TEST_FILES_DIR, "CHGCAR.Fe3O4"), potcar_filename=os.path.join(PymatgenTest.TEST_FILES_DIR, "POTCAR.Fe3O4"), chgref_filename=os.path.join(PymatgenTest.TEST_FILES_DIR, "CHGCAR.Fe3O4_ref"), ) self.assertEqual(len(analysis.data), 14) self.assertAlmostEqual(analysis.data[0]["charge"], 6.6136782, 3) self.assertEqual(analysis.data[0]["charge"], analysis.get_charge(0)) self.assertAlmostEqual(analysis.nelectrons, 96) self.assertAlmostEqual(analysis.vacuum_charge, 0) ans = [ -1.3863218, -1.3812175, -1.3812175, -1.2615902, -1.3812175, -1.3862971, 1.021523, 1.024357, 1.021523, 1.021523, 1.021523, 1.021523, 1.021523, 1.024357, ] for i in range(14): self.assertAlmostEqual(ans[i], analysis.get_charge_transfer(i), 3) self.assertEqual(analysis.get_partial_charge(0), -analysis.get_charge_transfer(0)) s = analysis.get_oxidation_state_decorated_structure() self.assertAlmostEqual(s[0].specie.oxi_state, 1.3863218, 3) # make sure bader still runs without reference file analysis = BaderAnalysis(chgcar_filename=os.path.join( PymatgenTest.TEST_FILES_DIR, "CHGCAR.Fe3O4")) self.assertEqual(len(analysis.data), 14) # Test Cube file format parsing analysis = BaderAnalysis(cube_filename=os.path.join( PymatgenTest.TEST_FILES_DIR, "bader/elec.cube.gz")) self.assertEqual(len(analysis.data), 9)