@@ -17,8 +17,6 @@ def validate_data(self, *args, **kwargs):
1717 return self ._validate_data (* args , ** kwargs )
1818
1919
20- from qiskit .quantum_info .random import random_pauli_list
21-
2220from ..observables .observable_base import ObservableBase
2321from ..observables import CustomObservable , SinglePauli
2422from ..encoding_circuit .encoding_circuit_base import EncodingCircuitBase
@@ -27,6 +25,8 @@ def validate_data(self, *args, **kwargs):
2725from ..qnn .lowlevel_qnn import LowLevelQNN
2826from ..util .serialization import SerializableModelMixin
2927
28+ from .util .random_pauli_list import random_pauli_list
29+
3030
3131class BaseQRC (BaseEstimator , SerializableModelMixin , ABC ):
3232 """Base class for Quantum Reservoir Computing (QRC) models.
@@ -65,7 +65,7 @@ def __init__(
6565 ml_model : str = "linear" ,
6666 ml_model_options : Union [dict , None ] = None ,
6767 operators : Union [ObservableBase , list [ObservableBase ], str ] = "random_paulis" ,
68- num_operators : int = 100 ,
68+ num_operators : int = None ,
6969 operator_seed : int = 0 ,
7070 param_ini : Union [np .ndarray , None ] = None ,
7171 param_op_ini : Union [np .ndarray , None ] = None ,
@@ -89,6 +89,19 @@ def __init__(
8989 self ._is_lowlevel_qnn_initialized = False
9090 self ._qnn = None
9191
92+ if self .operators == "random_paulis" :
93+ if (
94+ self .num_operators is not None
95+ and self .num_operators > 4 ** self .encoding_circuit .num_qubits
96+ ):
97+ raise ValueError (
98+ f"Number of operators ({ self .num_operators } ) exceeds the maximum possible "
99+ f"({ 4 ** self .encoding_circuit .num_qubits } ) for the given number of qubits "
100+ f"({ self .encoding_circuit .num_qubits } )."
101+ )
102+ elif self .num_operators is None :
103+ self .num_operators = min (100 , 4 ** self .encoding_circuit .num_qubits )
104+
92105 self ._ml_model = None
93106 self ._initialize_observables ()
94107 self ._initialize_ml_model ()
@@ -152,7 +165,6 @@ def _initialize_observables(self) -> None:
152165 self .encoding_circuit .num_qubits ,
153166 self .num_operators ,
154167 seed = self .operator_seed ,
155- phase = False ,
156168 )
157169 self ._operators = [
158170 CustomObservable (self .encoding_circuit .num_qubits , str (p )) for p in paulis
0 commit comments