Note
This is the documentation for the current state of the development branch of Qiskit Experiments. The documentation or APIs here can change prior to being released.
Use Experiments with Sampler¶
Problem¶
You want to run experiments with a custom qiskit.primitives.BaseSamplerV2
service.
A sampler can be instantiated with a backend, session or batch, which allows one to
run an experiment in different execution modes.
Note
All jobs, by default, run using the qiskit_ibm_runtime.SamplerV2
class. When calling exp.run
a
qiskit_ibm_runtime.SamplerV2
object will be automatically generated to wrap the specified backend.
Solution¶
In this example, we will pass in a qiskit_ibm_runtime.SamplerV2
object to a tomography experiment.
Note
If a sampler object is passed to qiskit_experiments.framework.BaseExperiment.run()
then the run options of the
sampler object are used. The execution options set by the experiment are ignored.
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit_experiments.library.tomography import ProcessTomography
from qiskit import QuantumCircuit
service = QiskitRuntimeService(channel="ibm_quantum")
backend = service.backend("ibm_osaka")
qc = QuantumCircuit(1)
qc.x(0)
sampler = Sampler(backed)
# set the shots in the sampler object
sampler.options.default_shots = 300
exp = ProcessTomography(qc)
# Artificially lower circuits per job, adjust value for your own application
exp.set_experiment_options(max_circuits=3)
# pass the sampler into the experiment
exp_data = exp.run(sampler=sampler)