def test_t2star(self): """ Run the simulator with thermal relaxation noise. Then verify that the calculated T2star matches the t2 parameter. """ backend_result, xdata, qubits, t2_value, omega = t2star_circuit_execution() T2StarFitter(backend_result, xdata, qubits, fit_p0=[0.5, t2_value, omega, 0, 0.5], fit_bounds=([-0.5, 0, omega-0.02, -np.pi, -0.5], [1.5, t2_value*1.2, omega+0.02, np.pi, 1.5]))
def test_t2star(self): """ Run the simulator with thermal relaxation noise. Then verify that the calculated T2star matches the t2 parameter. """ # Setting parameters num_of_gates = num_of_gates = np.append( (np.linspace(10, 150, 30)).astype(int), (np.linspace(160, 450, 20)).astype(int)) gate_time = 0.1 qubits = [0] expected_t2 = 10 error = thermal_relaxation_error(np.inf, expected_t2, gate_time, 0.5) noise_model = NoiseModel() noise_model.add_all_qubit_quantum_error(error, 'id') backend = qiskit.Aer.get_backend('qasm_simulator') shots = 300 # Estimating T2* via an exponential function circs, xdata, _ = t2star_circuits(num_of_gates, gate_time, qubits) backend_result = qiskit.execute( circs, backend, shots=shots, backend_options={'max_parallel_experiments': 0}, noise_model=noise_model).result() initial_t2 = expected_t2 initial_a = 0.5 initial_c = 0.5 fit = T2Fitter(backend_result, xdata, qubits, fit_p0=[initial_a, initial_t2, initial_c], fit_bounds=([-0.5, 0, -0.5], [1.5, expected_t2*1.2, 1.5]), circbasename='t2star') self.assertAlmostEqual(fit.time(qid=0), expected_t2, delta=2, msg='Calculated T2 is inaccurate') self.assertTrue( fit.time_err(qid=0) < 2, 'Confidence in T2 calculation is too low: ' + str(fit.time_err)) # Estimate T2* via an oscilliator function circs_osc, xdata, omega = t2star_circuits(num_of_gates, gate_time, qubits, 5) backend_result = qiskit.execute( circs_osc, backend, shots=shots, backend_options={'max_parallel_experiments': 0}, noise_model=noise_model).result() initial_a = 0.5 initial_c = 0.5 initial_f = omega initial_phi = 0 fit = T2StarFitter(backend_result, xdata, qubits, fit_p0=[initial_a, initial_t2, initial_f, initial_phi, initial_c], fit_bounds=([-0.5, 0, omega-0.02, -np.pi, -0.5], [1.5, expected_t2*1.2, omega+0.02, np.pi, 1.5])) self.assertAlmostEqual(fit.time(qid=0), expected_t2, delta=2, msg='Calculated T2 is inaccurate') self.assertTrue( fit.time_err(qid=0) < 2, 'Confidence in T2 calculation is too low: ' + str(fit.time_err))
def test_t2star(self): """ Run the simulator with thermal relaxation noise. Then verify that the calculated T2star matches the t2 parameter. """ # Setting parameters num_of_gates = num_of_gates = np.append( (np.linspace(10, 150, 10)).astype(int), (np.linspace(160, 450, 5)).astype(int)) gate_time = 0.1 qubits = [0] expected_t2 = 10 error = thermal_relaxation_error(np.inf, expected_t2, gate_time, 0.5) noise_model = NoiseModel() noise_model.add_all_qubit_quantum_error(error, 'id') backend = qiskit.Aer.get_backend('qasm_simulator') shots = 200 # Estimating T2* via an exponential function circs, xdata, _ = t2star_circuits(num_of_gates, gate_time, qubits) backend_result = qiskit.execute(circs, backend, shots=shots, seed_simulator=SEED, backend_options={ 'max_parallel_experiments': 0 }, noise_model=noise_model, optimization_level=0).result() initial_t2 = expected_t2 initial_a = 0.5 initial_c = 0.5 T2Fitter(backend_result, xdata, qubits, fit_p0=[initial_a, initial_t2, initial_c], fit_bounds=([-0.5, 0, -0.5], [1.5, expected_t2 * 1.2, 1.5]), circbasename='t2star') # Estimate T2* via an oscilliator function circs_osc, xdata, omega = t2star_circuits(num_of_gates, gate_time, qubits, 5) backend_result = qiskit.execute(circs_osc, backend, shots=shots, seed_simulator=SEED, backend_options={ 'max_parallel_experiments': 0 }, noise_model=noise_model, optimization_level=0).result() initial_a = 0.5 initial_c = 0.5 initial_f = omega initial_phi = 0 T2StarFitter( backend_result, xdata, qubits, fit_p0=[initial_a, initial_t2, initial_f, initial_phi, initial_c], fit_bounds=([-0.5, 0, omega - 0.02, -np.pi, -0.5], [1.5, expected_t2 * 1.2, omega + 0.02, np.pi, 1.5]))