def __init__(self): super().__init__() modes = [ [605.3643675, 1, 1], [-605.3643675, -1, -1], [340.5950575, 2, 2], [-340.5950575, -2, -2], [-89.09086530649508, 2, 1, 1], [-15.590557244410897, 2, 2, 2], [1.6512647916666667, 1, 1, 1, 1], [5.03965375, 2, 2, 1, 1], [0.43840625000000005, 2, 2, 2, 2], ] self._driver_result = VibrationalStructureDriverResult() self._driver_result.num_modes = 2 sorted_integrals: dict[int, list[tuple[float, tuple[int, ...]]]] = { 1: [], 2: [], 3: [] } for coeff, *indices in modes: ints = [int(i) for i in indices] num_body = len(set(ints)) sorted_integrals[num_body].append((coeff, tuple(ints))) prop = VibrationalEnergy([ VibrationalIntegrals(num_body, ints) for num_body, ints in sorted_integrals.items() ]) prop.basis = 2 self._driver_result.add_property(prop) prop = OccupiedModals() prop.basis = 2 self._driver_result.add_property(prop)
def test_from_hdf5(self): """Test from_hdf5.""" with tempfile.TemporaryFile() as tmp_file: with h5py.File(tmp_file, "w") as file: self.prop.to_hdf5(file) with h5py.File(tmp_file, "r") as file: read_prop = OccupiedModals.from_hdf5(file["OccupiedModals"]) self.assertEqual(self.prop, read_prop)
class TestOccupiedModals(PropertyTest): """Test OccupiedModals Property""" def setUp(self): """Setup basis.""" super().setUp() basis = HarmonicBasis([2, 3, 4]) self.prop = OccupiedModals() self.prop.basis = basis def test_second_q_ops(self): """Test second_q_ops.""" ops = [self.prop.second_q_ops()["0"]] expected = [ [("NIIIIIIII", (1 + 0j)), ("INIIIIIII", (1 + 0j))], [("IINIIIIII", (1 + 0j)), ("IIINIIIII", (1 + 0j)), ("IIIINIIII", (1 + 0j))], [ ("IIIIINIII", (1 + 0j)), ("IIIIIINII", (1 + 0j)), ("IIIIIIINI", (1 + 0j)), ("IIIIIIIIN", (1 + 0j)), ], ] for op, expected_op_list in zip(ops, expected): self.assertEqual(op.to_list(), expected_op_list) def test_to_hdf5(self): """Test to_hdf5.""" with tempfile.TemporaryFile() as tmp_file: with h5py.File(tmp_file, "w") as file: self.prop.to_hdf5(file) def test_from_hdf5(self): """Test from_hdf5.""" with tempfile.TemporaryFile() as tmp_file: with h5py.File(tmp_file, "w") as file: self.prop.to_hdf5(file) with h5py.File(tmp_file, "r") as file: read_prop = OccupiedModals.from_hdf5(file["OccupiedModals"]) self.assertEqual(self.prop, read_prop)
def run(self) -> VibrationalStructureDriverResult: if self._logfile is not None: glr = GaussianLogResult(self._logfile) else: glr = GaussianLogDriver(jcf=self._jcf).run() driver_result = VibrationalStructureDriverResult() driver_result.add_property(glr.get_vibrational_energy(self._normalize)) driver_result.num_modes = len(glr.a_to_h_numbering) driver_result.add_property(OccupiedModals()) return driver_result
def test_particle_number(self) -> None: """Tests the ParticleNumber property.""" container = ElectronicPropertiesContainer() with self.subTest("initially None"): self.assertIsNone(container.particle_number) with self.subTest("wrong setting type"): with self.assertRaises(TypeError): container.particle_number = OccupiedModals() # type: ignore[assignment] with self.subTest("successful setting"): container.particle_number = ParticleNumber(1, 1) self.assertIn(ParticleNumber, container) with self.subTest("removal via None setting"): container.particle_number = None self.assertNotIn(ParticleNumber, container)
def test_magnetization(self) -> None: """Tests the Magnetization property.""" container = ElectronicPropertiesContainer() with self.subTest("initially None"): self.assertIsNone(container.magnetization) with self.subTest("wrong setting type"): with self.assertRaises(TypeError): container.magnetization = OccupiedModals() # type: ignore[assignment] with self.subTest("successful setting"): container.magnetization = Magnetization(1) self.assertIn(Magnetization, container) with self.subTest("removal via None setting"): container.magnetization = None self.assertNotIn(Magnetization, container)
def test_electronic_dipole_moment(self) -> None: """Tests the ElectronicDipoleMoment property.""" container = ElectronicPropertiesContainer() with self.subTest("initially None"): self.assertIsNone(container.electronic_dipole_moment) with self.subTest("wrong setting type"): with self.assertRaises(TypeError): container.electronic_dipole_moment = OccupiedModals() # type: ignore[assignment] with self.subTest("successful setting"): container.electronic_dipole_moment = ElectronicDipoleMoment() self.assertIn(ElectronicDipoleMoment, container) with self.subTest("removal via None setting"): container.electronic_dipole_moment = None self.assertNotIn(ElectronicDipoleMoment, container)
def test_angular_momentum(self) -> None: """Tests the AngularMomentum property.""" container = ElectronicPropertiesContainer() with self.subTest("initially None"): self.assertIsNone(container.angular_momentum) with self.subTest("wrong setting type"): with self.assertRaises(TypeError): container.angular_momentum = OccupiedModals() # type: ignore[assignment] with self.subTest("successful setting"): container.angular_momentum = AngularMomentum(1) self.assertIn(AngularMomentum, container) with self.subTest("removal via None setting"): container.angular_momentum = None self.assertNotIn(AngularMomentum, container)
def test_occupied_modals(self) -> None: """Tests the OccupiedModals property.""" container = VibrationalPropertiesContainer() with self.subTest("initially None"): self.assertIsNone(container.occupied_modals) with self.subTest("wrong setting type"): with self.assertRaises(TypeError): container.occupied_modals = ElectronicDipoleMoment( ) # type: ignore[assignment] with self.subTest("successful setting"): container.occupied_modals = OccupiedModals() self.assertIn(OccupiedModals, container) with self.subTest("removal via None setting"): container.occupied_modals = None self.assertNotIn(OccupiedModals, container)
def setUp(self): """Setup basis.""" super().setUp() basis = HarmonicBasis([2, 3, 4]) self.prop = OccupiedModals() self.prop.basis = basis
def setUp(self) -> None: super().setUp() self.property = OccupiedModals()
def test_custom_property(self) -> None: """Tests support for custom property objects.""" container = ElectronicPropertiesContainer() container.add(OccupiedModals()) self.assertIn(OccupiedModals, container)