def test_empty_calibration(self):
     backend_name = 'test_sim_backend'
     backend_version = '1.2.0'
     qobj_id = '42'
     job_id = '42'
     success = True
     experiment_result = [self.experiment_result_3]
     qi_result = QIResult(backend_name, backend_version, qobj_id, job_id,
                          success, experiment_result)
     calibration = qi_result.get_calibration()
     self.assertIsNone(calibration)
Example #2
0
    def _result(self, result_function: Callable[[Job], List[ExperimentResult]], timeout: Optional[float] = None,
                wait: float = 0.5) -> QIResult:
        """ Return the result for the experiments.

        :param result_function: backend function for fetching the requested results.
        :param timeout: Timeout in seconds.
        :param wait: Wait time between queries to the Quantum Inspire platform.

        :return:
            Result object containing results from the experiments.

        :raises JobTimeoutError: If timeout is reached.
        :raises QiskitBackendError: If an error occurs during simulation.
        """
        start_time = time.time()
        while self.status() not in JOB_FINAL_STATES:
            elapsed_time = time.time() - start_time
            if timeout is not None and elapsed_time > timeout:
                raise JobTimeoutError('Failed getting result: timeout reached.')
            time.sleep(wait)

        experiment_results = result_function(self)
        total_time_taken = sum(getattr(experiment_result, "time_taken", 0.0) for
                               experiment_result in experiment_results)

        return QIResult(backend_name=self._backend.backend_name, backend_version=quantum_inspire_version,
                        job_id=self.job_id(), qobj_id=self.job_id(), success=True, results=experiment_results,
                        status=self.status(), time_taken=total_time_taken)
Example #3
0
 def test_no_probabilities(self):
     backend_name = 'test_backend'
     backend_version = '1.2.0'
     qobj_id = '42'
     job_id = '42'
     success = True
     experiment_result = [self.experiment_result_3]
     qi_result = QIResult(backend_name, backend_version, qobj_id, job_id,
                          success, experiment_result)
     self.assertRaisesRegex(QisKitBackendError,
                            'No probabilities for experiment "0"',
                            qi_result.get_probabilities, 0)
 def test_no_calibration_data(self):
     backend_name = 'test_backend'
     backend_version = '1.2.0'
     qobj_id = '42'
     job_id = '42'
     success = True
     experiment_result = [self.experiment_result_4]
     qi_result = QIResult(backend_name, backend_version, qobj_id, job_id,
                          success, experiment_result)
     self.assertRaisesRegex(QiskitBackendError,
                            'No calibration data for experiment "0"',
                            qi_result.get_calibration, 0)
Example #5
0
    def test_constructor(self):
        backend_name = 'test_backend'
        backend_version = '1.2.0'
        qobj_id = '42'
        job_id = '42'
        success = True
        date = '07-07-2020'
        experiment_result = self.experiment_result_1
        qi_result = QIResult(backend_name, backend_version, qobj_id, job_id,
                             success, [experiment_result], date)

        self.assertEqual(date, qi_result.date)
        self.assertEqual(job_id, qi_result.job_id)
        self.assertIsNotNone(qi_result.results)
        self.assertListEqual(['Test1'], [r.name for r in qi_result.results])
Example #6
0
    def result(self, timeout: Optional[float] = None, wait: float = 0.5) -> QIResult:
        """

        Args:
            timeout: Timeout in seconds.
            wait: Wait time between queries to the quantum-inspire platform.

        Returns:
            QIResult object containing results from the experiments.

        Raises:
            JobTimeoutError: If timeout is reached.
            QisKitBackendError: If an error occurs during simulation.
        """
        start_time = time.time()
        while self.status() not in JOB_FINAL_STATES:
            elapsed_time = time.time() - start_time
            if timeout is not None and elapsed_time > timeout:
                raise JobTimeoutError('Failed getting result: timeout reached.')
            time.sleep(wait)
        experiment_results = self._backend.get_experiment_results(self)
        return QIResult(backend_name=self._backend.backend_name, backend_version=quantum_inspire_version,
                        job_id=self.job_id(), qobj_id=self.job_id(), success=True, results=experiment_results)
Example #7
0
    def test_more_results(self):
        backend_name = 'test_backend'
        backend_version = '1.2.0'
        qobj_id = '42'
        job_id = '42'
        success = True
        experiment_result = [
            self.experiment_result_1, self.experiment_result_2
        ]
        qi_result = QIResult(backend_name, backend_version, qobj_id, job_id,
                             success, experiment_result)

        probabilities = qi_result.get_probabilities('Test1')
        self.assertDictEqual(probabilities, {'00': 0.42, '11': 0.58})
        probabilities = qi_result.get_probabilities('Test2')
        self.assertDictEqual(probabilities, {
            '000': 0.24,
            '001': 0.25,
            '010': 0.23,
            '011': 0.28
        })
        probabilities = qi_result.get_probabilities(1)
        self.assertDictEqual(probabilities, {
            '000': 0.24,
            '001': 0.25,
            '010': 0.23,
            '011': 0.28
        })
        probabilities = qi_result.get_probabilities()
        self.assertListEqual(probabilities, [{
            '00': 0.42,
            '11': 0.58
        }, {
            '000': 0.24,
            '001': 0.25,
            '010': 0.23,
            '011': 0.28
        }])
    def test_more_results(self):
        backend_name = 'test_backend'
        backend_version = '1.2.0'
        qobj_id = '42'
        job_id = '42'
        success = True
        experiment_result = [
            self.experiment_result_1, self.experiment_result_2
        ]
        qi_result = QIResult(backend_name, backend_version, qobj_id, job_id,
                             success, experiment_result)

        probabilities = qi_result.get_probabilities('Test1')
        self.assertDictEqual(probabilities, {'00': 0.42, '11': 0.58})
        probabilities = qi_result.get_probabilities('Test2')
        self.assertDictEqual(probabilities, {
            '000': 0.24,
            '001': 0.25,
            '010': 0.23,
            '011': 0.28
        })
        probabilities = qi_result.get_probabilities(1)
        self.assertDictEqual(probabilities, {
            '000': 0.24,
            '001': 0.25,
            '010': 0.23,
            '011': 0.28
        })
        probabilities = qi_result.get_probabilities()
        self.assertListEqual(probabilities, [{
            '00': 0.42,
            '11': 0.58
        }, {
            '000': 0.24,
            '001': 0.25,
            '010': 0.23,
            '011': 0.28
        }])
        calibration = qi_result.get_calibration('Test1')
        self.assertDictEqual(calibration, {
            'fridge_temperature': 26.9,
            'unit': 'mK'
        })
        calibration = qi_result.get_calibration('Test2')
        self.assertDictEqual(calibration, {
            'fridge_temperature': 25.0,
            'unit': 'mK'
        })
        calibration = qi_result.get_calibration(1)
        self.assertDictEqual(calibration, {
            'fridge_temperature': 25.0,
            'unit': 'mK'
        })
        calibration = qi_result.get_calibration()
        self.assertListEqual(calibration, [{
            'fridge_temperature': 26.9,
            'unit': 'mK'
        }, {
            'fridge_temperature': 25.0,
            'unit': 'mK'
        }])