@@ -125,8 +125,8 @@ def __init__(self, observable: Matrix | list[Real] | PauliString):
125
125
def matrix (self ) -> Matrix :
126
126
"""The matrix representation of the observable."""
127
127
if self ._matrix is None :
128
- if self .is_diagonal :
129
- self ._matrix = np .diag (self .diagonal_elements )
128
+ if self .is_diagonal and self . _diag_elements is not None :
129
+ self ._matrix = np .diag (self ._diag_elements )
130
130
else :
131
131
self ._matrix = self .pauli_string .to_matrix ()
132
132
matrix = copy .deepcopy (self ._matrix ).astype (np .complex64 )
@@ -301,10 +301,10 @@ def __init__(
301
301
302
302
super ().__init__ (targets , shots , label )
303
303
# TODO Do some checks on the observables when they are many (same size because of targets)
304
- self .observable : list [Observable ]
304
+ self .observables : list [Observable ]
305
305
"""See parameter description."""
306
306
if isinstance (observable , Observable ):
307
- self .observable = [observable ]
307
+ self .observables = [observable ]
308
308
else :
309
309
if not all (
310
310
observable [0 ].nb_qubits == obs .nb_qubits for obs in observable [1 :]
@@ -313,7 +313,7 @@ def __init__(
313
313
"All observables in ExpectationMeasure must have the same size. Sizes: "
314
314
+ str ([o .nb_qubits for o in observable ])
315
315
)
316
- self .observable = observable
316
+ self .observables = observable
317
317
self ._check_targets_order ()
318
318
319
319
def _check_targets_order (self ):
@@ -324,10 +324,10 @@ def _check_targets_order(self):
324
324
self .pre_measure = QCircuit (0 )
325
325
return
326
326
327
- if self .nb_qubits != self .observable [0 ].nb_qubits :
327
+ if self .nb_qubits != self .observables [0 ].nb_qubits :
328
328
raise NumberQubitsError (
329
329
f"Target size { self .nb_qubits } doesn't match observable size "
330
- f"{ self .observable [0 ].nb_qubits } ."
330
+ f"{ self .observables [0 ].nb_qubits } ."
331
331
)
332
332
333
333
self .pre_measure = QCircuit (max (self .targets ) + 1 )
@@ -384,8 +384,7 @@ def __repr__(self) -> str:
384
384
)
385
385
shots = "" if self .shots == 0 else f", shots={ self .shots } "
386
386
label = "" if self .label is None else f", label={ self .label } "
387
- # TODO: update the repr when self.observable contains a list of observables, with also the number of observables
388
- return f"ExpectationMeasure({ self .observable } { targets } { shots } { label } )"
387
+ return f"ExpectationMeasure({ self .observables } { targets } { shots } { label } )"
389
388
390
389
def to_other_language (
391
390
self ,
0 commit comments