Beispiel #1
0
    def test_multiple_circuits_counts(self):
        """"
        Test that counts are returned either as a list or a single item.

        Counts are returned as a list when multiple experiments are executed
        and get_counts() is called with no arguments. In all the other cases
        get_counts() returns a single item containing the counts for a
        single experiment.
        """
        raw_counts_1 = {'0x0': 5, '0x3': 12, '0x5': 9, '0xD': 6, '0xE': 2}
        processed_counts_1 = {
            '0000': 5,
            '0011': 12,
            '0101': 9,
            '1101': 6,
            '1110': 2
        }
        data_1 = models.ExperimentResultData(counts=dict(**raw_counts_1))
        exp_result_header_1 = QobjExperimentHeader(creg_sizes=[['c0', 4]],
                                                   memory_slots=4)
        exp_result_1 = models.ExperimentResult(shots=14,
                                               success=True,
                                               meas_level=2,
                                               data=data_1,
                                               header=exp_result_header_1)

        raw_counts_2 = {'0x1': 0, '0x4': 3, '0x6': 6, '0xA': 1, '0xB': 2}
        processed_counts_2 = {
            '0001': 0,
            '0100': 3,
            '0110': 6,
            '1010': 1,
            '1011': 2
        }
        data_2 = models.ExperimentResultData(counts=dict(**raw_counts_2))
        exp_result_header_2 = QobjExperimentHeader(creg_sizes=[['c0', 4]],
                                                   memory_slots=4)
        exp_result_2 = models.ExperimentResult(shots=14,
                                               success=True,
                                               meas_level=2,
                                               data=data_2,
                                               header=exp_result_header_2)

        raw_counts_3 = {'0xC': 27, '0xF': 20}
        processed_counts_3 = {'1100': 27, '1111': 20}
        data_3 = models.ExperimentResultData(counts=dict(**raw_counts_3))
        exp_result_header_3 = QobjExperimentHeader(creg_sizes=[['c0', 4]],
                                                   memory_slots=4)
        exp_result_3 = models.ExperimentResult(shots=14,
                                               success=True,
                                               meas_level=2,
                                               data=data_3,
                                               header=exp_result_header_3)

        mult_result = Result(
            results=[exp_result_1, exp_result_2, exp_result_3],
            **self.base_result_args)
        sing_result = Result(results=[exp_result_1], **self.base_result_args)

        self.assertEqual(
            mult_result.get_counts(),
            [processed_counts_1, processed_counts_2, processed_counts_3])
        self.assertEqual(sing_result.get_counts(), processed_counts_1)
Beispiel #2
0
 def to_result(self):
     return Result(backend_name=self.backend_name, backend_version=self.backend_version, qobj_id=self.qobj.qobj_id,
                     job_id=self.job_id, success=self.status is JobStatus.DONE, results=self.results)
Beispiel #3
0
    def test_multiple_circuits_counts(self):
        """ "
        Test that counts are returned either as a list or a single item.

        Counts are returned as a list when multiple experiments are executed
        and get_counts() is called with no arguments. In all the other cases
        get_counts() returns a single item containing the counts for a
        single experiment.
        """
        raw_counts_1 = {"0x0": 5, "0x3": 12, "0x5": 9, "0xD": 6, "0xE": 2}
        processed_counts_1 = {
            "0000": 5,
            "0011": 12,
            "0101": 9,
            "1101": 6,
            "1110": 2
        }
        data_1 = models.ExperimentResultData(counts=dict(**raw_counts_1))
        exp_result_header_1 = QobjExperimentHeader(creg_sizes=[["c0", 4]],
                                                   memory_slots=4)
        exp_result_1 = models.ExperimentResult(shots=14,
                                               success=True,
                                               meas_level=2,
                                               data=data_1,
                                               header=exp_result_header_1)

        raw_counts_2 = {"0x1": 0, "0x4": 3, "0x6": 6, "0xA": 1, "0xB": 2}
        processed_counts_2 = {
            "0001": 0,
            "0100": 3,
            "0110": 6,
            "1010": 1,
            "1011": 2
        }
        data_2 = models.ExperimentResultData(counts=dict(**raw_counts_2))
        exp_result_header_2 = QobjExperimentHeader(creg_sizes=[["c0", 4]],
                                                   memory_slots=4)
        exp_result_2 = models.ExperimentResult(shots=14,
                                               success=True,
                                               meas_level=2,
                                               data=data_2,
                                               header=exp_result_header_2)

        raw_counts_3 = {"0xC": 27, "0xF": 20}
        processed_counts_3 = {"1100": 27, "1111": 20}
        data_3 = models.ExperimentResultData(counts=dict(**raw_counts_3))
        exp_result_header_3 = QobjExperimentHeader(creg_sizes=[["c0", 4]],
                                                   memory_slots=4)
        exp_result_3 = models.ExperimentResult(shots=14,
                                               success=True,
                                               meas_level=2,
                                               data=data_3,
                                               header=exp_result_header_3)

        mult_result = Result(
            results=[exp_result_1, exp_result_2, exp_result_3],
            **self.base_result_args)
        sing_result = Result(results=[exp_result_1], **self.base_result_args)

        self.assertEqual(
            mult_result.get_counts(),
            [processed_counts_1, processed_counts_2, processed_counts_3])
        self.assertEqual(sing_result.get_counts(), processed_counts_1)
Beispiel #4
0
    def setUp(self):
        """Here, single-shots average to points at plus/minus 1.

        The setting corresponds to four single-shots done on two qubits.
        """
        super().setUp()

        circ_es = ExperimentResultData(memory=[
            [[1.1, 0.9], [-0.8, 1.0]],
            [[1.2, 1.1], [-0.9, 1.0]],
            [[0.8, 1.1], [-1.2, 1.0]],
            [[0.9, 0.9], [-1.1, 1.0]],
        ])
        self._sig_gs = np.array([-1.0, 1.0]) / np.sqrt(2.0)

        circ_gs = ExperimentResultData(memory=[
            [[-1.1, -0.9], [0.8, -1.0]],
            [[-1.2, -1.1], [0.9, -1.0]],
            [[-0.8, -1.1], [1.2, -1.0]],
            [[-0.9, -0.9], [1.1, -1.0]],
        ])
        self._sig_es = np.array([1.0, -1.0]) / np.sqrt(2.0)

        circ_x90p = ExperimentResultData(memory=[
            [[-1.0, -1.0], [1.0, -1.0]],
            [[-1.0, -1.0], [1.0, -1.0]],
            [[1.0, 1.0], [-1.0, 1.0]],
            [[1.0, 1.0], [-1.0, 1.0]],
        ])
        self._sig_x90 = np.array([0, 0])

        circ_x45p = ExperimentResultData(memory=[
            [[-1.0, -1.0], [1.0, -1.0]],
            [[-1.0, -1.0], [1.0, -1.0]],
            [[-1.0, -1.0], [1.0, -1.0]],
            [[1.0, 1.0], [-1.0, 1.0]],
        ])
        self._sig_x45 = np.array([-0.5, 0.5]) / np.sqrt(2.0)

        res_es = ExperimentResult(
            shots=4,
            success=True,
            meas_level=1,
            meas_return="single",
            data=circ_es,
            header=self.header,
        )

        res_gs = ExperimentResult(
            shots=4,
            success=True,
            meas_level=1,
            meas_return="single",
            data=circ_gs,
            header=self.header,
        )

        res_x90p = ExperimentResult(
            shots=4,
            success=True,
            meas_level=1,
            meas_return="single",
            data=circ_x90p,
            header=self.header,
        )

        res_x45p = ExperimentResult(
            shots=4,
            success=True,
            meas_level=1,
            meas_return="single",
            data=circ_x45p,
            header=self.header,
        )

        self.data = ExperimentData(FakeExperiment())
        self.data.add_data(
            Result(results=[res_es, res_gs, res_x90p, res_x45p],
                   **self.base_result_args))