|
3 | 3 | import math
|
4 | 4 | from typing import TYPE_CHECKING, Optional
|
5 | 5 |
|
6 |
| -from qiskit import QuantumCircuit |
7 |
| -from qiskit.compiler import transpile |
8 |
| -from qiskit.primitives import BackendEstimator |
9 |
| -from qiskit.primitives import Estimator as Qiskit_Estimator |
10 |
| -from qiskit.primitives import EstimatorResult, SamplerResult |
11 |
| -from qiskit.providers import BackendV1, BackendV2 |
12 |
| -from qiskit.providers import JobStatus as IBM_JobStatus |
13 |
| -from qiskit.quantum_info import Operator |
14 |
| -from qiskit.result import Result as QiskitResult |
15 |
| -from qiskit_aer import Aer, AerSimulator |
16 |
| -from qiskit_ibm_provider.job import IBMJob |
17 |
| -from qiskit_ibm_runtime import Estimator as Runtime_Estimator |
18 |
| -from qiskit_ibm_runtime import RuntimeJob |
19 |
| -from qiskit_ibm_runtime import Sampler as Runtime_Sampler |
20 |
| -from qiskit_ibm_runtime import Session |
| 6 | +if TYPE_CHECKING: |
| 7 | + from qiskit import QuantumCircuit |
| 8 | + from qiskit.primitives import EstimatorResult, SamplerResult |
| 9 | + from qiskit.providers import BackendV1, BackendV2 |
| 10 | + from qiskit.result import Result as QiskitResult |
| 11 | + from qiskit_ibm_provider.job import IBMJob |
| 12 | + from qiskit_ibm_runtime import RuntimeJob |
| 13 | + |
21 | 14 | from typeguard import typechecked
|
22 | 15 |
|
23 | 16 | from mpqp.core.circuit import QCircuit
|
@@ -71,6 +64,10 @@ def compute_expectation_value(
|
71 | 64 | This function is not meant to be used directly, please use
|
72 | 65 | :func:``run<mpqp.execution.runner.run>`` instead.
|
73 | 66 | """
|
| 67 | + from qiskit.primitives import BackendEstimator |
| 68 | + from qiskit.primitives import Estimator as Qiskit_Estimator |
| 69 | + from qiskit.quantum_info import Operator |
| 70 | + |
74 | 71 | if not isinstance(job.measure, ExpectationMeasure):
|
75 | 72 | raise ValueError(
|
76 | 73 | "Cannot compute expectation value if measure used in job is not of "
|
@@ -159,6 +156,10 @@ def run_aer(job: Job):
|
159 | 156 | This function is not meant to be used directly, please use
|
160 | 157 | :func:``run<mpqp.execution.runner.run>`` instead.
|
161 | 158 | """
|
| 159 | + from qiskit import QuantumCircuit |
| 160 | + from qiskit.compiler import transpile |
| 161 | + from qiskit_aer import Aer, AerSimulator |
| 162 | + |
162 | 163 | qiskit_circuit = (
|
163 | 164 | job.circuit.without_measurements().to_other_language(Language.QISKIT)
|
164 | 165 | if (job.job_type == JobType.STATE_VECTOR)
|
@@ -225,6 +226,12 @@ def submit_ibmq(job: Job) -> tuple[str, RuntimeJob | IBMJob]:
|
225 | 226 | This function is not meant to be used directly, please use
|
226 | 227 | :func:``run<mpqp.execution.runner.run>`` instead.
|
227 | 228 | """
|
| 229 | + from qiskit import QuantumCircuit |
| 230 | + from qiskit.quantum_info import Operator |
| 231 | + from qiskit_ibm_runtime import Estimator as Runtime_Estimator |
| 232 | + from qiskit_ibm_runtime import Sampler as Runtime_Sampler |
| 233 | + from qiskit_ibm_runtime import Session |
| 234 | + |
228 | 235 | if job.job_type == JobType.STATE_VECTOR:
|
229 | 236 | raise DeviceJobIncompatibleError(
|
230 | 237 | "State vector cannot be computed using IBM remote simulators and"
|
@@ -317,6 +324,9 @@ def extract_result(
|
317 | 324 | Returns:
|
318 | 325 | The ``qiskit`` result converted to our format.
|
319 | 326 | """
|
| 327 | + from qiskit.primitives import EstimatorResult, SamplerResult |
| 328 | + from qiskit.result import Result as QiskitResult |
| 329 | + from qiskit_ibm_runtime import RuntimeJob |
320 | 330 |
|
321 | 331 | if job is not None and (
|
322 | 332 | isinstance(result, EstimatorResult) != (job.job_type == JobType.OBSERVABLE)
|
@@ -436,9 +446,13 @@ def get_result_from_ibm_job_id(job_id: str) -> Result:
|
436 | 446 | Returns:
|
437 | 447 | The result converted to our format.
|
438 | 448 | """
|
| 449 | + from qiskit.providers import BackendV1, BackendV2 |
| 450 | + from qiskit.providers import JobStatus as IBM_JobStatus |
| 451 | + |
439 | 452 | # search for job id in the connector given in parameter first
|
440 | 453 | # if not found, try with IBMProvider, then QiskitRuntimeService
|
441 | 454 | # if not found, raise an error
|
| 455 | + |
442 | 456 | connector = get_IBMProvider()
|
443 | 457 | ibm_job = (
|
444 | 458 | connector.retrieve_job(job_id)
|
|
0 commit comments