qadence 1.5.1__tar.gz → 1.5.2__tar.gz

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 (156) hide show
  1. {qadence-1.5.1 → qadence-1.5.2}/.pre-commit-config.yaml +1 -1
  2. {qadence-1.5.1 → qadence-1.5.2}/PKG-INFO +31 -30
  3. {qadence-1.5.1 → qadence-1.5.2}/README.md +27 -27
  4. qadence-1.5.2/mkdocs.yml +171 -0
  5. {qadence-1.5.1 → qadence-1.5.2}/pyproject.toml +4 -2
  6. qadence-1.5.2/qadence/serial_expr_grammar.peg +11 -0
  7. {qadence-1.5.1 → qadence-1.5.2}/qadence/serialization.py +190 -65
  8. {qadence-1.5.1 → qadence-1.5.2}/qadence/utils.py +8 -2
  9. qadence-1.5.1/mkdocs.yml +0 -161
  10. {qadence-1.5.1 → qadence-1.5.2}/.coveragerc +0 -0
  11. {qadence-1.5.1 → qadence-1.5.2}/.github/dependabot.yml +0 -0
  12. {qadence-1.5.1 → qadence-1.5.2}/.github/workflows/build_docs.yml +0 -0
  13. {qadence-1.5.1 → qadence-1.5.2}/.github/workflows/dependabot.yml +0 -0
  14. {qadence-1.5.1 → qadence-1.5.2}/.github/workflows/lint.yml +0 -0
  15. {qadence-1.5.1 → qadence-1.5.2}/.github/workflows/test_all.yml +0 -0
  16. {qadence-1.5.1 → qadence-1.5.2}/.github/workflows/test_examples.yml +0 -0
  17. {qadence-1.5.1 → qadence-1.5.2}/.github/workflows/test_fast.yml +0 -0
  18. {qadence-1.5.1 → qadence-1.5.2}/.gitignore +0 -0
  19. {qadence-1.5.1 → qadence-1.5.2}/LICENSE +0 -0
  20. {qadence-1.5.1 → qadence-1.5.2}/MANIFEST.in +0 -0
  21. {qadence-1.5.1 → qadence-1.5.2}/qadence/__init__.py +0 -0
  22. {qadence-1.5.1 → qadence-1.5.2}/qadence/analog/__init__.py +0 -0
  23. {qadence-1.5.1 → qadence-1.5.2}/qadence/analog/addressing.py +0 -0
  24. {qadence-1.5.1 → qadence-1.5.2}/qadence/analog/constants.py +0 -0
  25. {qadence-1.5.1 → qadence-1.5.2}/qadence/analog/device.py +0 -0
  26. {qadence-1.5.1 → qadence-1.5.2}/qadence/analog/hamiltonian_terms.py +0 -0
  27. {qadence-1.5.1 → qadence-1.5.2}/qadence/analog/parse_analog.py +0 -0
  28. {qadence-1.5.1 → qadence-1.5.2}/qadence/backend.py +0 -0
  29. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/__init__.py +0 -0
  30. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/adjoint.py +0 -0
  31. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/api.py +0 -0
  32. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/braket/__init__.py +0 -0
  33. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/braket/backend.py +0 -0
  34. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/braket/config.py +0 -0
  35. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/braket/convert_ops.py +0 -0
  36. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/gpsr.py +0 -0
  37. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/horqrux/__init__.py +0 -0
  38. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/horqrux/backend.py +0 -0
  39. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/horqrux/config.py +0 -0
  40. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/horqrux/convert_ops.py +0 -0
  41. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/jax_utils.py +0 -0
  42. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/pulser/__init__.py +0 -0
  43. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/pulser/backend.py +0 -0
  44. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/pulser/channels.py +0 -0
  45. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/pulser/cloud.py +0 -0
  46. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/pulser/config.py +0 -0
  47. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/pulser/convert_ops.py +0 -0
  48. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/pulser/devices.py +0 -0
  49. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/pulser/pulses.py +0 -0
  50. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/pulser/waveforms.py +0 -0
  51. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/pyqtorch/__init__.py +0 -0
  52. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/pyqtorch/backend.py +0 -0
  53. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/pyqtorch/config.py +0 -0
  54. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/pyqtorch/convert_ops.py +0 -0
  55. {qadence-1.5.1 → qadence-1.5.2}/qadence/backends/utils.py +0 -0
  56. {qadence-1.5.1 → qadence-1.5.2}/qadence/blocks/__init__.py +0 -0
  57. {qadence-1.5.1 → qadence-1.5.2}/qadence/blocks/abstract.py +0 -0
  58. {qadence-1.5.1 → qadence-1.5.2}/qadence/blocks/analog.py +0 -0
  59. {qadence-1.5.1 → qadence-1.5.2}/qadence/blocks/block_to_tensor.py +0 -0
  60. {qadence-1.5.1 → qadence-1.5.2}/qadence/blocks/composite.py +0 -0
  61. {qadence-1.5.1 → qadence-1.5.2}/qadence/blocks/embedding.py +0 -0
  62. {qadence-1.5.1 → qadence-1.5.2}/qadence/blocks/manipulate.py +0 -0
  63. {qadence-1.5.1 → qadence-1.5.2}/qadence/blocks/matrix.py +0 -0
  64. {qadence-1.5.1 → qadence-1.5.2}/qadence/blocks/primitive.py +0 -0
  65. {qadence-1.5.1 → qadence-1.5.2}/qadence/blocks/utils.py +0 -0
  66. {qadence-1.5.1 → qadence-1.5.2}/qadence/circuit.py +0 -0
  67. {qadence-1.5.1 → qadence-1.5.2}/qadence/constructors/__init__.py +0 -0
  68. {qadence-1.5.1 → qadence-1.5.2}/qadence/constructors/ansatze.py +0 -0
  69. {qadence-1.5.1 → qadence-1.5.2}/qadence/constructors/daqc/__init__.py +0 -0
  70. {qadence-1.5.1 → qadence-1.5.2}/qadence/constructors/daqc/daqc.py +0 -0
  71. {qadence-1.5.1 → qadence-1.5.2}/qadence/constructors/daqc/gen_parser.py +0 -0
  72. {qadence-1.5.1 → qadence-1.5.2}/qadence/constructors/daqc/utils.py +0 -0
  73. {qadence-1.5.1 → qadence-1.5.2}/qadence/constructors/feature_maps.py +0 -0
  74. {qadence-1.5.1 → qadence-1.5.2}/qadence/constructors/hamiltonians.py +0 -0
  75. {qadence-1.5.1 → qadence-1.5.2}/qadence/constructors/iia.py +0 -0
  76. {qadence-1.5.1 → qadence-1.5.2}/qadence/constructors/qft.py +0 -0
  77. {qadence-1.5.1 → qadence-1.5.2}/qadence/constructors/rydberg_feature_maps.py +0 -0
  78. {qadence-1.5.1 → qadence-1.5.2}/qadence/constructors/rydberg_hea.py +0 -0
  79. {qadence-1.5.1 → qadence-1.5.2}/qadence/constructors/utils.py +0 -0
  80. {qadence-1.5.1 → qadence-1.5.2}/qadence/decompose.py +0 -0
  81. {qadence-1.5.1 → qadence-1.5.2}/qadence/divergences.py +0 -0
  82. {qadence-1.5.1 → qadence-1.5.2}/qadence/draw/__init__.py +0 -0
  83. {qadence-1.5.1 → qadence-1.5.2}/qadence/draw/assets/dark/measurement.png +0 -0
  84. {qadence-1.5.1 → qadence-1.5.2}/qadence/draw/assets/dark/measurement.svg +0 -0
  85. {qadence-1.5.1 → qadence-1.5.2}/qadence/draw/assets/light/measurement.png +0 -0
  86. {qadence-1.5.1 → qadence-1.5.2}/qadence/draw/assets/light/measurement.svg +0 -0
  87. {qadence-1.5.1 → qadence-1.5.2}/qadence/draw/themes.py +0 -0
  88. {qadence-1.5.1 → qadence-1.5.2}/qadence/draw/utils.py +0 -0
  89. {qadence-1.5.1 → qadence-1.5.2}/qadence/draw/vizbackend.py +0 -0
  90. {qadence-1.5.1 → qadence-1.5.2}/qadence/engines/__init__.py +0 -0
  91. {qadence-1.5.1 → qadence-1.5.2}/qadence/engines/differentiable_backend.py +0 -0
  92. {qadence-1.5.1 → qadence-1.5.2}/qadence/engines/jax/__init__.py +0 -0
  93. {qadence-1.5.1 → qadence-1.5.2}/qadence/engines/jax/differentiable_backend.py +0 -0
  94. {qadence-1.5.1 → qadence-1.5.2}/qadence/engines/jax/differentiable_expectation.py +0 -0
  95. {qadence-1.5.1 → qadence-1.5.2}/qadence/engines/torch/__init__.py +0 -0
  96. {qadence-1.5.1 → qadence-1.5.2}/qadence/engines/torch/differentiable_backend.py +0 -0
  97. {qadence-1.5.1 → qadence-1.5.2}/qadence/engines/torch/differentiable_expectation.py +0 -0
  98. {qadence-1.5.1 → qadence-1.5.2}/qadence/exceptions/__init__.py +0 -0
  99. {qadence-1.5.1 → qadence-1.5.2}/qadence/exceptions/exceptions.py +0 -0
  100. {qadence-1.5.1 → qadence-1.5.2}/qadence/execution.py +0 -0
  101. {qadence-1.5.1 → qadence-1.5.2}/qadence/extensions.py +0 -0
  102. {qadence-1.5.1 → qadence-1.5.2}/qadence/finitediff.py +0 -0
  103. {qadence-1.5.1 → qadence-1.5.2}/qadence/libs.py +0 -0
  104. {qadence-1.5.1 → qadence-1.5.2}/qadence/logger.py +0 -0
  105. {qadence-1.5.1 → qadence-1.5.2}/qadence/measurements/__init__.py +0 -0
  106. {qadence-1.5.1 → qadence-1.5.2}/qadence/measurements/protocols.py +0 -0
  107. {qadence-1.5.1 → qadence-1.5.2}/qadence/measurements/samples.py +0 -0
  108. {qadence-1.5.1 → qadence-1.5.2}/qadence/measurements/shadow.py +0 -0
  109. {qadence-1.5.1 → qadence-1.5.2}/qadence/measurements/tomography.py +0 -0
  110. {qadence-1.5.1 → qadence-1.5.2}/qadence/measurements/utils.py +0 -0
  111. {qadence-1.5.1 → qadence-1.5.2}/qadence/mitigations/__init__.py +0 -0
  112. {qadence-1.5.1 → qadence-1.5.2}/qadence/mitigations/analog_zne.py +0 -0
  113. {qadence-1.5.1 → qadence-1.5.2}/qadence/mitigations/protocols.py +0 -0
  114. {qadence-1.5.1 → qadence-1.5.2}/qadence/mitigations/readout.py +0 -0
  115. {qadence-1.5.1 → qadence-1.5.2}/qadence/ml_tools/__init__.py +0 -0
  116. {qadence-1.5.1 → qadence-1.5.2}/qadence/ml_tools/config.py +0 -0
  117. {qadence-1.5.1 → qadence-1.5.2}/qadence/ml_tools/data.py +0 -0
  118. {qadence-1.5.1 → qadence-1.5.2}/qadence/ml_tools/models.py +0 -0
  119. {qadence-1.5.1 → qadence-1.5.2}/qadence/ml_tools/optimize_step.py +0 -0
  120. {qadence-1.5.1 → qadence-1.5.2}/qadence/ml_tools/parameters.py +0 -0
  121. {qadence-1.5.1 → qadence-1.5.2}/qadence/ml_tools/printing.py +0 -0
  122. {qadence-1.5.1 → qadence-1.5.2}/qadence/ml_tools/saveload.py +0 -0
  123. {qadence-1.5.1 → qadence-1.5.2}/qadence/ml_tools/tensors.py +0 -0
  124. {qadence-1.5.1 → qadence-1.5.2}/qadence/ml_tools/train_grad.py +0 -0
  125. {qadence-1.5.1 → qadence-1.5.2}/qadence/ml_tools/train_no_grad.py +0 -0
  126. {qadence-1.5.1 → qadence-1.5.2}/qadence/ml_tools/utils.py +0 -0
  127. {qadence-1.5.1 → qadence-1.5.2}/qadence/models/__init__.py +0 -0
  128. {qadence-1.5.1 → qadence-1.5.2}/qadence/models/qnn.py +0 -0
  129. {qadence-1.5.1 → qadence-1.5.2}/qadence/models/quantum_model.py +0 -0
  130. {qadence-1.5.1 → qadence-1.5.2}/qadence/noise/__init__.py +0 -0
  131. {qadence-1.5.1 → qadence-1.5.2}/qadence/noise/protocols.py +0 -0
  132. {qadence-1.5.1 → qadence-1.5.2}/qadence/noise/readout.py +0 -0
  133. {qadence-1.5.1 → qadence-1.5.2}/qadence/operations/__init__.py +0 -0
  134. {qadence-1.5.1 → qadence-1.5.2}/qadence/operations/analog.py +0 -0
  135. {qadence-1.5.1 → qadence-1.5.2}/qadence/operations/control_ops.py +0 -0
  136. {qadence-1.5.1 → qadence-1.5.2}/qadence/operations/ham_evo.py +0 -0
  137. {qadence-1.5.1 → qadence-1.5.2}/qadence/operations/parametric.py +0 -0
  138. {qadence-1.5.1 → qadence-1.5.2}/qadence/operations/primitive.py +0 -0
  139. {qadence-1.5.1 → qadence-1.5.2}/qadence/overlap.py +0 -0
  140. {qadence-1.5.1 → qadence-1.5.2}/qadence/parameters.py +0 -0
  141. {qadence-1.5.1 → qadence-1.5.2}/qadence/protocols.py +0 -0
  142. {qadence-1.5.1 → qadence-1.5.2}/qadence/py.typed +0 -0
  143. {qadence-1.5.1 → qadence-1.5.2}/qadence/qubit_support.py +0 -0
  144. {qadence-1.5.1 → qadence-1.5.2}/qadence/register.py +0 -0
  145. {qadence-1.5.1 → qadence-1.5.2}/qadence/states.py +0 -0
  146. {qadence-1.5.1 → qadence-1.5.2}/qadence/transpile/__init__.py +0 -0
  147. {qadence-1.5.1 → qadence-1.5.2}/qadence/transpile/apply_fn.py +0 -0
  148. {qadence-1.5.1 → qadence-1.5.2}/qadence/transpile/block.py +0 -0
  149. {qadence-1.5.1 → qadence-1.5.2}/qadence/transpile/circuit.py +0 -0
  150. {qadence-1.5.1 → qadence-1.5.2}/qadence/transpile/digitalize.py +0 -0
  151. {qadence-1.5.1 → qadence-1.5.2}/qadence/transpile/flatten.py +0 -0
  152. {qadence-1.5.1 → qadence-1.5.2}/qadence/transpile/invert.py +0 -0
  153. {qadence-1.5.1 → qadence-1.5.2}/qadence/transpile/transpile.py +0 -0
  154. {qadence-1.5.1 → qadence-1.5.2}/qadence/types.py +0 -0
  155. {qadence-1.5.1 → qadence-1.5.2}/renovate.json +0 -0
  156. {qadence-1.5.1 → qadence-1.5.2}/setup.py +0 -0
@@ -20,7 +20,7 @@ repos:
20
20
  - id: black
21
21
 
22
22
  - repo: https://github.com/pre-commit/mirrors-mypy
23
- rev: v1.7.0
23
+ rev: v1.9.0
24
24
  hooks:
25
25
  - id: mypy
26
26
  exclude: examples|docs
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: qadence
3
- Version: 1.5.1
3
+ Version: 1.5.2
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>
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>
6
6
  License: Apache 2.0
7
7
  License-File: LICENSE
8
8
  Classifier: License :: OSI Approved :: Apache Software License
@@ -14,6 +14,7 @@ Classifier: Programming Language :: Python :: 3.11
14
14
  Classifier: Programming Language :: Python :: Implementation :: CPython
15
15
  Classifier: Programming Language :: Python :: Implementation :: PyPy
16
16
  Requires-Python: <3.13,>=3.9
17
+ Requires-Dist: arpeggio==2.0.2
17
18
  Requires-Dist: deepdiff
18
19
  Requires-Dist: jsonschema
19
20
  Requires-Dist: matplotlib
@@ -27,7 +28,7 @@ Requires-Dist: sympytorch>=0.1.2
27
28
  Requires-Dist: tensorboard>=2.12.0
28
29
  Requires-Dist: torch
29
30
  Provides-Extra: all
30
- Requires-Dist: amazon-braket-sdk; extra == 'all'
31
+ Requires-Dist: amazon-braket-sdk==1.71.0; extra == 'all'
31
32
  Requires-Dist: graphviz; extra == 'all'
32
33
  Requires-Dist: libs; extra == 'all'
33
34
  Requires-Dist: protocols; extra == 'all'
@@ -53,19 +54,21 @@ Provides-Extra: visualization
53
54
  Requires-Dist: graphviz; extra == 'visualization'
54
55
  Description-Content-Type: text/markdown
55
56
 
56
- <picture>
57
- <source media="(prefers-color-scheme: dark)" srcset="./docs/assets/logo/qadence_logo_white.svg">
58
- <source media="(prefers-color-scheme: light)" srcset="./docs/assets/logo/qadence_logo.svg">
59
- <img alt="Qadence logo" src="./docs/assets/logo/qadence_logo.svg">
60
- </picture>
57
+ <p align="center">
58
+ <picture>
59
+ <source media="(prefers-color-scheme: dark)" srcset="./docs/extras/assets/logo/qadence_logo_white.svg" width="75%">
60
+ <source media="(prefers-color-scheme: light)" srcset="./docs/extras/assets/logo/qadence_logo.svg" width="75%">
61
+ <img alt="Qadence logo" src="./docs/assets/logo/qadence_logo.svg" width="75%">
62
+ </picture>
63
+ </p>
64
+
65
+ **Qadence** is a Python package that provides a simple interface to build **digital-analog quantum
66
+ programs** with tunable qubit interactions and arbitrary register topologies realizable on neutral atom devices.
61
67
 
62
68
  **For a high-level overview of Qadence features, [check out our white paper](https://arxiv.org/abs/2401.09915).**
63
69
 
64
70
  **For more detailed information, [check out the documentation](https://pasqal-io.github.io/qadence/latest/).**
65
71
 
66
- **Qadence** is a Python package that provides a simple interface to build _**digital-analog quantum
67
- programs**_ with tunable qubit interaction defined on _**arbitrary register topologies**_ realizable on neutral atom devices.
68
-
69
72
  [![Linting](https://github.com/pasqal-io/qadence/actions/workflows/lint.yml/badge.svg)](https://github.com/pasqal-io/qadence/actions/workflows/lint.yml)
70
73
  [![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)
71
74
  [![Documentation](https://github.com/pasqal-io/qadence/actions/workflows/build_docs.yml/badge.svg)](https://pasqal-io.github.io/qadence/latest)
@@ -74,27 +77,26 @@ programs**_ with tunable qubit interaction defined on _**arbitrary register topo
74
77
 
75
78
  ## Feature highlights
76
79
 
77
- <picture>
78
- <source media="(prefers-color-scheme: dark)" srcset="./docs/assets/qadence_arch.svg">
79
- <source media="(prefers-color-scheme: light)" srcset="./docs/assets/qadence_arch.svg">
80
- <img alt="Qadence architecture" src="./docs/assets/qadence_arch.svg">
81
- </picture>
82
-
80
+ <p align="center">
81
+ <picture>
82
+ <source media="(prefers-color-scheme: dark)" srcset="./docs/extras/assets/qadence_arch.svg" width="75%">
83
+ <source media="(prefers-color-scheme: light)" srcset="./docs/extras/assets/qadence_arch.svg" width="75%">
84
+ <img alt="Qadence architecture" src="./docs/assets/qadence_arch.svg" width="75%">
85
+ </picture>
86
+ <p align="center">
83
87
 
84
- * A [block-based system](docs/tutorials/getting_started.md) for composing _**complex digital-analog
88
+ * A [block-based system](docs/content/block_system.md) for composing _**complex digital-analog
85
89
  programs**_ in a flexible and scalable manner, inspired by the Julia quantum SDK
86
90
  [Yao.jl](https://github.com/QuantumBFS/Yao.jl) and functional programming concepts.
87
91
 
88
- * A [simple interface](docs/digital_analog_qc/analog-basics.md) to work with _**interacting neutral-atom qubit systems**_
89
- using [arbitrary registers topologies](docs/tutorials/register.md).
90
-
91
- * An intuitive [expression-based system](docs/tutorials/parameters.md) developed on top of the symbolic library [Sympy](https://www.sympy.org/en/index.html) to construct _**parametric quantum programs**_ easily.
92
-
93
- * [High-order generalized parameter shift rules](docs/advanced_tutorials/differentiability.md) for _**differentiating parametrized quantum operations**_.
92
+ * An intuitive [expression-based system](docs/content/parameters.md) developed on top of the symbolic library [Sympy](https://www.sympy.org/en/index.html) to construct _**parametric quantum programs**_ easily.
94
93
 
95
94
  * Out-of-the-box _**automatic differentiability**_ of quantum programs with [PyTorch](https://pytorch.org/) integration.
96
95
 
97
- * _**Efficient execution**_ on a variety of different purpose backends: from state vector simulators to tensor network emulators and real devices.
96
+ * [High-order generalized parameter shift rules](docs/tutorials/advanced_tutorials/differentiability.md) for _**differentiating parametrized quantum operations**_.
97
+
98
+ * A [simple interface](docs/tutorials/digital_analog_qc/analog-basics.md) to work with _**interacting neutral-atom qubit systems**_
99
+ using [arbitrary registers topologies](docs/content/register.md).
98
100
 
99
101
  ## Installation guide
100
102
 
@@ -106,11 +108,10 @@ pip install qadence
106
108
 
107
109
  The default, pre-installed backend for Qadence is [PyQTorch](https://github.com/pasqal-io/pyqtorch), a differentiable state vector simulator for digital-analog simulation based on `PyTorch`. It is possible to install additional, `PyTorch` -based backends and the circuit visualization library using the following extras:
108
110
 
109
- * `pulser`: The [Pulser](https://github.com/pasqal-io/Pulser) backend for composing, simulating and executing pulse sequences for neutral-atom quantum devices.
110
- * `braket`: The [Braket](https://github.com/amazon-braket/amazon-braket-sdk-python) backend, an open source library that provides a framework for interacting with quantum computing hardware devices through Amazon Braket.
111
111
  * `visualization`: A visualization library to display quantum circuit diagrams.
112
112
  * `protocols`: A collection of [protocols](https://github.com/pasqal-io/qadence-protocols) for error mitigation in Qadence.
113
113
  * `libs`: A collection of [functionalities](https://github.com/pasqal-io/qadence-libs) for graph machine learning problems build on top of Qadence.
114
+ * `pulser`: The [Pulser](https://github.com/pasqal-io/Pulser) backend for composing, simulating and executing pulse sequences for neutral-atom quantum devices (experimental).
114
115
 
115
116
  Qadence also supports a `JAX` engine which is currently supporting the [Horqrux](https://github.com/pasqal-io/horqrux) backend. `horqrux` is currently only available via the [low-level API](examples/backends/low_level/horqrux_backend.py).
116
117
 
@@ -118,7 +119,7 @@ Qadence also supports a `JAX` engine which is currently supporting the [Horqrux]
118
119
  To install individual extras, use the following syntax (**IMPORTANT** Make sure to use quotes):
119
120
 
120
121
  ```bash
121
- pip install "qadence[braket,pulser,visualization]"
122
+ pip install "qadence[pulser,visualization]"
122
123
  ```
123
124
 
124
125
  To install all available extras, simply do:
@@ -144,10 +145,10 @@ conda install python-graphviz
144
145
 
145
146
  ## Contributing
146
147
 
147
- Before making a contribution, please review our [code of conduct](docs/CODE_OF_CONDUCT.md).
148
+ Before making a contribution, please review our [code of conduct](docs/getting_started/CODE_OF_CONDUCT.md).
148
149
 
149
150
  - **Submitting Issues:** To submit bug reports or feature requests, please use our [issue tracker](https://github.com/pasqal-io/qadence/issues).
150
- - **Developing in qadence:** To learn more about how to develop within `qadence`, please refer to [contributing guidelines](docs/CONTRIBUTING.md).
151
+ - **Developing in qadence:** To learn more about how to develop within `qadence`, please refer to [contributing guidelines](docs/getting_started/CONTRIBUTING.md).
151
152
 
152
153
  ### Setting up qadence in development mode
153
154
 
@@ -1,16 +1,18 @@
1
- <picture>
2
- <source media="(prefers-color-scheme: dark)" srcset="./docs/assets/logo/qadence_logo_white.svg">
3
- <source media="(prefers-color-scheme: light)" srcset="./docs/assets/logo/qadence_logo.svg">
4
- <img alt="Qadence logo" src="./docs/assets/logo/qadence_logo.svg">
5
- </picture>
1
+ <p align="center">
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="./docs/extras/assets/logo/qadence_logo_white.svg" width="75%">
4
+ <source media="(prefers-color-scheme: light)" srcset="./docs/extras/assets/logo/qadence_logo.svg" width="75%">
5
+ <img alt="Qadence logo" src="./docs/assets/logo/qadence_logo.svg" width="75%">
6
+ </picture>
7
+ </p>
8
+
9
+ **Qadence** is a Python package that provides a simple interface to build **digital-analog quantum
10
+ programs** with tunable qubit interactions and arbitrary register topologies realizable on neutral atom devices.
6
11
 
7
12
  **For a high-level overview of Qadence features, [check out our white paper](https://arxiv.org/abs/2401.09915).**
8
13
 
9
14
  **For more detailed information, [check out the documentation](https://pasqal-io.github.io/qadence/latest/).**
10
15
 
11
- **Qadence** is a Python package that provides a simple interface to build _**digital-analog quantum
12
- programs**_ with tunable qubit interaction defined on _**arbitrary register topologies**_ realizable on neutral atom devices.
13
-
14
16
  [![Linting](https://github.com/pasqal-io/qadence/actions/workflows/lint.yml/badge.svg)](https://github.com/pasqal-io/qadence/actions/workflows/lint.yml)
15
17
  [![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)
16
18
  [![Documentation](https://github.com/pasqal-io/qadence/actions/workflows/build_docs.yml/badge.svg)](https://pasqal-io.github.io/qadence/latest)
@@ -19,27 +21,26 @@ programs**_ with tunable qubit interaction defined on _**arbitrary register topo
19
21
 
20
22
  ## Feature highlights
21
23
 
22
- <picture>
23
- <source media="(prefers-color-scheme: dark)" srcset="./docs/assets/qadence_arch.svg">
24
- <source media="(prefers-color-scheme: light)" srcset="./docs/assets/qadence_arch.svg">
25
- <img alt="Qadence architecture" src="./docs/assets/qadence_arch.svg">
26
- </picture>
27
-
24
+ <p align="center">
25
+ <picture>
26
+ <source media="(prefers-color-scheme: dark)" srcset="./docs/extras/assets/qadence_arch.svg" width="75%">
27
+ <source media="(prefers-color-scheme: light)" srcset="./docs/extras/assets/qadence_arch.svg" width="75%">
28
+ <img alt="Qadence architecture" src="./docs/assets/qadence_arch.svg" width="75%">
29
+ </picture>
30
+ <p align="center">
28
31
 
29
- * A [block-based system](docs/tutorials/getting_started.md) for composing _**complex digital-analog
32
+ * A [block-based system](docs/content/block_system.md) for composing _**complex digital-analog
30
33
  programs**_ in a flexible and scalable manner, inspired by the Julia quantum SDK
31
34
  [Yao.jl](https://github.com/QuantumBFS/Yao.jl) and functional programming concepts.
32
35
 
33
- * A [simple interface](docs/digital_analog_qc/analog-basics.md) to work with _**interacting neutral-atom qubit systems**_
34
- using [arbitrary registers topologies](docs/tutorials/register.md).
35
-
36
- * An intuitive [expression-based system](docs/tutorials/parameters.md) developed on top of the symbolic library [Sympy](https://www.sympy.org/en/index.html) to construct _**parametric quantum programs**_ easily.
37
-
38
- * [High-order generalized parameter shift rules](docs/advanced_tutorials/differentiability.md) for _**differentiating parametrized quantum operations**_.
36
+ * An intuitive [expression-based system](docs/content/parameters.md) developed on top of the symbolic library [Sympy](https://www.sympy.org/en/index.html) to construct _**parametric quantum programs**_ easily.
39
37
 
40
38
  * Out-of-the-box _**automatic differentiability**_ of quantum programs with [PyTorch](https://pytorch.org/) integration.
41
39
 
42
- * _**Efficient execution**_ on a variety of different purpose backends: from state vector simulators to tensor network emulators and real devices.
40
+ * [High-order generalized parameter shift rules](docs/tutorials/advanced_tutorials/differentiability.md) for _**differentiating parametrized quantum operations**_.
41
+
42
+ * A [simple interface](docs/tutorials/digital_analog_qc/analog-basics.md) to work with _**interacting neutral-atom qubit systems**_
43
+ using [arbitrary registers topologies](docs/content/register.md).
43
44
 
44
45
  ## Installation guide
45
46
 
@@ -51,11 +52,10 @@ pip install qadence
51
52
 
52
53
  The default, pre-installed backend for Qadence is [PyQTorch](https://github.com/pasqal-io/pyqtorch), a differentiable state vector simulator for digital-analog simulation based on `PyTorch`. It is possible to install additional, `PyTorch` -based backends and the circuit visualization library using the following extras:
53
54
 
54
- * `pulser`: The [Pulser](https://github.com/pasqal-io/Pulser) backend for composing, simulating and executing pulse sequences for neutral-atom quantum devices.
55
- * `braket`: The [Braket](https://github.com/amazon-braket/amazon-braket-sdk-python) backend, an open source library that provides a framework for interacting with quantum computing hardware devices through Amazon Braket.
56
55
  * `visualization`: A visualization library to display quantum circuit diagrams.
57
56
  * `protocols`: A collection of [protocols](https://github.com/pasqal-io/qadence-protocols) for error mitigation in Qadence.
58
57
  * `libs`: A collection of [functionalities](https://github.com/pasqal-io/qadence-libs) for graph machine learning problems build on top of Qadence.
58
+ * `pulser`: The [Pulser](https://github.com/pasqal-io/Pulser) backend for composing, simulating and executing pulse sequences for neutral-atom quantum devices (experimental).
59
59
 
60
60
  Qadence also supports a `JAX` engine which is currently supporting the [Horqrux](https://github.com/pasqal-io/horqrux) backend. `horqrux` is currently only available via the [low-level API](examples/backends/low_level/horqrux_backend.py).
61
61
 
@@ -63,7 +63,7 @@ Qadence also supports a `JAX` engine which is currently supporting the [Horqrux]
63
63
  To install individual extras, use the following syntax (**IMPORTANT** Make sure to use quotes):
64
64
 
65
65
  ```bash
66
- pip install "qadence[braket,pulser,visualization]"
66
+ pip install "qadence[pulser,visualization]"
67
67
  ```
68
68
 
69
69
  To install all available extras, simply do:
@@ -89,10 +89,10 @@ conda install python-graphviz
89
89
 
90
90
  ## Contributing
91
91
 
92
- Before making a contribution, please review our [code of conduct](docs/CODE_OF_CONDUCT.md).
92
+ Before making a contribution, please review our [code of conduct](docs/getting_started/CODE_OF_CONDUCT.md).
93
93
 
94
94
  - **Submitting Issues:** To submit bug reports or feature requests, please use our [issue tracker](https://github.com/pasqal-io/qadence/issues).
95
- - **Developing in qadence:** To learn more about how to develop within `qadence`, please refer to [contributing guidelines](docs/CONTRIBUTING.md).
95
+ - **Developing in qadence:** To learn more about how to develop within `qadence`, please refer to [contributing guidelines](docs/getting_started/CONTRIBUTING.md).
96
96
 
97
97
  ### Setting up qadence in development mode
98
98
 
@@ -0,0 +1,171 @@
1
+ site_name: Qadence
2
+ repo_url: "https://github.com/pasqal-io/qadence/"
3
+ site_url: "https://pasqal-io.github.io/qadence/"
4
+ repo_name: "qadence"
5
+
6
+ nav:
7
+ - Home: index.md
8
+
9
+ - Getting started:
10
+ - Installation: getting_started/installation.md
11
+ - Development & Info:
12
+ - Contributing: getting_started/CONTRIBUTING.md
13
+ - Code of conduct: getting_started/CODE_OF_CONDUCT.md
14
+ - License: getting_started/LICENSE.md
15
+
16
+ - Contents:
17
+ - Block system: content/block_system.md
18
+ - Parametric programs: content/parameters.md
19
+ - Quantum models: content/quantummodels.md
20
+ - Quantum registers: content/register.md
21
+ - State initialization: content/state_init.md
22
+ - Arbitrary Hamiltonians: content/hamiltonians.md
23
+ - QML Constructors: content/qml_constructors.md
24
+ - Wavefunction overlaps: content/overlap.md
25
+ - Backends: content/backends.md
26
+ - Useful info:
27
+ - State conventions: content/state_conventions.md
28
+ - Serialization: content/serializ_and_prep.md
29
+
30
+ - Tutorials:
31
+ - tutorials/index.md
32
+ - Digital-analog quantum computing:
33
+ - tutorials/digital_analog_qc/index.md
34
+ - Basic operations on neutral-atoms: tutorials/digital_analog_qc/analog-basics.md
35
+ - Fitting a simple function: tutorials/digital_analog_qc/analog-qcl.md
36
+ - Restricted local addressability: tutorials/digital_analog_qc/semi-local-addressing.md
37
+ - Pulse-level programming with Pulser: tutorials/digital_analog_qc/pulser-basic.md
38
+ - Solve a QUBO problem: tutorials/digital_analog_qc/analog-qubo.md
39
+ - CNOT with interacting qubits: tutorials/digital_analog_qc/daqc-cnot.md
40
+
41
+ - Variational quantum algorithms:
42
+ - tutorials/qml/index.md
43
+ - Training tools: tutorials/qml/ml_tools.md
44
+ - Quantum circuit learning: tutorials/qml/qcl.md
45
+ - Solving MaxCut with QAOA: tutorials/qml/qaoa.md
46
+ - Solving a 1D ODE: tutorials/qml/dqc_1d.md
47
+
48
+ - Advanced Tutorials:
49
+ - tutorials/advanced_tutorials/index.md
50
+ - Quantum circuits differentiation: tutorials/advanced_tutorials/differentiability.md
51
+ - Custom quantum models: tutorials/advanced_tutorials/custom-models.md
52
+ - Projector blocks: tutorials/advanced_tutorials/projectors.md
53
+
54
+ - Realistic simulations:
55
+ - tutorials/realistic_sims/index.md
56
+ - Measurement protocols: tutorials/realistic_sims/measurements.md
57
+ - Simulated errors: tutorials/realistic_sims/noise.md
58
+ - Error mitigation: tutorials/realistic_sims/mitigation.md
59
+
60
+ - Development:
61
+ - Architecture and sharp bits: tutorials/development/architecture.md
62
+ - Drawing: tutorials/development/draw.md
63
+
64
+ - API:
65
+ - Block system: api/blocks.md
66
+ - Operations: api/operations.md
67
+ - Register: api/register.md
68
+ - QuantumCircuit: api/quantumcircuit.md
69
+ - Parameters: api/parameters.md
70
+ - State preparation: api/states.md
71
+ - Constructors: api/constructors.md
72
+ - Transpilation: api/transpile.md
73
+ - Execution: api/execution.md
74
+ - Quantum models: api/models.md
75
+ - QML tools: api/ml_tools.md
76
+ - Serialization: api/serialization.md
77
+ - Types: api/types.md
78
+ - Drawing: api/draw.md
79
+
80
+ - Backends:
81
+ - Abstract backend: api/backends/backend.md
82
+ - PyQTorch: api/backends/pyqtorch.md
83
+ - Amazon Braket: api/backends/braket.md
84
+ - Pulser: api/backends/pulser.md
85
+ - DifferentiableBackend: api/backends/differentiable.md
86
+
87
+ edit_uri: edit/main/docs/
88
+
89
+ theme:
90
+ name: material
91
+ custom_dir: docs/extras/overrides/
92
+ logo: extras/assets/logo/qadence_logo_small_white.svg
93
+ features:
94
+ - content.code.annotate
95
+ - navigation.tabs
96
+ - navigation.indexes
97
+ - navigation.sections
98
+ - content.code.copy
99
+ - content.code.annotate
100
+
101
+ palette:
102
+ - media: "(prefers-color-scheme: light)"
103
+ scheme: default
104
+ primary: custom
105
+ accent: custom
106
+ toggle:
107
+ icon: material/weather-sunny
108
+ name: Switch to dark mode
109
+ - media: "(prefers-color-scheme: dark)"
110
+ scheme: slate
111
+ primary: black
112
+ accent: custom
113
+ toggle:
114
+ icon: material/weather-night
115
+ name: Switch to light mode
116
+
117
+ markdown_extensions:
118
+ - admonition # for notes
119
+ - footnotes
120
+ - pymdownx.arithmatex: # for mathjax
121
+ generic: true
122
+ - pymdownx.highlight:
123
+ anchor_linenums: true
124
+ - pymdownx.inlinehilite
125
+ - pymdownx.snippets
126
+ - pymdownx.details
127
+ - pymdownx.superfences:
128
+ custom_fences:
129
+ - name: python
130
+ class: python
131
+ validator: "!!python/name:markdown_exec.validator"
132
+ format: "!!python/name:markdown_exec.formatter"
133
+
134
+ plugins:
135
+ - search
136
+ - section-index
137
+ - mkdocstrings:
138
+ default_handler: python
139
+ handlers:
140
+ python:
141
+ selection:
142
+ filters:
143
+ - "!^_" # exlude all members starting with _
144
+ - "^__init__$" # but always include __init__ modules and methods
145
+ - "^__new__$" # but always include __init__ modules and methods
146
+ options:
147
+ show_root_toc_entry: false
148
+ heading_level: 3
149
+ merge_init_into_class: true
150
+ docstring_section_style: spacy
151
+
152
+ - markdown-exec
153
+
154
+ extra:
155
+ version:
156
+ provider: mike
157
+
158
+ # To get nice tabs
159
+ extra_css:
160
+ - extras/css/mkdocstrings.css
161
+ - extras/css/colors.css
162
+ - extras/css/home.css
163
+
164
+ # For mathjax
165
+ extra_javascript:
166
+ - extras/javascripts/mathjax.js
167
+ - https://polyfill.io/v3/polyfill.min.js?features=es6
168
+ - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js
169
+
170
+ watch:
171
+ - qadence
@@ -17,10 +17,11 @@ authors = [
17
17
  { name = "Joao P. Moutinho", email = "joao.moutinho@pasqal.com"},
18
18
  { name = "Vytautas Abramavicius", email = "vytautas.abramavicius@pasqal.com" },
19
19
  { name = "Gergana Velikova", email = "gergana.velikova@pasqal.com" },
20
+ { name = "Eduardo Maschio", email = "eduardo.maschio@pasqal.com" },
20
21
  ]
21
22
  requires-python = ">=3.9,<3.13"
22
23
  license = {text = "Apache 2.0"}
23
- version = "1.5.1"
24
+ version = "1.5.2"
24
25
  classifiers=[
25
26
  "License :: OSI Approved :: Apache Software License",
26
27
  "Programming Language :: Python",
@@ -44,6 +45,7 @@ dependencies = [
44
45
  "scipy",
45
46
  "pyqtorch==1.1.0",
46
47
  "matplotlib",
48
+ "Arpeggio==2.0.2",
47
49
  ]
48
50
 
49
51
  [tool.hatch.metadata]
@@ -71,7 +73,7 @@ protocols = ["qadence-protocols"]
71
73
  libs = ["qadence-libs"]
72
74
  all = [
73
75
  "pulser>=0.15.2",
74
- "amazon-braket-sdk",
76
+ "amazon-braket-sdk==1.71.0",
75
77
  "graphviz",
76
78
  "protocols",
77
79
  "libs",
@@ -0,0 +1,11 @@
1
+ Program = expr EOF
2
+ expr = id '(' args ')'
3
+ args = (value / expr) (',' (value / expr))*
4
+ value = int / float_str / str / pair
5
+ pair = param '=' (int / bool / str)
6
+ param = r"[a-z][a-zA-Z]*"
7
+ id = r"[a-zA-Z][a-zA-Z_0-9]*"
8
+ bool = 'True' / 'False'
9
+ int = r"-?(0|[1-9][0-9]*)"
10
+ float_str = r"'-?(0|\d*(\.\d*))'"
11
+ str = r"'[a-zA-Z0-9\_\.]+'"