def test_to_from_json_str(self): ob_atom_00 = ob_atom.OBAtom() ob_atom_01 = ob_atom.OBAtom().from_json_str(ob_atom_00.to_json_str()) self.assertEqual(ob_atom_00.to_json_str(), ob_atom_01.to_json_str())
def test_two_fields(self): """ Test building multiple fields. Notes: - Test for bug in #159, where multiple fields coupling the same levels isn't working. """ json_path_0 = os.path.join(JSON_DIR, "field-square-0.json") json_path_1 = os.path.join(JSON_DIR, "field-square-1.json") f_0 = field.Field.from_json(json_path_0) f_1 = field.Field.from_json(json_path_1) f_dict_0 = f_0.get_json_dict() f_dict_1 = f_1.get_json_dict() oba = ob_atom.OBAtom(num_states=2) oba.build_fields(field_dicts=[f_dict_0, f_dict_1]) print(oba.fields[0]) print(oba.fields[1]) self.assertEqual(oba.fields[0].rabi_freq_t_func.__name__, 'square_0') self.assertEqual(oba.fields[1].rabi_freq_t_func.__name__, 'square_1') self.assertDictEqual( oba.get_field_args(), { "ampl_0": 2.5, "on_0": 0.2, "off_0": 0.3, "ampl_1": 2.5, "on_1": 0.6, "off_1": 0.7 })
def test_to_from_json_str_02(self): ob_atom_03 = ob_atom.OBAtom().from_json_str( self.ob_atom_02.to_json_str()) self.maxDiff = None self.assertEqual(self.ob_atom_02.to_json_str(), ob_atom_03.to_json_str())
def test_default(self): ob_atom_00 = ob_atom.OBAtom() with self.assertRaises(IndexError) as context: ob_atom_00.get_field_sum_coherence(0) self.assertTrue("list index out of range" in str(context.exception))
def test_init_default(self): """ Test Default Initialise """ ob_atom_00 = ob_atom.OBAtom() self.assertEqual(ob_atom_00.num_states, 1) self.assertEqual(ob_atom_00.energies, []) self.assertEqual(ob_atom_00.decays, []) self.assertEqual(ob_atom_00.fields, [])
def test_two_level_no_detuning(self): f_dict = {'coupled_levels': [[0, 1]]} oba = ob_atom.OBAtom(num_states=2, fields=[f_dict]) H_Delta_test = qu.Qobj(np.zeros([oba.num_states, oba.num_states])) np.testing.assert_array_almost_equal(oba.H_Delta.data.toarray(), H_Delta_test.data.toarray())
def test_single_field_multiple_upper_levels(self): DETUNING = 10 f_dict = {'coupled_levels': [[0, 2], [1, 2]], 'detuning': DETUNING} oba = ob_atom.OBAtom(num_states=3, fields=[f_dict]) H_Delta_test = -2 * np.pi * DETUNING * oba.sigma(2, 2) np.testing.assert_array_almost_equal(oba.H_Delta.data.toarray(), H_Delta_test.data.toarray())
def test_two_level_detuning(self): DETUNING = 10 f_dict = {'coupled_levels': [[0, 1]], 'detuning': DETUNING} oba = ob_atom.OBAtom(num_states=2, fields=[f_dict]) H_Delta_test = qu.Qobj([[0., 0.], [0., -2 * np.pi * DETUNING]]) np.testing.assert_array_almost_equal(oba.H_Delta.data.toarray(), H_Delta_test.data.toarray())
def test_to_from_json(self): filepath = os.path.join(JSON_DIR, "test_ob_atom_02.json") self.ob_atom_02.to_json(filepath) ob_atom_03 = ob_atom.OBAtom().from_json(filepath) os.remove(filepath) self.maxDiff = None self.assertEqual(self.ob_atom_02.to_json_str(), ob_atom_03.to_json_str())
def test_one_field(self): json_path = os.path.join(JSON_DIR, "field-square-0.json") f = field.Field.from_json(json_path) f_dict = f.get_json_dict() oba = ob_atom.OBAtom(num_states=2) oba.build_fields(field_dicts=[f_dict]) self.assertEqual(oba.fields[0].rabi_freq_t_func.__name__, 'square_0') self.assertDictEqual(oba.get_field_args(), { "ampl_0": 2.5, "on_0": 0.2, "off_0": 0.3 })
def test_from_json_file_02(self): json_path = os.path.join(JSON_DIR, "ob_atom_02.json") oba = ob_atom.OBAtom().from_json(json_path)
def test_trace_not_unity(self): with self.assertRaises(ValueError): ob_atom.OBAtom(num_states=2, initial_state=[2., 0.]) with self.assertRaises(ValueError): ob_atom.OBAtom(num_states=2, initial_state=[2., 2.])
def test_wrong_length(self): with self.assertRaises(ValueError): ob_atom.OBAtom(num_states=2, initial_state=[1.]) with self.assertRaises(ValueError): ob_atom.OBAtom(num_states=2, initial_state=[1., 0., 0.])
def test_set_initial_state(self): oba = ob_atom.OBAtom(num_states=2, initial_state=[1., 0.]) self.assertEqual(oba.initial_state, oba.sigma(0, 0)) oba = ob_atom.OBAtom(num_states=2, initial_state=[0., 1.]) self.assertEqual(oba.initial_state, oba.sigma(1, 1))
def test_default_initial_state(self): oba = ob_atom.OBAtom(num_states=2) self.assertEqual(oba.initial_state, oba.sigma(0, 0))
def build_atom(self, atom_dict): self.atom = ob_atom.OBAtom(**atom_dict) return self.atom