qadence 1.11.1__py3-none-any.whl → 1.11.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. qadence/backend.py +33 -10
  2. qadence/backends/agpsr_utils.py +96 -0
  3. qadence/backends/api.py +8 -1
  4. qadence/backends/horqrux/backend.py +24 -10
  5. qadence/backends/horqrux/config.py +17 -1
  6. qadence/backends/horqrux/convert_ops.py +20 -97
  7. qadence/backends/jax_utils.py +5 -2
  8. qadence/backends/{gpsr.py → parameter_shift_rules.py} +48 -30
  9. qadence/backends/pulser/backend.py +16 -9
  10. qadence/backends/pulser/config.py +18 -0
  11. qadence/backends/pyqtorch/backend.py +25 -11
  12. qadence/backends/pyqtorch/config.py +18 -0
  13. qadence/blocks/embedding.py +10 -1
  14. qadence/blocks/primitive.py +2 -3
  15. qadence/blocks/utils.py +33 -24
  16. qadence/engines/differentiable_backend.py +7 -1
  17. qadence/engines/jax/differentiable_backend.py +7 -1
  18. qadence/engines/torch/differentiable_backend.py +12 -9
  19. qadence/engines/torch/differentiable_expectation.py +12 -11
  20. qadence/extensions.py +0 -10
  21. qadence/ml_tools/__init__.py +2 -0
  22. qadence/ml_tools/callbacks/callbackmanager.py +4 -2
  23. qadence/ml_tools/constructors.py +264 -4
  24. qadence/ml_tools/qcnn_model.py +158 -0
  25. qadence/model.py +113 -8
  26. qadence/parameters.py +2 -0
  27. qadence/serialization.py +1 -1
  28. qadence/transpile/__init__.py +3 -2
  29. qadence/transpile/block.py +58 -5
  30. qadence/types.py +2 -4
  31. qadence/utils.py +39 -8
  32. {qadence-1.11.1.dist-info → qadence-1.11.3.dist-info}/METADATA +22 -11
  33. {qadence-1.11.1.dist-info → qadence-1.11.3.dist-info}/RECORD +35 -33
  34. qadence-1.11.3.dist-info/licenses/LICENSE +13 -0
  35. qadence-1.11.1.dist-info/licenses/LICENSE +0 -202
  36. {qadence-1.11.1.dist-info → qadence-1.11.3.dist-info}/WHEEL +0 -0
@@ -1,8 +1,8 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from copy import deepcopy
4
- from functools import singledispatch
5
4
  from logging import getLogger
5
+ from functools import singledispatch
6
6
  from typing import Callable, Iterable, Type
7
7
 
8
8
  import sympy
@@ -42,13 +42,17 @@ def repeat(
42
42
 
43
43
 
44
44
  def set_trainable(
45
- blocks: AbstractBlock | list[AbstractBlock], value: bool = True, inplace: bool = True
45
+ blocks: AbstractBlock | list[AbstractBlock],
46
+ restricted_names: list[str] = list(),
47
+ value: bool = True,
48
+ inplace: bool = True,
46
49
  ) -> AbstractBlock | list[AbstractBlock]:
47
50
  """Set the trainability of all parameters in a block to a given value.
48
51
 
49
52
  Args:
50
53
  blocks (AbstractBlock | list[AbstractBlock]): Block or list of blocks for which
51
54
  to set the trainable attribute
55
+ restricted_names (list[str]): Restricted list of parameters names to set the value.
52
56
  value (bool, optional): The value of the trainable attribute to assign to the input blocks
53
57
  inplace (bool, optional): Whether to modify the block(s) in place or not. Currently, only
54
58
 
@@ -66,16 +70,65 @@ def set_trainable(
66
70
 
67
71
  if inplace:
68
72
  for block in blocks:
69
- params: list[sympy.Basic] = parameters(block)
73
+ params: list[sympy.Basic] = list(filter(lambda p: not p.is_number, parameters(block)))
74
+ if bool(restricted_names):
75
+ params = list(filter(lambda p: p.name in restricted_names, params))
70
76
  for p in params:
71
- if not p.is_number:
72
- p.trainable = value
77
+ p.trainable = value
73
78
  else:
74
79
  raise NotImplementedError("Not inplace set_trainable is not yet available")
75
80
 
76
81
  return blocks if len(blocks) > 1 else blocks[0]
77
82
 
78
83
 
84
+ def set_as_variational(
85
+ blocks: AbstractBlock | list[AbstractBlock],
86
+ restricted_names: list[str] = list(),
87
+ inplace: bool = True,
88
+ ) -> AbstractBlock | list[AbstractBlock]:
89
+ """Set parameters in blocks as variational (trainable parameters).
90
+
91
+ Args:
92
+ blocks (AbstractBlock | list[AbstractBlock]): Block or list of blocks for which
93
+ to set the trainable attribute
94
+ restricted_names (list[str]): Restricted list of parameters names to set the value.
95
+ inplace (bool, optional): Whether to modify the block(s) in place or not. Currently, only
96
+
97
+ Raises:
98
+ NotImplementedError: if the `inplace` argument is set to False, the function will
99
+ raise this exception
100
+
101
+ Returns:
102
+ AbstractBlock | list[AbstractBlock]: the input block or list of blocks with the trainable
103
+ attribute set to True
104
+ """
105
+ return set_trainable(blocks, restricted_names=restricted_names, inplace=inplace)
106
+
107
+
108
+ def set_as_fixed(
109
+ blocks: AbstractBlock | list[AbstractBlock],
110
+ restricted_names: list[str] = list(),
111
+ inplace: bool = True,
112
+ ) -> AbstractBlock | list[AbstractBlock]:
113
+ """Set parameters in blocks as fixed (non-trainable parameters).
114
+
115
+ Args:
116
+ blocks (AbstractBlock | list[AbstractBlock]): Block or list of blocks for which
117
+ to set the trainable attribute
118
+ restricted_names (list[str]): Restricted list of parameters names to set the value.
119
+ inplace (bool, optional): Whether to modify the block(s) in place or not. Currently, only
120
+
121
+ Raises:
122
+ NotImplementedError: if the `inplace` argument is set to False, the function will
123
+ raise this exception
124
+
125
+ Returns:
126
+ AbstractBlock | list[AbstractBlock]: the input block or list of blocks with the trainable
127
+ attribute set to False
128
+ """
129
+ return set_trainable(blocks, restricted_names=restricted_names, value=False, inplace=inplace)
130
+
131
+
79
132
  def validate(block: AbstractBlock) -> AbstractBlock:
80
133
  """Moves a block from global to local qubit numbers by adding PutBlocks.
81
134
 
qadence/types.py CHANGED
@@ -180,7 +180,7 @@ class AnsatzType(StrEnum):
180
180
  """Alternating Layer Ansatz."""
181
181
 
182
182
 
183
- class _DiffMode(StrEnum):
183
+ class DiffMode(StrEnum):
184
184
  """Differentiation modes to choose from."""
185
185
 
186
186
  GPSR = "gpsr"
@@ -246,11 +246,9 @@ class _Engine(StrEnum):
246
246
  try:
247
247
  module = importlib.import_module("qadence_extensions.types")
248
248
  BackendName = getattr(module, "BackendName")
249
- DiffMode = getattr(module, "DiffMode")
250
249
  Engine = getattr(module, "Engine")
251
250
  except ModuleNotFoundError:
252
251
  BackendName = _BackendName
253
- DiffMode = _DiffMode
254
252
  Engine = _Engine
255
253
 
256
254
 
@@ -432,7 +430,7 @@ class ReadOutOptimization(StrEnum):
432
430
  CONSTRAINED = "constrained"
433
431
 
434
432
 
435
- ParamDictType = dict[str, ArrayLike]
433
+ ParamDictType = dict[str, Union[ArrayLike, dict[str, ArrayLike]]]
436
434
  DifferentiableExpression = Callable[..., ArrayLike]
437
435
 
438
436
 
qadence/utils.py CHANGED
@@ -17,7 +17,7 @@ from torch.linalg import eigvals
17
17
  from rich.tree import Tree
18
18
 
19
19
  from qadence.blocks import AbstractBlock
20
- from qadence.types import Endianness, ResultType, TNumber
20
+ from qadence.types import Endianness, ResultType, TNumber, ParamDictType
21
21
 
22
22
  if TYPE_CHECKING:
23
23
  from qadence.operations import Projector
@@ -30,6 +30,28 @@ __all__ = [] # type: ignore
30
30
  logger = getLogger(__name__)
31
31
 
32
32
 
33
+ def merge_separate_params(param_dict: ParamDictType) -> ParamDictType:
34
+ """Merge circuit and observables parameters."""
35
+ merged_dict: ParamDictType = dict()
36
+ for p in param_dict.values():
37
+ merged_dict |= p
38
+ return merged_dict
39
+
40
+
41
+ def check_param_dict_values(param_dict: ParamDictType) -> bool:
42
+ """Check if `param_dict` contains array values.
43
+
44
+ Args:
45
+ param_dict (ParamDictType): Dictionary of parameters.
46
+
47
+ Returns:
48
+ bool: True if values are arrays, False if values are dict.
49
+ """
50
+ if all(isinstance(p, dict) for p in param_dict.values()):
51
+ return False
52
+ return True
53
+
54
+
33
55
  def basis_to_int(basis: str, endianness: Endianness = Endianness.BIG) -> int:
34
56
  """
35
57
  Converts a computational basis state to an int.
@@ -318,14 +340,23 @@ def block_to_mathematical_expression(block: Tree | AbstractBlock) -> str:
318
340
  [block_to_mathematical_expression(block_child) for block_child in block_tree.children]
319
341
  )
320
342
  if "mul" in block_title:
321
- block_title = re.findall("\d+\.\d+", block_title)[0]
322
- coeff = float(block_title)
323
- if coeff == 0:
324
- block_title = ""
325
- elif coeff == 1:
326
- block_title = block_to_mathematical_expression(block_tree.children[0])
327
- else:
343
+ block_title = re.findall("\[mul:\s*(.+?)\]", block_title)[0]
344
+
345
+ try:
346
+ if "." in block_title:
347
+ coeff = float(block_title)
348
+ else:
349
+ coeff = int(block_title)
350
+ if coeff == 0:
351
+ block_title = ""
352
+ elif coeff == 1:
353
+ block_title = block_to_mathematical_expression(block_tree.children[0])
354
+ else:
355
+ block_title += " * " + block_to_mathematical_expression(block_tree.children[0])
356
+
357
+ except ValueError: # In case block_title is a non-numeric str (e.g. parameter name)
328
358
  block_title += " * " + block_to_mathematical_expression(block_tree.children[0])
359
+
329
360
  first_part = block_title[:3]
330
361
  if first_part in [" + ", " ⊗ ", " * "]:
331
362
  block_title = block_title[3:]
@@ -1,17 +1,18 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qadence
3
- Version: 1.11.1
3
+ Version: 1.11.3
4
4
  Summary: Pasqal interface for circuit-based quantum computing SDKs
5
- Author-email: Aleksander Wennersteen <aleksander.wennersteen@pasqal.com>, Gert-Jan Both <gert-jan.both@pasqal.com>, Niklas Heim <niklas.heim@pasqal.com>, Mario Dagrada <mario.dagrada@pasqal.com>, Vincent Elfving <vincent.elfving@pasqal.com>, Dominik Seitz <dominik.seitz@pasqal.com>, Roland Guichard <roland.guichard@pasqal.com>, "Joao P. Moutinho" <joao.moutinho@pasqal.com>, Vytautas Abramavicius <vytautas.abramavicius@pasqal.com>, Gergana Velikova <gergana.velikova@pasqal.com>, Eduardo Maschio <eduardo.maschio@pasqal.com>, Smit Chaudhary <smit.chaudhary@pasqal.com>, Ignacio Fernández Graña <ignacio.fernandez-grana@pasqal.com>, Charles Moussa <charles.moussa@pasqal.com>, Giorgio Tosti Balducci <giorgio.tosti-balducci@pasqal.com>, Daniele Cucurachi <daniele.cucurachi@pasqal.com>, Pim Venderbosch <pim.venderbosch@pasqal.com>, Manu Lahariya <manu.lahariya@pasqal.com>
6
- License: Apache 2.0
5
+ Author-email: Aleksander Wennersteen <aleksander.wennersteen@pasqal.com>, Gert-Jan Both <gert-jan.both@pasqal.com>, Niklas Heim <niklas.heim@pasqal.com>, Mario Dagrada <mario.dagrada@pasqal.com>, Vincent Elfving <vincent.elfving@pasqal.com>, Dominik Seitz <dominik.seitz@pasqal.com>, Roland Guichard <roland.guichard@pasqal.com>, "Joao P. Moutinho" <joao.moutinho@pasqal.com>, Vytautas Abramavicius <vytautas.abramavicius@pasqal.com>, Gergana Velikova <gergana.velikova@pasqal.com>, Eduardo Maschio <eduardo.maschio@pasqal.com>, Smit Chaudhary <smit.chaudhary@pasqal.com>, Ignacio Fernández Graña <ignacio.fernandez-grana@pasqal.com>, Charles Moussa <charles.moussa@pasqal.com>, Giorgio Tosti Balducci <giorgio.tosti-balducci@pasqal.com>, Daniele Cucurachi <daniele.cucurachi@pasqal.com>, Pim Venderbosch <pim.venderbosch@pasqal.com>, Manu Lahariya <manu.lahariya@pasqal.com>, Sungwoo Ahn <sungwoo.ahn@pasqal.com>
6
+ License: PASQAL OPEN-SOURCE SOFTWARE LICENSE (MIT-derived)
7
7
  License-File: LICENSE
8
- Classifier: License :: OSI Approved :: Apache Software License
8
+ Classifier: License :: Other/Proprietary License
9
9
  Classifier: Programming Language :: Python
10
10
  Classifier: Programming Language :: Python :: 3
11
11
  Classifier: Programming Language :: Python :: 3.9
12
12
  Classifier: Programming Language :: Python :: 3.10
13
13
  Classifier: Programming Language :: Python :: 3.11
14
14
  Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
15
16
  Classifier: Programming Language :: Python :: Implementation :: CPython
16
17
  Classifier: Programming Language :: Python :: Implementation :: PyPy
17
18
  Requires-Python: >=3.9
@@ -23,11 +24,11 @@ Requires-Dist: nevergrad
23
24
  Requires-Dist: numpy
24
25
  Requires-Dist: openfermion
25
26
  Requires-Dist: pasqal-cloud
26
- Requires-Dist: pyqtorch==1.7.2
27
+ Requires-Dist: pyqtorch==1.7.6
27
28
  Requires-Dist: pyyaml
28
29
  Requires-Dist: rich
29
30
  Requires-Dist: scipy
30
- Requires-Dist: sympy<1.13
31
+ Requires-Dist: sympy<1.13.4
31
32
  Requires-Dist: sympytorch>=0.1.2
32
33
  Requires-Dist: tensorboard>=2.12.0
33
34
  Requires-Dist: torch
@@ -43,21 +44,31 @@ Requires-Dist: nvidia-pyindex; extra == 'dlprof'
43
44
  Provides-Extra: horqrux
44
45
  Requires-Dist: einops; extra == 'horqrux'
45
46
  Requires-Dist: flax; extra == 'horqrux'
46
- Requires-Dist: horqrux==0.7.0; extra == 'horqrux'
47
+ Requires-Dist: horqrux==0.8.1; extra == 'horqrux'
47
48
  Requires-Dist: jax; extra == 'horqrux'
48
49
  Requires-Dist: jaxopt; extra == 'horqrux'
49
50
  Requires-Dist: optax; extra == 'horqrux'
50
51
  Requires-Dist: sympy2jax; extra == 'horqrux'
52
+ Provides-Extra: hub
53
+ Requires-Dist: qadence-measurement; extra == 'hub'
54
+ Requires-Dist: qadence-mitigation; extra == 'hub'
55
+ Requires-Dist: qadence-model; extra == 'hub'
51
56
  Provides-Extra: libs
52
57
  Requires-Dist: qadence-libs; extra == 'libs'
58
+ Provides-Extra: measurement
59
+ Requires-Dist: qadence-measurement; extra == 'measurement'
60
+ Provides-Extra: mitigation
61
+ Requires-Dist: qadence-mitigation; extra == 'mitigation'
53
62
  Provides-Extra: mlflow
54
63
  Requires-Dist: mlflow; extra == 'mlflow'
64
+ Provides-Extra: model
65
+ Requires-Dist: qadence-model; extra == 'model'
55
66
  Provides-Extra: protocols
56
67
  Requires-Dist: qadence-protocols; extra == 'protocols'
57
68
  Provides-Extra: pulser
58
69
  Requires-Dist: pasqal-cloud==0.20.2; extra == 'pulser'
59
- Requires-Dist: pulser-core==1.3.0; extra == 'pulser'
60
- Requires-Dist: pulser-simulation==1.3.0; extra == 'pulser'
70
+ Requires-Dist: pulser-core==1.4.0; extra == 'pulser'
71
+ Requires-Dist: pulser-simulation==1.4.0; extra == 'pulser'
61
72
  Provides-Extra: visualization
62
73
  Requires-Dist: graphviz; extra == 'visualization'
63
74
  Description-Content-Type: text/markdown
@@ -84,7 +95,7 @@ programs** with tunable qubit interactions and arbitrary register topologies rea
84
95
  [![Tests](https://github.com/pasqal-io/qadence/actions/workflows/test_fast.yml/badge.svg)](https://github.com/pasqal-io/qadence/actions/workflows/test_fast.yml)
85
96
  [![Documentation](https://github.com/pasqal-io/qadence/actions/workflows/build_docs.yml/badge.svg)](https://pasqal-io.github.io/qadence/latest)
86
97
  [![Pypi](https://badge.fury.io/py/qadence.svg)](https://pypi.org/project/qadence/)
87
- [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
98
+ [![License](https://img.shields.io/badge/License-MIT--derived-yellow.svg)](https://opensource.org/licenses/MIT)
88
99
  ![Coverage](https://img.shields.io/codecov/c/github/pasqal-io/qadence?style=flat-square)
89
100
 
90
101
 
@@ -215,4 +226,4 @@ doi = {10.1109/MS.2025.3536607}
215
226
  ```
216
227
 
217
228
  ## License
218
- Qadence is a free and open source software package, released under the Apache License, Version 2.0.
229
+ Qadence is a free and open source software package, released under the PASQAL OPEN-SOURCE SOFTWARE LICENSE (MIT-derived).
@@ -1,26 +1,26 @@
1
1
  qadence/__init__.py,sha256=c3y-Tbq_P4cbWKi7b45Z6zUFlnqgd8Q68OOpL2O2GOI,2671
2
- qadence/backend.py,sha256=MigWAAroh_STGLg2qoQED9tDHmTo15uBbvFNz_oHy7A,13372
2
+ qadence/backend.py,sha256=dcgGHncwK5Ul7COVccUyxGOKqbTuoK-KVLZ1qL7Abx8,14166
3
3
  qadence/circuit.py,sha256=r8QvzLWHvavqLOlNstq8aHg6UpKmPClEDoZVBkk-tzY,6970
4
4
  qadence/decompose.py,sha256=C4LYia_GcC9Rx3QO0ZLWTI9dN63a8WTEAXO0ZVQWuiE,5221
5
5
  qadence/divergences.py,sha256=JhpELhWSnuDvQxa9hJp_DE3EQg2Ban-Ta0mHZ_fVrHg,1832
6
6
  qadence/execution.py,sha256=SoB5n8mRQ6mxY9JqnqrrU5hY-M72WQOpnZC25PBM_dA,9670
7
- qadence/extensions.py,sha256=Bx2cMsBq3sNTnmwPoqQF-7Tks-FspXb1fTl6zncJFUE,6068
7
+ qadence/extensions.py,sha256=TqkUGhc7vVUQeGsfuPruQ_Q3Vp7QQVHsHC_dayZ5EXU,5754
8
8
  qadence/libs.py,sha256=HetkKO8TCTlVCViQdVQJvxwBekrhd-y_iMox4UJMY1M,410
9
9
  qadence/log_config.yaml,sha256=QiwoB1bnRdk9NpxnvfgWX2PjN7EDfYlrc3GVD38rtdI,739
10
10
  qadence/logger.py,sha256=Hb76pK3VyQjVjJb4_NqFlOJgjYJVa8t7DHJFlzOM86M,407
11
- qadence/model.py,sha256=88zou7mge3JVFhed_X9Zr83QRh3Bq17GRCzVbru-B44,22581
11
+ qadence/model.py,sha256=dVabrxs4lJjgx5FXXcq9AmEr81zPrctCmLuWHxXptVc,27128
12
12
  qadence/overlap.py,sha256=ekaUnIcQWdF4hSFuUWpRjaxo43JyDGFOayP7vMXCZpw,16821
13
- qadence/parameters.py,sha256=RDYklyW5EQZTjsAazEXa4lLGDOdmUUU53hLj385uSaI,12687
13
+ qadence/parameters.py,sha256=g7OET8_HLjo1zKlX6WNCeSPtgzC3WMl6hVPAVZ9uiHU,12744
14
14
  qadence/pasqal_cloud_connection.py,sha256=1lz_AJRo54-YMnsYGJD_SFpUK-0_ZzJRWr9Qqa_pBZU,9675
15
15
  qadence/protocols.py,sha256=bcYTxSjgMPV-a-D6yv90jCpnGik8myzaNpFv9z1gzJ0,442
16
16
  qadence/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  qadence/qubit_support.py,sha256=Nkn1Q01RVViTcggSIom7EFKdWpAuM4TMGwBZ5feCUxA,2120
18
18
  qadence/register.py,sha256=MlI1-L1P_e7ugjelhH-1YdxrfPsgmLmX5m-dueawuWQ,13172
19
19
  qadence/serial_expr_grammar.peg,sha256=z5ytL7do9kO8o4h-V5GrsDuLdso0KsRcMuIYURFfmAY,328
20
- qadence/serialization.py,sha256=qEET6Gu9u2aSibPve3bJrqDzK2_gO3RPDJjt4ZY8GbE,15596
20
+ qadence/serialization.py,sha256=IB0OgYhtV3F9AmMMMbGcfgNil9vBzs92j5G3yj4KPhg,15616
21
21
  qadence/states.py,sha256=Aj28aNHGWkZrFw_mKpHrxCA1bDXlkFhw18D70tg0RF0,15953
22
- qadence/types.py,sha256=0BCE73k1WctddT2c6oC0dTnwEEXlEEMkCsLKmYGfcD0,11967
23
- qadence/utils.py,sha256=d1SOuPgYGODrVzqjZzDgsT4jQIttpjHtznuLiSAvou0,11400
22
+ qadence/types.py,sha256=HtOKf6xi-kTtncqctRWK0Wpxut7KEXHdqoQVqfx0vxo,11927
23
+ qadence/utils.py,sha256=fChJDz7OelWNGLPjoBBcmleWGluWhR36Mf0LnqCx8FA,12376
24
24
  qadence/analog/__init__.py,sha256=BCyS9R4KUjzUXN0Ax3b0eMo8ZAuSkGoJQVtZ4_pvAFs,279
25
25
  qadence/analog/addressing.py,sha256=GSt4heEmRkBmoQIgdgkTclEFxZY-jjuAd77_SsZtGdI,6513
26
26
  qadence/analog/constants.py,sha256=B2phQoN1ASL8CwM-Dsa1rbraYwGwwPSeiB3HbVe-MPA,1243
@@ -28,37 +28,38 @@ qadence/analog/device.py,sha256=t7oGjiZhk28IG2C-SVkc0RNSlV1L4SXV-tkLNiSYFNM,2570
28
28
  qadence/analog/hamiltonian_terms.py,sha256=9LKidqqEMJTTdXeaxkxP_otTmcv9i4yeJ-JKCLOCK3Y,3421
29
29
  qadence/analog/parse_analog.py,sha256=9Y_LMdw4wCHH6YSkvHhs6PUNwzT14HS7cUGheNSmDQg,4168
30
30
  qadence/backends/__init__.py,sha256=ibm7wmZxuIoMYAQxgAx0MsfLYWOVHNWgLwyS1HjMuuI,215
31
- qadence/backends/api.py,sha256=IPqxgJ1yJ1Z_yx37DSADro21C7ArGbfneYoFhDfttOI,2651
32
- qadence/backends/gpsr.py,sha256=HW5m6iHLq3hLHdJoU1q1i1laR0hBs7uCniXqrsFoNCI,5616
33
- qadence/backends/jax_utils.py,sha256=VfKhqCKknHDWZO21UFipWH_Lkiq175Z5GkP49gWjbyw,5038
31
+ qadence/backends/agpsr_utils.py,sha256=CfjMG3S4ws5M3PImbjhg8KEAzRPKuh7h5YR8WpHgzas,2965
32
+ qadence/backends/api.py,sha256=54l6a0sUSkSN1AEjZPaMXGwg0JNjl2i0GWAJ828QFII,3095
33
+ qadence/backends/jax_utils.py,sha256=n-m4_q795Uw01ra-sNsqarF03d47TxHSyMMnu3K3WBg,5268
34
+ qadence/backends/parameter_shift_rules.py,sha256=CV_pU09HbipKrWGpFBRa5DJ-t2RRm0tstAJdEee-TzM,6654
34
35
  qadence/backends/utils.py,sha256=SSiMxZjaFS8e8sB6ZBLXPKuJNQGl93pRMy9hnI4oDrw,9104
35
36
  qadence/backends/horqrux/__init__.py,sha256=0OdVy6cq0oQggV48LO1WXdaZuSkDkz7OYNEPIkNAmfk,140
36
- qadence/backends/horqrux/backend.py,sha256=KNFFGN9dsgB9QKtNXiP3LyMY9DQ-7W7ScyE6k29fHJY,8842
37
- qadence/backends/horqrux/config.py,sha256=xz7JlUcwW_4JAbvProbSI9hA1SXZRRAN0Hr2bvmLzfg,892
38
- qadence/backends/horqrux/convert_ops.py,sha256=lUQ3faf3Y4MvIzWzczHLVLs9f9iPij0Dy8JgSHx9ufo,8647
37
+ qadence/backends/horqrux/backend.py,sha256=4M_23e0oGbcC_PUHpig8V1rNboI8xKATtp92guOTqPQ,9489
38
+ qadence/backends/horqrux/config.py,sha256=m8rroGPBwvzuHoCDPB4VlNQaKBPp7Rbgrb8KHINpTEo,1415
39
+ qadence/backends/horqrux/convert_ops.py,sha256=3vjzbMGEFH4CUzIDFdvmPbyT5_gecHLMoLxQ_ATFhSw,6327
39
40
  qadence/backends/pulser/__init__.py,sha256=capQ-eHqwtOeLf4mWsI0BIseAHhiLGie5cFD4-iVhUo,116
40
- qadence/backends/pulser/backend.py,sha256=cI4IgijPpItNdDmLpKkJFas0X02wMiZd_XmVas41gEI,14846
41
+ qadence/backends/pulser/backend.py,sha256=xHIv4CVm2VxLko6yYioRyXLs_PiQtZZXZsTDhf7qMgI,15157
41
42
  qadence/backends/pulser/channels.py,sha256=ZF0yEXUFHAmi3IdeXjzdTNGR5NzaRRFTiUpUGVg2sO4,329
42
43
  qadence/backends/pulser/cloud.py,sha256=0uUluvbFV9sOuCPraE-9uiVtC3Q8QaDY1IJMDi8grDM,2057
43
- qadence/backends/pulser/config.py,sha256=aoHDmtgq5i0Zryxenw_p3uARY0B1w-UaYvfqDmrWHM0,2175
44
+ qadence/backends/pulser/config.py,sha256=crIv1IJDk7uMZiQa994sDPqKKLHDH0RC17JYv_6N1cY,2708
44
45
  qadence/backends/pulser/convert_ops.py,sha256=wyttkkjPimI0OOYERS4S4w1F2j270v5iRuV1cm6Siu0,1814
45
46
  qadence/backends/pulser/devices.py,sha256=DermLZNfmCB3SqteKVW4uhg4jp6ya1G6ptnXbBnJogI,2448
46
47
  qadence/backends/pulser/pulses.py,sha256=F4fExIRAhLPMtVg1bhNtDihUYHxu5RExGjovk8-CQIo,11884
47
48
  qadence/backends/pulser/waveforms.py,sha256=0uz95b7rUaUUtN0tuHBZmJ0H6UBmfHST_59ozwsRCzg,2227
48
49
  qadence/backends/pyqtorch/__init__.py,sha256=0OdVy6cq0oQggV48LO1WXdaZuSkDkz7OYNEPIkNAmfk,140
49
- qadence/backends/pyqtorch/backend.py,sha256=Sjuof9b332w4gk9o8Rso2rgSHxskexfkIazRfxRD0Ng,11458
50
- qadence/backends/pyqtorch/config.py,sha256=sAxWVSkWvj6Lu0em1KJCDb6nfjqe8Dsxi7pyh6qYJpA,2387
50
+ qadence/backends/pyqtorch/backend.py,sha256=JXfZiFu-9PYZbO_C7rZ7Bg8vbzNwpUujZQ3KHKaeCuk,12034
51
+ qadence/backends/pyqtorch/config.py,sha256=v3IUzyGSsXPBE5WeAZo7PegrIoEeuztCyYm8u3IwNho,2920
51
52
  qadence/backends/pyqtorch/convert_ops.py,sha256=qG26-HmtUDaZO0KDnw2sbT3CRx_poS7eqJ3dn9wpWgc,13457
52
53
  qadence/blocks/__init__.py,sha256=H6jEA_CptkE-eoB4UfSbUiDszbxxhZwECV_TgoZWXoU,960
53
54
  qadence/blocks/abstract.py,sha256=DSQUE71rMyRBwAP--4Tx1WQC_LCXaNlftjd7goGyrpQ,12027
54
55
  qadence/blocks/analog.py,sha256=ymnnlSVoW1XL05ZvnnHCqRTHuOXIEY_7E9M0PNKJZy4,10812
55
56
  qadence/blocks/block_to_tensor.py,sha256=DceLKuyjhG87QGsl34lk1CXHtris42Sc8A7bavGrRA0,17207
56
57
  qadence/blocks/composite.py,sha256=f9D8L3u5Ktu_-xDBWsWiPlY8I-YW5YFgU18BtqwFHK0,8937
57
- qadence/blocks/embedding.py,sha256=MI-gTPEe1e56AiHJr6MJwMAHdA7ZYmTo0b0VmFfyISQ,7029
58
+ qadence/blocks/embedding.py,sha256=2odczunlLSl_8jx94SsHnt_WHpo09Zxt96BGwzoeoL8,7212
58
59
  qadence/blocks/manipulate.py,sha256=kPmzej7mnWFoqTJA2CkGulT7hcPha0GGPARC8rjZltg,2387
59
60
  qadence/blocks/matrix.py,sha256=JgzFLWoWDytaE0MEYe-Di7tbwb4jSmMF8tsOF04RIRo,4214
60
- qadence/blocks/primitive.py,sha256=GLruKpiFBStWVd_M9mzLr3MqDNPbyaMUzEVB6xV3cPQ,17657
61
- qadence/blocks/utils.py,sha256=_V43qD7kQNK8JS3gxfpkRn56ZIF_GGrhAnARn1hq2hk,17772
61
+ qadence/blocks/primitive.py,sha256=21D7YIWw8N_uWcZwM9-DtyqQJ-8Ng1tZIJL4zaSK6uQ,17644
62
+ qadence/blocks/utils.py,sha256=zdpaIh-OYFnLIWdnL-ogY8RONt5Yk-nUqSArXnhKy5E,18052
62
63
  qadence/constructors/__init__.py,sha256=LiFkGzgMa27LrY1LhINfmj3UWfrjoUk9wwRM9a54rK0,1211
63
64
  qadence/constructors/ala.py,sha256=76rdD_vMki5F_r_Iq-68zU3NHrJiebVmr-e7L4lIDAo,8359
64
65
  qadence/constructors/feature_maps.py,sha256=BaAxFi6fSKwjsfFjqZ8T7lyZfjotcgH2OW3b0j67YVk,8644
@@ -82,13 +83,13 @@ qadence/draw/assets/dark/measurement.svg,sha256=6ALGjaCX3xZ1NqB6RW6yzOchzZV-j8uk
82
83
  qadence/draw/assets/light/measurement.png,sha256=q6AMI7Lmb1O42sEzvSiK9ZtyTpXOGj-zIAh4FiPbhsk,278
83
84
  qadence/draw/assets/light/measurement.svg,sha256=kL424wtIEU7ihxecZnthyYnvHhNW_F75daoO9pBHNiw,7282
84
85
  qadence/engines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
- qadence/engines/differentiable_backend.py,sha256=o9fuXapvoWB4Rr0QsQP3YRFe1Wdq-Fhww0NUvWR7oqA,5896
86
+ qadence/engines/differentiable_backend.py,sha256=VLi2QiBdGU0MXDr39tOfL26p8gcVT6JYB4hNGT_QEI0,5921
86
87
  qadence/engines/jax/__init__.py,sha256=qcW09lcnblwRVQM6mDmW9su5kDVPe--buWCCuvPbOVM,223
87
- qadence/engines/jax/differentiable_backend.py,sha256=FcSrzzjzb0zfXC0-4mUJ6UB-wGO5RnNjQOGPAsM25zs,3076
88
+ qadence/engines/jax/differentiable_backend.py,sha256=EnuhC1kW0Lkf1voZcIQjgO9PuBa3T3Td0kwgAKhnQwU,3101
88
89
  qadence/engines/jax/differentiable_expectation.py,sha256=rn_l7IH-S4IvuAcyAIgyEuMZOIqswu5Nsfz0JffXjaE,3694
89
90
  qadence/engines/torch/__init__.py,sha256=iZFdD32ot0B0CVyC-f5dVViOBnqoalxa6M9Lj4WQuPE,160
90
- qadence/engines/torch/differentiable_backend.py,sha256=uQfyGg-25MAc0soK1FyvJ2FJakRuv5_5DOy7OPiZYg8,3567
91
- qadence/engines/torch/differentiable_expectation.py,sha256=kc4WTos7d65DDmao6YSrpTM0rCBnpqhGK4xLHm_K4yk,10351
91
+ qadence/engines/torch/differentiable_backend.py,sha256=ySWpMXLtt4HhuqTu58098p7qGKbUrEniBDf1jZppZBQ,3458
92
+ qadence/engines/torch/differentiable_expectation.py,sha256=zHJbgl1elBU6QN_NBQ348lYsxvKtGdnVs6sEbkCsX98,10374
92
93
  qadence/exceptions/__init__.py,sha256=BU6vWrI9mshzr1aTPm1Ticr_o_42GjTrWI4OZXhThsI,203
93
94
  qadence/exceptions/exceptions.py,sha256=4j_VJpx2sZ2Mir5BJUWu4nwb131FY1ygO4q8-XlyfRc,190
94
95
  qadence/measurements/__init__.py,sha256=RIjG9tVJMqhNzyj7maZI250Um0KgHl2PizDcKJag-JU,161
@@ -101,20 +102,21 @@ qadence/mitigations/__init__.py,sha256=RzaxYJftePFMloGhBVSixZ8fSe-ps_Jc-EyPm6xz-
101
102
  qadence/mitigations/analog_zne.py,sha256=KGtdq3TmqipIVP-0U3mIkF_xf91dWbB3SYkM_26plaY,7895
102
103
  qadence/mitigations/protocols.py,sha256=0TeHvlGTN8_88XNEwrjA97C5BUlrh34wYmx0w6-5Tyw,1622
103
104
  qadence/mitigations/readout.py,sha256=nI-voV5N0R7630Cn8t8x9EdV9iB76P0LDkRosy1s0Ec,6631
104
- qadence/ml_tools/__init__.py,sha256=Z744FRFAzU5iw-4JC5YC43mDQD6rTa5ApdkWbUFuTbQ,970
105
+ qadence/ml_tools/__init__.py,sha256=AG0WaQTvP_jXVx4xmiFWroYZ53ydFzrmTXcXC6nV7Wg,1011
105
106
  qadence/ml_tools/config.py,sha256=0qN0FVXRwYNMLGKgvk70cHTnEbl5_p83dU85sIyXls4,22728
106
- qadence/ml_tools/constructors.py,sha256=L_oai1uOUK_jQW0G18lgBS2vZ5QJtmT4mvCnjGsHvzc,27938
107
+ qadence/ml_tools/constructors.py,sha256=rfJ4VqUbhwnCMtOm3oQ94N_DmGCLtljPlhsCaDGQ2FY,36227
107
108
  qadence/ml_tools/data.py,sha256=-HUQk3-0UHOBA4KMFQ63tlt3si4W66psbgR1DAjtoVE,5481
108
109
  qadence/ml_tools/models.py,sha256=v3zRLuLN2IyTaL3eTNbdS65E1UeQV-mcZD3uIPJ6Eng,19112
109
110
  qadence/ml_tools/optimize_step.py,sha256=21m2Wxmxkj_kMHQnKygOWqFdcO-wi5CnMnIZTGEw9IM,3300
110
111
  qadence/ml_tools/parameters.py,sha256=gew2Kq_5-RgRpaTvs8eauVhgo0sTqqDQEV6WHFEiLGM,1301
112
+ qadence/ml_tools/qcnn_model.py,sha256=2ua_SuaXC9nJKtBnMCKkU3b_gMwRijIeBPj16YsfN2I,5369
111
113
  qadence/ml_tools/stages.py,sha256=qW2phMIvQBLM3tn2UoGN-ePiBnZoNq5k844eHVnnn8Y,1407
112
114
  qadence/ml_tools/tensors.py,sha256=xZ9ZRzOqEaMgLUGWQf1najDmL6iLuN1ojCGVFs1Tm94,1337
113
115
  qadence/ml_tools/trainer.py,sha256=rAm4hpXpPSt1pCWUtMenVBsRXiodwBpUpmWWMP1duDs,34914
114
116
  qadence/ml_tools/utils.py,sha256=PW8FyoV0mG_DtN1U8njTDV5qxZ0EK4mnFwMAsLBArfk,1410
115
117
  qadence/ml_tools/callbacks/__init__.py,sha256=pTdfjulDGNKca--9BgrdmMyvJSah_0spp929Th6RzC8,913
116
118
  qadence/ml_tools/callbacks/callback.py,sha256=JVY1BtPItCx11oAa1-3wICZyDfDLFdc5pmjTbfASHqA,29929
117
- qadence/ml_tools/callbacks/callbackmanager.py,sha256=XT0MLB7c1iIJ2N0_MTnh4DDubaVhc_WmI7M2_De1YLs,8087
119
+ qadence/ml_tools/callbacks/callbackmanager.py,sha256=hHk1WhOqcSlQq0ANVTFzkxJ4zYnA__Z1bSLMXuJlxG0,8186
118
120
  qadence/ml_tools/callbacks/saveload.py,sha256=2z8v1A3qIIPZuusEcSNqgYTnKGKkDj71KvY_atJvKnM,6015
119
121
  qadence/ml_tools/callbacks/writer_registry.py,sha256=M26u3wcZ27qtrWKpMk03wQEdNEVbxOhz4LEB2GDYP_w,15398
120
122
  qadence/ml_tools/information/__init__.py,sha256=ShyaFJtSRmahI8dIRgDlfjp8XobJ23GTd7X3kU-5F34,88
@@ -135,16 +137,16 @@ qadence/operations/control_ops.py,sha256=fPSwOxJaVtJNbwri1UdD20W1JXQlB-inPTCJG3F
135
137
  qadence/operations/ham_evo.py,sha256=brJ11tlwj6UPYkUcnId-BKlzNStsZd0vp9FKHCFTjlM,10642
136
138
  qadence/operations/parametric.py,sha256=kV5d-diaQAoRlqKqoo0CGCbPej6eAxHQXniqfFKff3g,5394
137
139
  qadence/operations/primitive.py,sha256=hPJMDgWaEEdSYDZsr__hAcwy-QJEtzbM4qtFDcLmNBg,9881
138
- qadence/transpile/__init__.py,sha256=JrrQ4Osc4nNRWWjRGmVn57fWc8WwF92MokhKLRZ1vVA,499
140
+ qadence/transpile/__init__.py,sha256=AuWxqao_KFOJOfmlBRASqwbhFYbu1MM1f-pMTRBvFNc,543
139
141
  qadence/transpile/apply_fn.py,sha256=glZo2_wMOjw7_KgWKYbqg8j-9SDs-RefWIfxWgdQK8I,1336
140
- qadence/transpile/block.py,sha256=jV-EyatrwwdL2ahjF3wyEhC3PKMBPLaL5sQN1VNFc_w,11582
142
+ qadence/transpile/block.py,sha256=qsGixA8MVGwEh4-j7qR8H4UapKdOyufFGA1TyHWQVAg,13783
141
143
  qadence/transpile/circuit.py,sha256=KTh6Gv1czZddFuA1JhNNszheZbwViVixiGh4rGvIgTM,451
142
144
  qadence/transpile/digitalize.py,sha256=7oNHEBs50ff3rvP-Tb72tCQ5sk6vMpoQvz4CXyvH6Tc,1521
143
145
  qadence/transpile/flatten.py,sha256=k4HAfVzvDV40HyfaukiEHyJtAtvFRIcyDbAWiCL8tf0,3425
144
146
  qadence/transpile/invert.py,sha256=IeyidgBwECCKB0i7Ym0KkLyfcx42LyT2mbqkfbK1H8M,4843
145
147
  qadence/transpile/noise.py,sha256=LDcDJtQGkgUPkL2t69gg6AScTb-p3J3SxCDZbYOu1L8,1668
146
148
  qadence/transpile/transpile.py,sha256=xnzkHA6Qdb-Y5Fv9Latrolrpw44N6_OKc7_QGt70f0I,2713
147
- qadence-1.11.1.dist-info/METADATA,sha256=BrS9vWyf87UbydethjWshIbhObTb9Nu5DleYwC8q154,10211
148
- qadence-1.11.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
149
- qadence-1.11.1.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
150
- qadence-1.11.1.dist-info/RECORD,,
149
+ qadence-1.11.3.dist-info/METADATA,sha256=KnEzhBVUnxeEgo778rmcj9l5R_otThJo6lUH6sKyuMI,10752
150
+ qadence-1.11.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
151
+ qadence-1.11.3.dist-info/licenses/LICENSE,sha256=IfA3wQpmMOjCnDZ0P8Od2Bxb39rND9s5zfGHp1vMTbQ,2359
152
+ qadence-1.11.3.dist-info/RECORD,,
@@ -0,0 +1,13 @@
1
+ PASQAL OPEN-SOURCE SOFTWARE LICENSE AGREEMENT (MIT-derived)
2
+
3
+ The author of the License is:
4
+ Pasqal, a Société par Actions Simplifiée (Simplified Joint Stock Company) registered under number 849 441 522 at the Registre du commerce et des sociétés (Trade and Companies Register) of Evry – France, headquartered at 24 rue Émile Baudot – 91120 – Palaiseau – France, duly represented by its Président, M. Georges-Olivier REYMOND, Hereafter referred to as « the Licensor »
5
+
6
+ - Permission is hereby granted, free of charge, to any person obtaining a copy of this software (the “Licensee”) and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. The Software is “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and non-infringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise arising from, out of or in connection with the Software or the use or other dealings in the Software.
8
+
9
+ - If use of the Software leads to the necessary use of any patent of the Licensor and/or any of its Affiliates (defined as a company owned or controlled by the Licensor), the Licensee is granted a royalty-free license, in any country where such patent is in force, to use the object of such patent; or use the process covered by such patent,
10
+
11
+ - Such a patent license is granted for internal research or academic use of the Licensee's, which includes use by employees and students of the Licensee, acting on behalf of the Licensee, for research purposes only.
12
+
13
+ - The License is governed by the laws of France. Any dispute relating to the License, notably its execution, performance and/or termination shall be brought to, heard and tried by the Tribunal Judiciaire de Paris, regardless of the rules of jurisdiction in the matter.