def setUp(self): """ Setup internal variables and a fake simulation. Aer is used to get the structure of the qiskit.Result. The IQ data is generated using gaussian random number generators. """ self.shots = 52 self.qubits = [0, 1] meas_cal, _ = circuits.tensored_meas_cal([[0], [1]]) backend = Aer.get_backend('qasm_simulator') job = qiskit.execute(meas_cal, backend=backend, shots=self.shots, meas_level=1) self.cal_results = job.result() i0, q0, i1, q1 = 0., -1., 0., 1. ground = utils.create_shots(i0, q0, 0.1, 0.1, self.shots, self.qubits) excited = utils.create_shots(i1, q1, 0.1, 0.1, self.shots, self.qubits) self.cal_results.results[0].meas_level = 1 self.cal_results.results[1].meas_level = 1 self.cal_results.results[0].data = ExperimentResultData(memory=ground) self.cal_results.results[1].data = ExperimentResultData(memory=excited)
def test_apply(self): """ Set-up a discriminator based on simulated data, train it and then discriminate the calibration data. """ meas_cal, _ = circuits.tensored_meas_cal([[0], [1]]) backend = Aer.get_backend('qasm_simulator') job = qiskit.execute(meas_cal, backend=backend, shots=self.shots, meas_level=1) cal_results = job.result() i0, q0, i1, q1 = 0., -1., 0., 1. ground = utils.create_shots(i0, q0, 0.1, 0.1, self.shots, self.qubits) excited = utils.create_shots(i1, q1, 0.1, 0.1, self.shots, self.qubits) cal_results.results[0].meas_level = 1 cal_results.results[1].meas_level = 1 cal_results.results[0].data = ExperimentResultData(memory=ground) cal_results.results[1].data = ExperimentResultData(memory=excited) discriminator = LinearIQDiscriminator(cal_results, self.qubits, ['00', '11']) d_filter = DiscriminationFilter(discriminator) self.assertEqual(cal_results.results[0].meas_level, 1) new_results = d_filter.apply(cal_results) self.assertEqual(new_results.results[0].meas_level, 2) counts_00 = new_results.results[0].data.counts.to_dict()['0x0'] counts_11 = new_results.results[1].data.counts.to_dict()['0x3'] self.assertEqual(counts_00, self.shots) self.assertEqual(counts_11, self.shots)