16
16
from mpqp .execution .devices import GOOGLEDevice
17
17
from mpqp .execution .job import Job , JobType
18
18
from mpqp .execution .result import Result , Sample , StateVector
19
+ from mpqp .tools .generics import flatten
19
20
20
21
21
22
@typechecked
@@ -114,7 +115,8 @@ def run_local(job: Job) -> Result:
114
115
ValueError: If the job device is not GOOGLEDevice.
115
116
"""
116
117
from cirq .circuits .circuit import Circuit as CirqCircuit
117
- from cirq .ops .linear_combinations import PauliSum as Cirq_PauliSum
118
+ from cirq .ops .linear_combinations import PauliSum as CirqPauliSum
119
+ from cirq .ops .pauli_string import PauliString as CirqPauliString
118
120
from cirq .sim .sparse_simulator import Simulator
119
121
from cirq .work .observable_measurement import (
120
122
RepetitionsStoppingCriteria ,
@@ -150,7 +152,9 @@ def run_local(job: Job) -> Result:
150
152
cirq_obs = job .measure .observable .to_other_language (
151
153
language = Language .CIRQ , circuit = cirq_circuit
152
154
)
153
- assert type (cirq_obs ) == Cirq_PauliSum
155
+ assert isinstance (cirq_obs , CirqPauliSum ) or isinstance (
156
+ cirq_obs , CirqPauliString
157
+ )
154
158
155
159
if job .measure .shots == 0 :
156
160
result_sim = simulator .simulate_expectation_values (
@@ -159,11 +163,11 @@ def run_local(job: Job) -> Result:
159
163
else :
160
164
result_sim = measure_observables (
161
165
cirq_circuit ,
162
- observables = cirq_obs , # type: ignore[reportArgumentType]
166
+ observables = flatten ( cirq_obs ),
163
167
sampler = simulator ,
164
168
stopping_criteria = RepetitionsStoppingCriteria (job .measure .shots ),
165
169
)
166
-
170
+ print ( result_sim )
167
171
return extract_result_OBSERVABLE (result_sim , job )
168
172
else :
169
173
raise ValueError (f"Job type { job .job_type } not handled" )
@@ -313,7 +317,7 @@ def extract_result_OBSERVABLE(
313
317
raise NotImplementedError ("job.measure is None" )
314
318
for result in results :
315
319
if isinstance (result , float ):
316
- mean += abs ( result )
320
+ mean += result
317
321
if isinstance (result , ObservableMeasuredResult ):
318
322
mean += result .mean
319
323
# TODO variance not supported variance += result1.variance
0 commit comments