Qiskit Plugin Examples¶
Common Qiskit workflows using the openquantum-sdk[qiskit] plugin.
Note
All examples assume you have valid credentials configured. See Authentication for setup options.
Bell State with Sampler¶
from openquantum_sdk.auth import ClientCredentials
from openquantum_sdk_qiskit import OpenQuantumService
from qiskit.circuit import QuantumCircuit
service = OpenQuantumService(
creds=ClientCredentials(
client_id="s_your_client_id",
client_secret="your_client_secret",
),
)
backend = service.return_backend("ionq:forte-1")
sampler = service.create_sampler(
backend=backend,
job_subcategory_id="phys:oth", # Physics
)
qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure([0, 1], [0, 1])
job = sampler.run([qc], shots=1024)
result = job.result()
counts = result[0].data.meas.get_counts()
print(f"Bell state counts: {counts}")
service.close()
Expectation Value with Estimator¶
from openquantum_sdk.auth import ClientCredentials
from openquantum_sdk_qiskit import OpenQuantumService
from qiskit.circuit import QuantumCircuit
from qiskit.quantum_info import SparsePauliOp
service = OpenQuantumService(
creds=ClientCredentials(
client_id="s_your_client_id",
client_secret="your_client_secret",
),
)
backend = service.return_backend("ionq:forte-1")
estimator = service.create_estimator(
backend=backend,
job_subcategory_id="phys:oth", # Physics
)
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
observable = SparsePauliOp("ZZ")
job = estimator.run([(qc, observable)])
result = job.result()
print(f"<ZZ> = {result[0].data.evs}")
service.close()
Multi-Circuit Batch with Sampler¶
from openquantum_sdk.auth import ClientCredentials
from openquantum_sdk_qiskit import OpenQuantumService
from qiskit.circuit import QuantumCircuit
service = OpenQuantumService(
creds=ClientCredentials(
client_id="s_your_client_id",
client_secret="your_client_secret",
),
)
backend = service.return_backend("ionq:forte-1")
sampler = service.create_sampler(
backend=backend,
job_subcategory_id="oth:oth",
)
# Circuit 1: Bell state
qc1 = QuantumCircuit(2, 2)
qc1.h(0)
qc1.cx(0, 1)
qc1.measure([0, 1], [0, 1])
# Circuit 2: GHZ state
qc2 = QuantumCircuit(3, 3)
qc2.h(0)
qc2.cx(0, 1)
qc2.cx(1, 2)
qc2.measure([0, 1, 2], [0, 1, 2])
# Submit both circuits
job = sampler.run([qc1, qc2], shots=1024)
result = job.result()
print(f"Bell state: {result[0].data.meas.get_counts()}")
print(f"GHZ state: {result[1].data.meas.get_counts()}")
service.close()
Backend Selection and Filtering¶
from openquantum_sdk.auth import ClientCredentials
from openquantum_sdk_qiskit import OpenQuantumService
service = OpenQuantumService(
creds=ClientCredentials(
client_id="s_your_client_id",
client_secret="your_client_secret",
),
)
# List all online QPU backends
qpu_backends = service.backends(online=True, device_type="QPU")
for b in qpu_backends:
print(f"{b['short_code']}: {b['name']} (queue: {b['queue_depth']})")
# Search by name
ionq = service.backends(name="ionq")
for b in ionq:
print(f"{b['short_code']}: {b['name']}")
service.close()
Using a Saved Account¶
from openquantum_sdk.auth import ClientCredentials
from openquantum_sdk_qiskit import OpenQuantumService
# Save credentials once
OpenQuantumService.save_account(
name="default",
creds=ClientCredentials(
client_id="s_your_client_id",
client_secret="your_client_secret",
),
)
# Load from saved account in future sessions
service = OpenQuantumService.from_saved_account()
# Or let it auto-load
service = OpenQuantumService()
backends = service.backends()
print(f"Found {len(backends)} backends")
service.close()
Related Pages¶
- Getting Started -- Installation and first circuit.
- Backends & Targets -- Backend capabilities.
- Sampler & Estimator -- SamplerV2 and EstimatorV2 reference.