示例#1
0
    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)
示例#2
0
    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)