def test_t1_parallel(self): """ Test parallel experiments of T1 using a simulator. """ t1 = [25, 15] delays = list(range(1, 40, 3)) exp0 = T1(0, delays) exp2 = T1(2, delays) par_exp = ParallelExperiment([exp0, exp2]) res = par_exp.run(T1Backend([t1[0], None, t1[1]])) self.assertExperimentDone(res) for i in range(2): sub_res = res.child_data(i).analysis_results("T1") self.assertEqual(sub_res.quality, "good") self.assertAlmostEqual(sub_res.value.n, t1[i], delta=3) res.service = FakeService() res.save() loaded_data = ExperimentData.load(res.experiment_id, res.service) for i in range(2): sub_res = res.child_data(i).analysis_results("T1") sub_loaded = loaded_data.child_data(i).analysis_results("T1") self.assertEqual(repr(sub_res), repr(sub_loaded))
def test_t1_end2end(self): """ Test T1 experiment using a simulator. """ t1 = 25e-6 backend = T1Backend( [t1], initial_prob1=[0.02], readout0to1=[0.02], readout1to0=[0.02], ) delays = np.arange(1e-6, 40e-6, 3e-6) exp = T1(0, delays) exp.analysis.set_options(p0={"amp": 1, "tau": t1, "base": 0}) exp_data = exp.run(backend, shots=10000) self.assertExperimentDone(exp_data) res = exp_data.analysis_results("T1") self.assertRoundTripSerializable(res.value, check_func=self.ufloat_equiv) self.assertEqual(res.quality, "good") self.assertAlmostEqual(res.value.n, t1, delta=3) self.assertEqual(res.extra["unit"], "s") exp_data.service = FakeService() exp_data.save() loaded_data = ExperimentData.load(exp_data.experiment_id, exp_data.service) exp_res = exp_data.analysis_results() load_res = loaded_data.analysis_results() repr1 = sorted([repr(res) for res in exp_res]) repr2 = sorted([repr(res) for res in load_res]) self.assertEqual(repr1, repr2)
def test_t1_end2end(self): """ Test T1 experiment using a simulator. """ t1 = 25e-6 backend = T1Backend( [t1], initial_prob1=[0.02], readout0to1=[0.02], readout1to0=[0.02], ) delays = np.arange(1e-6, 40e-6, 3e-6) exp = T1(0, delays) exp.analysis.set_options(p0={"amp": 1, "tau": t1, "base": 0}) exp_data = exp.run(backend, shots=10000) res = exp_data.analysis_results("T1") fitval = res.value self.assertEqual(res.quality, "good") self.assertAlmostEqual(fitval.value, t1, delta=3) self.assertEqual(fitval.unit, "s") exp_data.service = FakeService() exp_data.save() loaded_data = ExperimentData.load(exp_data.experiment_id, exp_data.service) self.assertEqual(repr(exp_data.analysis_results("T1")), repr(loaded_data.analysis_results("T1")))
def test_composite_save_metadata(self): """ Verify that saving metadata and loading restores the original composite experiment data object """ self.rootdata.service = FakeService() self.rootdata.save_metadata() loaded_data = ExperimentData.load(self.rootdata.experiment_id, self.rootdata.service) self.check_if_equal(loaded_data, self.rootdata, is_a_copy=False)
def test_database_save_and_load(self): """Tests saving and loading the mitigator from the DB""" qubits = [0, 1] backend = AerSimulator.from_backend(FakeParis()) exp = LocalReadoutError(qubits) exp_data = exp.run(backend).block_for_results() exp_data.service = FakeService() exp_data.save() loaded_data = ExperimentData.load(exp_data.experiment_id, exp_data.service) exp_res = exp_data.analysis_results() load_res = loaded_data.analysis_results() exp_matrix = exp_res[0].value.assignment_matrix() load_matrix = load_res[0].value.assignment_matrix() self.assertTrue(matrix_equal(exp_matrix, load_matrix))