Skip to content

Commit c4514bf

Browse files
ValentinS4t1qbitValentin Senicourt
andauthored
Fix for qiskit ibm runtime v 0.22 (#376)
Co-authored-by: Valentin Senicourt <valentin.senicourt@1qbit.com>
1 parent 051dfd7 commit c4514bf

File tree

3 files changed

+18
-7
lines changed

3 files changed

+18
-7
lines changed

tangelo/linq/qpu_connection/ibm_connection.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from tangelo.linq.qpu_connection.qpu_connection import QpuConnection
1010

1111
try:
12+
from qiskit import QuantumCircuit, QuantumRegister
1213
from qiskit.providers.jobstatus import JobStatus
1314
from qiskit.primitives import SamplerResult, EstimatorResult
1415
from qiskit_ibm_runtime import QiskitRuntimeService, Sampler, Estimator, Session, Options
@@ -76,9 +77,13 @@ def job_submit(self, program, backend_name, n_shots, circuits, operators=None, r
7677
circuits = [circuits]
7778
qiskit_cs = list()
7879
for c in circuits:
79-
qiskit_c = translate_circuit(c, target="qiskit")
80-
qiskit_c.remove_final_measurements()
81-
qiskit_c.measure_all(add_bits=False)
80+
81+
if program == 'sampler':
82+
qiskit_c = translate_circuit(c, target="qiskit")
83+
qiskit_c.remove_final_measurements()
84+
qiskit_c.measure_all(add_bits=False)
85+
elif program == 'estimator':
86+
qiskit_c = translate_circuit(c, target="qiskit", output_options={'no_classical_register': True})
8287
qiskit_cs.append(qiskit_c)
8388

8489
# If needed, translate qubit operators in qiskit format
@@ -130,7 +135,7 @@ def job_results(self, job_id):
130135
return None
131136

132137
result = job.result()
133-
self.jobs_results[job_id] = job._results
138+
self.jobs_results[job_id] = job.result()
134139

135140
# Sampler: return histogram for user in standard Tangelo format
136141
if isinstance(result, SamplerResult):

tangelo/linq/tests/test_ibm_connection.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
sim = get_backend()
2727
ref_estimator = sim.get_expectation_value(op, circ2)
2828

29-
os.environ['IBM_TOKEN'] = 'INSERT YOUR TOKEN HERE'
29+
os.environ['IBM_TOKEN'] = 'INSERT TOKEN HERE'
3030

3131

3232
@unittest.skip("We do not want to store login information for automated testing. Manual testing only.")

tangelo/linq/translator/translate_qiskit.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,14 @@ def get_qiskit_gates():
6565
return GATE_QISKIT
6666

6767

68-
def translate_c_to_qiskit(source_circuit: Circuit, save_measurements=False):
68+
def translate_c_to_qiskit(source_circuit: Circuit, save_measurements=False, no_classical_register=False):
6969
"""Take in a Circuit, return an equivalent qiskit.QuantumCircuit
7070
7171
Args:
7272
source_circuit (Circuit): quantum circuit in the abstract format.
7373
save_measurements (bool): Return mid-circuit measurements in the order
7474
they appear in the circuit in the classical registers
75+
no_classical_register (bool): do not create classical register in circuit (default: False)
7576
7677
Returns:
7778
qiskit.QuantumCircuit: the corresponding qiskit.QuantumCircuit
@@ -82,7 +83,12 @@ def translate_c_to_qiskit(source_circuit: Circuit, save_measurements=False):
8283

8384
n_meas = source_circuit._gate_counts.get("MEASURE", 0) if save_measurements else 0
8485
n_measures = n_meas + source_circuit.width
85-
target_circuit = qiskit.QuantumCircuit(source_circuit.width, n_measures)
86+
if no_classical_register:
87+
if n_meas != 0:
88+
print('Linq translator warning :: Qiskit circuit instantiated with no classical register but measurement gates are present')
89+
target_circuit = qiskit.QuantumCircuit(source_circuit.width)
90+
else:
91+
target_circuit = qiskit.QuantumCircuit(source_circuit.width, n_measures)
8692

8793
measurement = 0
8894

0 commit comments

Comments
 (0)