def test_qv_failure_insufficient_confidence(self): """ Test that the quantum volume is unsuccessful when: there are more than 100 trials, the heavy output probability mean is more than 2/3 but the confidence is not high enough """ dir_name = os.path.dirname(os.path.abspath(__file__)) insufficient_confidence_json = "qv_data_moderate_noise_100_trials.json" with open(os.path.join(dir_name, insufficient_confidence_json), "r") as json_file: insufficient_confidence_data = json.load(json_file, cls=ExperimentDecoder) num_of_qubits = 4 backend = Aer.get_backend("aer_simulator") qv_exp = QuantumVolume(num_of_qubits, seed=SEED) exp_data = ExperimentData(experiment=qv_exp, backend=backend) exp_data.add_data(insufficient_confidence_data) qv_exp.run_analysis(exp_data) qv_result = exp_data.analysis_results(1) self.assertTrue( qv_result.extra["success"] is False and qv_result.value == 1, "quantum volume is successful with insufficient confidence", )
def test_qv_failure_insufficient_trials(self): """ Test that the quantum volume is unsuccessful when: there is less than 100 trials """ dir_name = os.path.dirname(os.path.abspath(__file__)) insufficient_trials_json_file = "qv_data_70_trials.json" with open(os.path.join(dir_name, insufficient_trials_json_file), "r") as json_file: insufficient_trials_data = json.load(json_file, cls=ExperimentDecoder) num_of_qubits = 3 backend = Aer.get_backend("aer_simulator") qv_exp = QuantumVolume(num_of_qubits, seed=SEED) exp_data = ExperimentData(experiment=qv_exp, backend=backend) exp_data.add_data(insufficient_trials_data) qv_exp.run_analysis(exp_data) qv_result = exp_data.analysis_results(1) self.assertTrue( qv_result.extra["success"] is False and qv_result.value == 1, "quantum volume is successful with less than 100 trials", )
def test_qv_success(self): """ Test a successful run of quantum volume. Compare the results to a pre-run experiment """ dir_name = os.path.dirname(os.path.abspath(__file__)) successful_json_file = "qv_data_moderate_noise_300_trials.json" with open(os.path.join(dir_name, successful_json_file), "r") as json_file: successful_data = json.load(json_file, cls=ExperimentDecoder) num_of_qubits = 4 backend = Aer.get_backend("aer_simulator") qv_exp = QuantumVolume(num_of_qubits, seed=SEED) exp_data = ExperimentData(experiment=qv_exp, backend=backend) exp_data.add_data(successful_data) qv_exp.run_analysis(exp_data) results_json_file = "qv_result_moderate_noise_300_trials.json" with open(os.path.join(dir_name, results_json_file), "r") as json_file: successful_results = json.load(json_file, cls=ExperimentDecoder) results = exp_data.analysis_results() for result, reference in zip(results, successful_results): self.assertEqual( result.value, reference["value"], "result value is not the same as precalculated analysis", ) self.assertEqual( result.name, reference["name"], "result name is not the same as precalculated analysis", ) for key, value in reference["extra"].items(): if isinstance(value, float): self.assertAlmostEqual( result.extra[key], value, msg="result " + str(key) + " is not the same as the " "pre-calculated analysis", ) else: self.assertTrue( result.extra[key] == value, "result " + str(key) + " is not the same as the " "pre-calculated analysis", )