Skip to content

Commit 0252362

Browse files
Merge pull request #328 from sQUlearn/develop
Release 0.8.2
2 parents 2ab6b39 + a5d525f commit 0252362

71 files changed

Lines changed: 1782 additions & 1711 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/modules/classes.rst

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ QML Regressors
1616
:toctree: generated/
1717
:template: class.rst
1818

19-
kernel.ml.QSVR
20-
kernel.ml.QKRR
21-
kernel.ml.QGPR
19+
kernel.QSVR
20+
kernel.QKRR
21+
kernel.QGPR
2222
qnn.QNNRegressor
2323
qrc.QRCRegressor
2424

@@ -33,8 +33,8 @@ QML Classifiers
3333
:toctree: generated/
3434
:template: class.rst
3535

36-
kernel.ml.QSVC
37-
kernel.ml.QGPC
36+
kernel.QSVC
37+
kernel.QGPC
3838
qnn.QNNClassifier
3939
qrc.QRCClassifier
4040

@@ -155,7 +155,7 @@ Core
155155
Quantum Kernel Core
156156
------------------------------------
157157

158-
.. automodule:: squlearn.kernel.matrix
158+
.. automodule:: squlearn.kernel.lowlevel_kernel
159159
:no-members:
160160
:no-inherited-members:
161161

@@ -166,8 +166,8 @@ Quantum Kernel Core
166166
:toctree: generated/
167167
:template: class.rst
168168

169-
kernel.matrix.FidelityKernel
170-
kernel.matrix.ProjectedQuantumKernel
169+
kernel.lowlevel_kernel.FidelityKernel
170+
kernel.lowlevel_kernel.ProjectedQuantumKernel
171171

172172
.. automodule:: squlearn.kernel.loss
173173
:no-members:
@@ -198,10 +198,10 @@ QNN Core
198198
:template: class.rst
199199

200200
qnn.lowlevel_qnn.LowLevelQNN
201-
qnn.lowlevel_qnn_qiskit.LowLevelQNNQiskit
202-
qnn.lowlevel_qnn_qiskit.Expec
203-
qnn.lowlevel_qnn_pennylane.LowLevelQNNPennyLane
204-
qnn.lowlevel_qnn_base.LowLevelQNNBase
201+
qnn.lowlevel_qnn.lowlevel_qnn_qiskit.LowLevelQNNQiskit
202+
qnn.lowlevel_qnn.lowlevel_qnn_qiskit.Expec
203+
qnn.lowlevel_qnn.lowlevel_qnn_pennylane.LowLevelQNNPennyLane
204+
qnn.lowlevel_qnn.lowlevel_qnn_base.LowLevelQNNBase
205205
qnn.loss.SquaredLoss
206206
qnn.loss.VarianceLoss
207207
qnn.loss.ODELoss
@@ -214,11 +214,11 @@ Tools for training QNNs
214214
:toctree: generated/
215215
:template: class.rst
216216

217-
qnn.get_variance_fac
218-
qnn.get_lr_decay
219-
qnn.ShotsFromRSTD
220-
qnn.training.train
221-
qnn.training.train_mini_batch
217+
qnn.util.get_variance_fac
218+
qnn.util.get_lr_decay
219+
qnn.util.ShotsFromRSTD
220+
qnn.util.training.train
221+
qnn.util.training.train_mini_batch
222222

223223

224224
Implemented optimizers
@@ -286,11 +286,11 @@ Base Classes
286286

287287
observables.observable_base.ObservableBase
288288
encoding_circuit.encoding_circuit_base.EncodingCircuitBase
289-
kernel.matrix.kernel_matrix_base.KernelMatrixBase
289+
kernel.lowlevel_kernel.kernel_matrix_base.KernelMatrixBase
290290
kernel.loss.kernel_loss_base.KernelLossBase
291291
optimizers.optimizer_base.OptimizerBase
292292
qnn.base_qnn.BaseQNN
293-
qnn.loss.LossBase
293+
qnn.loss.qnn_loss_base.QNNLossBase
294294
qrc.base_qrc.BaseQRC
295295

296296

docs/user_guide/executor.rst

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ execution environment:
143143
executor = Executor(dev, shots = 1234)
144144
145145
146-
- A :class:`Backend <qiskit.providers.Backend>` from :class:`QiskitRuntimeService <qiskit_ibm_runtime.QiskitRuntimeService>`'s :meth:`get_backend <qiskit_ibm_runtime.QiskitRuntimeService.get_backend>` method, which utilizes the execution of quantum jobs on IBM Quantum.
146+
- A :class:`Backend <qiskit.providers.Backend>` from :class:`QiskitRuntimeService <qiskit_ibm_runtime.QiskitRuntimeService>`'s :meth:`backend <qiskit_ibm_runtime.QiskitRuntimeservice.backend>` method, which utilizes the execution of quantum jobs on IBM Quantum.
147147
Sessions and Primitives are automatically created and managed by the :class:`Executor <squlearn.Executor>` class (remember to close the session at the end of your code when running on IBM Quantum).
148148

149149
.. code-block:: python
@@ -152,7 +152,7 @@ execution environment:
152152
from qiskit_ibm_runtime import QiskitRuntimeService
153153
154154
service = QiskitRuntimeService(channel="ibm_quantum", token="INSERT_YOUR_TOKEN_HERE")
155-
executor = Executor(service.get_backend('ibm_brisbane'))
155+
executor = Executor(service.backend('ibm_brisbane'))
156156
...
157157
# Close the session at the end of your code
158158
executor.close_session()
@@ -179,7 +179,7 @@ execution environment:
179179
from qiskit_ibm_runtime import QiskitRuntimeService
180180
181181
service = QiskitRuntimeService(channel="ibm_quantum", token="INSERT_YOUR_TOKEN_HERE")
182-
session = service.create_session(backend = service.get_backend('ibm_brisbane'))
182+
session = service.create_session(backend = service.backend('ibm_brisbane'))
183183
executor = Executor(session)
184184
...
185185
executor.close_session()
@@ -195,7 +195,7 @@ execution environment:
195195
196196
service = QiskitRuntimeService(channel="ibm_quantum", token="INSERT_YOUR_TOKEN_HERE")
197197
198-
session = service.create_session(backend = service.get_backend('ibm_brisbane'))
198+
session = service.create_session(backend = service.backend('ibm_brisbane'))
199199
estimator = Estimator(session=session)
200200
estimator.options.resilience.zne_mitigation = True
201201
estimator.options.resilience.zne.noise_factors = (1, 3, 5)
@@ -233,7 +233,7 @@ backend from the :class:`QiskitRuntimeService <qiskit_ibm_runtime.QiskitRuntimeS
233233
"zne":{"noise_factors" : (1, 3, 5),"extrapolator":"linear" }}
234234
}
235235
236-
executor = Executor(service.get_backend('ibm_brisbane'), # Specify the backend
236+
executor = Executor(service.backend('ibm_brisbane'), # Specify the backend
237237
cache_dir='cache', # Set cache folder to "cache"
238238
caching=True, # Enable caching default for remote executions
239239
log_file="executor.log", # Set-up logging file
@@ -296,7 +296,7 @@ They folow the same dictionary datastructure than the original V2 Primtives.
296296
"zne":{"noise_factors" : (1, 3, 5),"extrapolator":"linear" }}
297297
}
298298
299-
executor = Executor(service.get_backend("ibm_brisbane"),options_estimator=options)
299+
executor = Executor(service.backend("ibm_brisbane"),options_estimator=options)
300300
301301
Alternatively, the options can be adjusted by the attributes :meth:`estimator_options` and :meth:`sampler_options` similar
302302
to the option interface of the V2 Primtives:
@@ -307,7 +307,7 @@ to the option interface of the V2 Primtives:
307307
from qiskit_ibm_runtime import QiskitRuntimeService
308308
309309
service = QiskitRuntimeService(channel="ibm_quantum", token="INSERT_YOUR_TOKEN_HERE")
310-
executor = Executor(service.get_backend("ibm_brisbane"))
310+
executor = Executor(service.backend("ibm_brisbane"))
311311
executor.sampler_options.dynamical_decoupling.enable = True
312312
executor.sampler_options.dynamical_decoupling.sequence_type = "XpXm"
313313
@@ -321,7 +321,7 @@ Options can be adjusted by the :meth:`set_options` method of the Primitives that
321321
322322
service = QiskitRuntimeService(channel="ibm_quantum", token="INSERT_YOUR_TOKEN_HERE")
323323
324-
executor = Executor(service.get_backend("ibm_brisbane"))
324+
executor = Executor(service.backend("ibm_brisbane"))
325325
estimator = executor.get_estimator()
326326
estimator.set_options(resilience_level=2)
327327

docs/user_guide/kernel_methods.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ given by measurements.
6666
These will be also subject to discussion in the sQUlearn context below.
6767

6868

69-
.. currentmodule:: squlearn.kernel.ml
69+
.. currentmodule:: squlearn.kernel
7070

7171
High-Level methods that employ quantum kernels
7272
----------------------------------------------
@@ -132,7 +132,7 @@ kernel matrices using either *thresholding* or *tikhonov* approach as described
132132
Regularization is by default switched of but can be set via the :code:`regularization`
133133
argument.
134134

135-
.. currentmodule:: squlearn.kernel.matrix
135+
.. currentmodule:: squlearn.kernel.lowlevel_kernel
136136

137137
Fidelity Quantum Kernel (FQK) via :class:`FidelityKernel`
138138
#########################################################

docs/user_guide/quantum_neural_networks.rst

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -239,13 +239,13 @@ This is possible by providing a :class:`List` or a :class:`Callable` to the lear
239239
Then a learning rate is chosen from the list or calculated by the callable at the beginning of
240240
each iteration or epoch.
241241
A suitable function for generating a callable with an exponential decay of the learning rate is
242-
provided by :meth:`get_lr_decay`. The following example will generate an Adam optimization
242+
provided by :meth:`util.get_lr_decay`. The following example will generate an Adam optimization
243243
with an exponential decay in the learning rate from 0.01 to 0.001 over 100 iterations.
244244

245245
.. jupyter-execute::
246246

247247
from squlearn.optimizers import Adam
248-
from squlearn.qnn import get_lr_decay
248+
from squlearn.qnn.util import get_lr_decay
249249
adam = Adam({'lr':get_lr_decay(0.01, 0.001, 100)})
250250

251251

@@ -263,11 +263,12 @@ The high-level implementations of QNNs, :class:`QNNRegressor` and :class:`QNNCla
263263
can be initialized with a shot controller that takes care to automatically adjust the number of
264264
shots. The following example will generate a :class:`QNNRegressor`
265265
with a RSTD threshold of 0.1 and a minimum and maximum number of shots of 100 and 10000.
266-
It utilizes the :class:`ShotsFromRSTD <squlearn.qnn.ShotsFromRSTD>` shot controller.
266+
It utilizes the :class:`ShotsFromRSTD <squlearn.qnn.util.ShotsFromRSTD>` shot controller.
267267

268268
.. code-block:: python
269269
270-
from squlearn.qnn import QNNRegressor, ShotsFromRSTD
270+
from squlearn.qnn import QNNRegressor
271+
from squlearn.qnn.util import ShotsFromRSTD
271272
reg = QNNRegressor(
272273
...
273274
shot_controller = ShotsFromRSTD(rstd_bound=0.1, min_shots=100, max_shots=10000),
@@ -407,12 +408,13 @@ stages (see Ref. [1]). This can be achieved by passing a :class:`List` or a :cla
407408
to the keyword argument ``variance`` of the :class:`QNNRegressor` (or :class:`QNNClassifier`).
408409
The following example will generate a :class:`QNNRegressor` with a variance
409410
regularization factor that is adjusted dynamically during the optimization by utilizing the
410-
function :meth:`get_variance_fac`. The set-up features a final regularization factor of 0.005,
411+
function :meth:`util.get_variance_fac`. The set-up features a final regularization factor of 0.005,
411412
a decay factor of 0.08 and a plateau at :math:`\alpha=1` of 20 iterations at the beginning.
412413

413414
.. code-block:: python
414415
415-
from squlearn.qnn import QNNRegressor,get_variance_fac
416+
from squlearn.qnn import QNNRegressor
417+
from squlearn.qnn.util import get_variance_fac
416418
reg = QNNRegressor(
417419
...
418420
variance = get_variance_fac(0.005,0.08,20),

examples/encoding_circuits/various_encoding_circuit.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@
214214
"source": [
215215
"\"\"\"\n",
216216
"This example shows how to wrap a Qiskit QuantumCircuit object into\n",
217-
"a sQUlearn EncodingCircuitBase object. The TwoLocal circuit below can be \n",
217+
"a sQUlearn EncodingCircuitBase object. The TwoLocal circuit below can be\n",
218218
"replaced by any other QuantumCircuit\n",
219219
"\"\"\"\n",
220220
"\n",

examples/executor/example_executor_qiskit.ipynb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,13 @@
6161
"# from a backend obtained from the Qiskit IBM runtime service (here, the account has to be set-up previously):\n",
6262
"service = QiskitRuntimeService(channel=\"ibm_quantum\")\n",
6363
"# Alternative: service = QiskitRuntimeService(channel=\"ibm_quantum\",token=\"YOUR_TOKEN_HERE\")\n",
64-
"executor = Executor(service.get_backend(\"ibm_kyoto\"))\n",
64+
"executor = Executor(service.backend(\"ibm_kyoto\"))\n",
6565
"# from a session set-up with the Qiskit IBM runtime service:\n",
66-
"session = Session(service, backend=service.get_backend(\"ibm_kyoto\"), max_time=28800)\n",
66+
"session = Session(service, backend=service.backend(\"ibm_kyoto\"), max_time=28800)\n",
6767
"executor = Executor(session)\n",
6868
"\n",
6969
"# from the Qiskit IBM runtime Estimator primitive:\n",
70-
"session = Session(service, backend=service.get_backend(\"ibm_kyoto\"), max_time=28800)\n",
70+
"session = Session(service, backend=service.backend(\"ibm_kyoto\"), max_time=28800)\n",
7171
"estimator = RuntimeEstimator(session=session)\n",
7272
"executor = Executor(estimator)"
7373
]

examples/kernel/example_projected_kernel.ipynb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -581,16 +581,16 @@
581581
"}\n",
582582
"</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>QSVC(C=1.0, break_ties=False, cache_size=200, class_weight=None,\n",
583583
" decision_function_shape=&#x27;ovr&#x27;, max_iter=-1, probability=False,\n",
584-
" quantum_kernel=&lt;squlearn.kernel.matrix.projected_quantum_kernel.ProjectedQuantumKernel object at 0x0000017603089B40&gt;,\n",
584+
" quantum_kernel=&lt;squlearn.kernel.lowlevel_kernel.projected_quantum_kernel.ProjectedQuantumKernel object at 0x0000017603089B40&gt;,\n",
585585
" random_state=None, shrinking=True, tol=0.001, verbose=False)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;QSVC<span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>QSVC(C=1.0, break_ties=False, cache_size=200, class_weight=None,\n",
586586
" decision_function_shape=&#x27;ovr&#x27;, max_iter=-1, probability=False,\n",
587-
" quantum_kernel=&lt;squlearn.kernel.matrix.projected_quantum_kernel.ProjectedQuantumKernel object at 0x0000017603089B40&gt;,\n",
587+
" quantum_kernel=&lt;squlearn.kernel.lowlevel_kernel.projected_quantum_kernel.ProjectedQuantumKernel object at 0x0000017603089B40&gt;,\n",
588588
" random_state=None, shrinking=True, tol=0.001, verbose=False)</pre></div> </div></div></div></div>"
589589
],
590590
"text/plain": [
591591
"QSVC(C=1.0, break_ties=False, cache_size=200, class_weight=None,\n",
592592
" decision_function_shape='ovr', max_iter=-1, probability=False,\n",
593-
" quantum_kernel=<squlearn.kernel.matrix.projected_quantum_kernel.ProjectedQuantumKernel object at 0x0000017603089B40>,\n",
593+
" quantum_kernel=<squlearn.kernel.lowlevel_kernel.projected_quantum_kernel.ProjectedQuantumKernel object at 0x0000017603089B40>,\n",
594594
" random_state=None, shrinking=True, tol=0.001, verbose=False)"
595595
]
596596
},

examples/kernel/example_regularization_mitigation.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@
160160
"name": "stdout",
161161
"output_type": "stream",
162162
"text": [
163-
"WARNING: Advanced option. Do not use it within an squlearn.kernel.ml workflow\n"
163+
"WARNING: Advanced option. Do not use it within an squlearn.kernel workflow\n"
164164
]
165165
},
166166
{

examples/kernel/qgpc_workflow.ipynb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -463,16 +463,16 @@
463463
"}\n",
464464
"</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>QGPC(copy_X_train=True, max_iter_predict=100, multi_class=&#x27;one_vs_rest&#x27;,\n",
465465
" n_jobs=None, n_restarts_optimizer=0, optimizer=&#x27;fmin_l_bfgs_b&#x27;,\n",
466-
" quantum_kernel=&lt;squlearn.kernel.matrix.fidelity_kernel.FidelityKernel object at 0x000001B61DF09B40&gt;,\n",
466+
" quantum_kernel=&lt;squlearn.kernel.lowlevel_kernel.fidelity_kernel.FidelityKernel object at 0x000001B61DF09B40&gt;,\n",
467467
" random_state=None)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;QGPC<span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>QGPC(copy_X_train=True, max_iter_predict=100, multi_class=&#x27;one_vs_rest&#x27;,\n",
468468
" n_jobs=None, n_restarts_optimizer=0, optimizer=&#x27;fmin_l_bfgs_b&#x27;,\n",
469-
" quantum_kernel=&lt;squlearn.kernel.matrix.fidelity_kernel.FidelityKernel object at 0x000001B61DF09B40&gt;,\n",
469+
" quantum_kernel=&lt;squlearn.kernel.lowlevel_kernel.fidelity_kernel.FidelityKernel object at 0x000001B61DF09B40&gt;,\n",
470470
" random_state=None)</pre></div> </div></div></div></div>"
471471
],
472472
"text/plain": [
473473
"QGPC(copy_X_train=True, max_iter_predict=100, multi_class='one_vs_rest',\n",
474474
" n_jobs=None, n_restarts_optimizer=0, optimizer='fmin_l_bfgs_b',\n",
475-
" quantum_kernel=<squlearn.kernel.matrix.fidelity_kernel.FidelityKernel object at 0x000001B61DF09B40>,\n",
475+
" quantum_kernel=<squlearn.kernel.lowlevel_kernel.fidelity_kernel.FidelityKernel object at 0x000001B61DF09B40>,\n",
476476
" random_state=None)"
477477
]
478478
},

examples/qnn/example_adam.ipynb

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
"from squlearn import Executor\n",
2424
"from squlearn.encoding_circuit import ChebyshevPQC\n",
2525
"from squlearn.observables import SummedPaulis\n",
26-
"from squlearn.qnn import QNNRegressor, SquaredLoss, get_variance_fac, ShotsFromRSTD\n",
26+
"from squlearn.qnn import QNNRegressor, SquaredLoss\n",
27+
"from squlearn.qnn.util import get_variance_fac, ShotsFromRSTD\n",
2728
"from squlearn.optimizers import Adam"
2829
]
2930
},
@@ -276,11 +277,8 @@
276277
}
277278
],
278279
"metadata": {
279-
"interpreter": {
280-
"hash": "26de051ba29f2982a8de78e945f0abaf191376122a1563185a90213a26c5da77"
281-
},
282280
"kernelspec": {
283-
"display_name": "Python 3.10.2 64-bit",
281+
"display_name": "venv",
284282
"language": "python",
285283
"name": "python3"
286284
},
@@ -294,7 +292,7 @@
294292
"name": "python",
295293
"nbconvert_exporter": "python",
296294
"pygments_lexer": "ipython3",
297-
"version": "3.10.10"
295+
"version": "3.12.7"
298296
},
299297
"orig_nbformat": 4
300298
},

0 commit comments

Comments
 (0)