qadence 1.9.2__py3-none-any.whl → 1.10.0__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.
- qadence/backends/api.py +3 -3
- qadence/backends/horqrux/convert_ops.py +3 -1
- qadence/blocks/embedding.py +7 -6
- qadence/blocks/utils.py +5 -3
- qadence/constructors/__init__.py +5 -4
- qadence/constructors/ala.py +270 -0
- qadence/constructors/{ansatze.py → hea.py} +76 -195
- qadence/constructors/iia.py +31 -0
- qadence/extensions.py +4 -8
- qadence/measurements/shadow.py +30 -10
- qadence/ml_tools/constructors.py +8 -6
- qadence/ml_tools/trainer.py +6 -4
- qadence/operations/control_ops.py +3 -9
- qadence/pasqal_cloud_connection.py +235 -0
- qadence/transpile/digitalize.py +4 -4
- qadence/transpile/flatten.py +4 -4
- qadence/transpile/invert.py +6 -12
- qadence/transpile/transpile.py +2 -4
- {qadence-1.9.2.dist-info → qadence-1.10.0.dist-info}/METADATA +2 -2
- {qadence-1.9.2.dist-info → qadence-1.10.0.dist-info}/RECORD +22 -20
- {qadence-1.9.2.dist-info → qadence-1.10.0.dist-info}/WHEEL +0 -0
- {qadence-1.9.2.dist-info → qadence-1.10.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,235 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
import json
|
4
|
+
import time
|
5
|
+
from dataclasses import dataclass
|
6
|
+
from enum import Enum
|
7
|
+
from typing import Any
|
8
|
+
|
9
|
+
from pasqal_cloud import SDK
|
10
|
+
from pasqal_cloud import Workload as WorkloadResult
|
11
|
+
from torch import Tensor
|
12
|
+
|
13
|
+
from qadence import AbstractBlock, BackendName, QuantumCircuit, QuantumModel, serialize
|
14
|
+
|
15
|
+
|
16
|
+
class ResultType(Enum):
|
17
|
+
RUN = "run"
|
18
|
+
SAMPLE = "sample"
|
19
|
+
EXPECTATION = "expectation"
|
20
|
+
|
21
|
+
|
22
|
+
@dataclass(frozen=True)
|
23
|
+
class WorkloadSpec:
|
24
|
+
"""Specification of a workload to be executed on Pasqal Cloud.
|
25
|
+
|
26
|
+
This data class defines a single workload specification that is to be executed on Pasqal's
|
27
|
+
cloud platform.
|
28
|
+
|
29
|
+
Args:
|
30
|
+
circuit: The quantum circuit to be executed.
|
31
|
+
backend: The backend to execute the workload on. Not all backends are available on the
|
32
|
+
cloud platform. Currently the supported backend is `BackendName.PYQTORCH`.
|
33
|
+
result_types: The types of result to compute for this workload. The circuit will be run for
|
34
|
+
all result types specified here one by one.
|
35
|
+
parameter_values: If the quantum circuit has feature parameters, values for those need to
|
36
|
+
be provided. In the case there are only variational parameters, this field is
|
37
|
+
optional. In the case there are no parameters, this field needs to be `None`. The
|
38
|
+
parameter values can be either a tensor of dimension 0 or 1, which can differ per
|
39
|
+
parameter. For parameters that are an array, i.e. dimension 1, all array lengths should
|
40
|
+
be equal.
|
41
|
+
observable: Observable that is used when `result_types` contains `ResultType.EXPECTATION`.
|
42
|
+
The observable field is mandatory in this case. If not, the value of this field will
|
43
|
+
be ignored. Only a single observable can be passed for cloud submission; providing a
|
44
|
+
list of observables is not supported.
|
45
|
+
"""
|
46
|
+
|
47
|
+
circuit: QuantumCircuit
|
48
|
+
backend: BackendName | str
|
49
|
+
result_types: list[ResultType]
|
50
|
+
parameter_values: dict[str, Tensor] | None = None
|
51
|
+
observable: AbstractBlock | None = None
|
52
|
+
|
53
|
+
def __post_init__(self) -> None:
|
54
|
+
if ResultType.EXPECTATION in self.result_types and self.observable is None:
|
55
|
+
raise ValueError(
|
56
|
+
"When an expectation result is requested, the observable field is mandatory"
|
57
|
+
)
|
58
|
+
self._validate_parameter_values()
|
59
|
+
|
60
|
+
def _validate_parameter_values(self) -> None:
|
61
|
+
if self.parameter_values is None:
|
62
|
+
return
|
63
|
+
parameter_sizes = [value.size() for value in list(self.parameter_values.values())]
|
64
|
+
if all(len(size) > 1 for size in parameter_sizes):
|
65
|
+
raise ValueError("The dimension of the parameters in parameter_values must be 0 or 1")
|
66
|
+
parameter_lengths = [size[0] for size in parameter_sizes if len(size) == 1]
|
67
|
+
if not all(item == parameter_lengths[0] for item in parameter_lengths):
|
68
|
+
raise ValueError("All parameter values that are arrays, should have the same length")
|
69
|
+
|
70
|
+
|
71
|
+
def get_spec_from_model(
|
72
|
+
model: QuantumModel,
|
73
|
+
result_types: list[ResultType],
|
74
|
+
parameter_values: dict[str, Tensor] | None = None,
|
75
|
+
observable: AbstractBlock | None = None,
|
76
|
+
) -> WorkloadSpec:
|
77
|
+
"""Creates a `WorkloadSpec` from a quantum model.
|
78
|
+
|
79
|
+
This function creates a `WorkloadSpec` from a `QuantumModel` and the other arguments provided.
|
80
|
+
The circuit, that is extracted from the model, is the original circuit that was used to
|
81
|
+
initialize the model, not the backend converted circuit in `model.circuit`. The backend set in
|
82
|
+
the model will be used in the workload specification.
|
83
|
+
|
84
|
+
It is important to note that in case there is an observable defined in the model, it is ignored
|
85
|
+
in the workload specification. To provide an observable to the workload specification, it is
|
86
|
+
only possible to set it in the observable argument of this function.
|
87
|
+
|
88
|
+
Args:
|
89
|
+
model: The quantum model that defines the circuit and backend for the workload spec.
|
90
|
+
result_types: A list of result types that is requested in this workload.
|
91
|
+
parameter_values: The parameter values that should be used during execution of the
|
92
|
+
workload.
|
93
|
+
observable: Observable that is used when `result_types` contains `ResultType.EXPECTATION`.
|
94
|
+
The observable field is mandatory in this case. If not, the value of this field will
|
95
|
+
be ignored. Only a single observable can be passed for cloud submission; providing a
|
96
|
+
list of observables is not supported.
|
97
|
+
|
98
|
+
Returns:
|
99
|
+
A `WorkloadSpec` instance based on the quantum model passed to this function.
|
100
|
+
"""
|
101
|
+
circuit = model._circuit.original
|
102
|
+
backend = model._backend_name
|
103
|
+
return WorkloadSpec(circuit, backend, result_types, parameter_values, observable)
|
104
|
+
|
105
|
+
|
106
|
+
@dataclass(frozen=True)
|
107
|
+
class WorkloadSpecJSON:
|
108
|
+
backend_type: str
|
109
|
+
config: dict[str, Any]
|
110
|
+
workload_type = "qadence_circuit"
|
111
|
+
|
112
|
+
|
113
|
+
def _parameter_values_to_json(parameter_values: dict[str, Tensor] | None) -> str:
|
114
|
+
if parameter_values is None:
|
115
|
+
return json.dumps(dict())
|
116
|
+
return json.dumps({key: value.tolist() for key, value in parameter_values.items()})
|
117
|
+
|
118
|
+
|
119
|
+
def _workload_spec_to_json(workload: WorkloadSpec) -> WorkloadSpecJSON:
|
120
|
+
"""Serializes a `WorkloadSpec` into JSON format.
|
121
|
+
|
122
|
+
Args:
|
123
|
+
workload: A `WorkloadSpec` object, defining the specification of the workload that needs to
|
124
|
+
be uploaded.
|
125
|
+
|
126
|
+
Returns:
|
127
|
+
Workload specification in JSON format.
|
128
|
+
"""
|
129
|
+
circuit_json = json.dumps(serialize(workload.circuit))
|
130
|
+
result_types_json = [item.value for item in workload.result_types]
|
131
|
+
config = {
|
132
|
+
"circuit": circuit_json,
|
133
|
+
"result_types": result_types_json,
|
134
|
+
"c_values": _parameter_values_to_json(workload.parameter_values),
|
135
|
+
}
|
136
|
+
|
137
|
+
if workload.observable is not None:
|
138
|
+
config["observable"] = json.dumps(serialize(workload.observable))
|
139
|
+
|
140
|
+
return WorkloadSpecJSON(str(workload.backend), config)
|
141
|
+
|
142
|
+
|
143
|
+
def submit_workload(connection: SDK, workload: WorkloadSpec) -> str:
|
144
|
+
"""Uploads a workload to Pasqal's Cloud and returns the created workload ID.
|
145
|
+
|
146
|
+
Args:
|
147
|
+
connection: A `pasqal_cloud.SDK` instance which is used to connect to the cloud.
|
148
|
+
workload: A `WorkloadSpec` object, defining the specification of the workload that needs to
|
149
|
+
be uploaded.
|
150
|
+
|
151
|
+
Returns:
|
152
|
+
A workload id as a `str`.
|
153
|
+
"""
|
154
|
+
workload_json = _workload_spec_to_json(workload)
|
155
|
+
remote_workload = connection.create_workload(
|
156
|
+
workload_json.workload_type, workload_json.backend_type, workload_json.config
|
157
|
+
)
|
158
|
+
workload_id: str = remote_workload.id
|
159
|
+
return workload_id
|
160
|
+
|
161
|
+
|
162
|
+
class WorkloadNotDoneError(Exception):
|
163
|
+
"""Is raised if a workload is not yet finished running on remote."""
|
164
|
+
|
165
|
+
pass
|
166
|
+
|
167
|
+
|
168
|
+
class WorkloadStoppedError(Exception):
|
169
|
+
"""Is raised when a workload has stopped running on remote for some reason."""
|
170
|
+
|
171
|
+
pass
|
172
|
+
|
173
|
+
|
174
|
+
def check_status(connection: SDK, workload_id: str) -> WorkloadResult:
|
175
|
+
"""Checks if the workload is successfully finished on remote connection.
|
176
|
+
|
177
|
+
Args:
|
178
|
+
connection: A `pasqal_cloud.SDK` instance which is used to connect to the cloud.
|
179
|
+
workload_id: the id `str` that is associated with the workload.
|
180
|
+
|
181
|
+
Raises:
|
182
|
+
WorkloadNotDoneError: Is raised when the workload status is "PENDING", "RUNNING" or
|
183
|
+
"PAUSED".
|
184
|
+
WorkloadStoppedError: Is raise when the workload status is "CANCELED", "TIMED_OUT" or
|
185
|
+
"ERROR".
|
186
|
+
ValueError: Is raised when the workload status has an unsupported value.
|
187
|
+
|
188
|
+
Returns:
|
189
|
+
The workload result if its status is "DONE" as a `pasqal_cloud.Workload` object.
|
190
|
+
"""
|
191
|
+
# TODO Make the function return a "nice" result object
|
192
|
+
result = connection.get_workload(workload_id)
|
193
|
+
if result.status == "DONE":
|
194
|
+
return result
|
195
|
+
if result.status in ("PENDING", "RUNNING", "PAUSED"):
|
196
|
+
raise WorkloadNotDoneError(
|
197
|
+
f"Workload with id {workload_id} is not yet finished, the status is {result.status}"
|
198
|
+
)
|
199
|
+
if result.status in ("CANCELED", "TIMED_OUT", "ERROR"):
|
200
|
+
message = f"Workload with id {workload_id} couldn't finish, the status is {result.status}."
|
201
|
+
if result.status == "ERROR":
|
202
|
+
message += f"The following error(s) occurred {result.errors}"
|
203
|
+
raise WorkloadStoppedError(message)
|
204
|
+
raise ValueError(
|
205
|
+
f"Undefined workload status ({result.status}) was returned for workload ({result.id})"
|
206
|
+
)
|
207
|
+
|
208
|
+
|
209
|
+
def get_result(
|
210
|
+
connection: SDK, workload_id: str, timeout: float = 60.0, refresh_time: float = 1.0
|
211
|
+
) -> WorkloadResult:
|
212
|
+
"""Repeatedly checks if a workload has finished and returns the result.
|
213
|
+
|
214
|
+
Args:
|
215
|
+
connection: A `pasqal_cloud.SDK` instance which is used to connect to the cloud.
|
216
|
+
workload_id: the id `str` that is associated with the workload.
|
217
|
+
timeout: Time in seconds after which the function times out. Defaults to 60.0.
|
218
|
+
refresh_time: Time in seconds after which the remote is requested to update the status
|
219
|
+
again, when the workload is not finished yet. Defaults to 1.0.
|
220
|
+
|
221
|
+
Raises:
|
222
|
+
TimeoutError: _description_
|
223
|
+
|
224
|
+
Returns:
|
225
|
+
The workload result if its status is "DONE" as a `pasqal_cloud.Workload` object.
|
226
|
+
"""
|
227
|
+
max_refresh_count = int(timeout // refresh_time)
|
228
|
+
for _ in range(max_refresh_count):
|
229
|
+
try:
|
230
|
+
result = check_status(connection, workload_id)
|
231
|
+
except WorkloadNotDoneError:
|
232
|
+
time.sleep(refresh_time)
|
233
|
+
continue
|
234
|
+
return result
|
235
|
+
raise TimeoutError("Request timed out because it wasn't finished in the specified time. ")
|
qadence/transpile/digitalize.py
CHANGED
@@ -11,13 +11,13 @@ from qadence.types import LTSOrder
|
|
11
11
|
|
12
12
|
|
13
13
|
@overload
|
14
|
-
def digitalize(
|
15
|
-
|
14
|
+
def digitalize(
|
15
|
+
circuit: QuantumCircuit, approximation: LTSOrder = LTSOrder.BASIC
|
16
|
+
) -> QuantumCircuit: ...
|
16
17
|
|
17
18
|
|
18
19
|
@overload
|
19
|
-
def digitalize(block: AbstractBlock, approximation: LTSOrder = LTSOrder.BASIC) -> AbstractBlock:
|
20
|
-
...
|
20
|
+
def digitalize(block: AbstractBlock, approximation: LTSOrder = LTSOrder.BASIC) -> AbstractBlock: ...
|
21
21
|
|
22
22
|
|
23
23
|
@singledispatch
|
qadence/transpile/flatten.py
CHANGED
@@ -51,13 +51,13 @@ def _flat_blocks(block: AbstractBlock, T: Type) -> Generator:
|
|
51
51
|
@overload
|
52
52
|
def flatten(
|
53
53
|
circuit: QuantumCircuit, types: list = [ChainBlock, KronBlock, AddBlock]
|
54
|
-
) -> QuantumCircuit:
|
55
|
-
...
|
54
|
+
) -> QuantumCircuit: ...
|
56
55
|
|
57
56
|
|
58
57
|
@overload
|
59
|
-
def flatten(
|
60
|
-
|
58
|
+
def flatten(
|
59
|
+
block: AbstractBlock, types: list = [ChainBlock, KronBlock, AddBlock]
|
60
|
+
) -> AbstractBlock: ...
|
61
61
|
|
62
62
|
|
63
63
|
@singledispatch
|
qadence/transpile/invert.py
CHANGED
@@ -49,33 +49,27 @@ def reassign(block: AbstractBlock, qubit_map: dict[int, int]) -> AbstractBlock:
|
|
49
49
|
|
50
50
|
|
51
51
|
@overload
|
52
|
-
def invert_endianness(wf: Tensor) -> Tensor:
|
53
|
-
...
|
52
|
+
def invert_endianness(wf: Tensor) -> Tensor: ...
|
54
53
|
|
55
54
|
|
56
55
|
@overload
|
57
|
-
def invert_endianness(arr: np.ndarray) -> np.ndarray:
|
58
|
-
...
|
56
|
+
def invert_endianness(arr: np.ndarray) -> np.ndarray: ...
|
59
57
|
|
60
58
|
|
61
59
|
@overload
|
62
|
-
def invert_endianness(cntr: Counter) -> Counter:
|
63
|
-
...
|
60
|
+
def invert_endianness(cntr: Counter) -> Counter: ...
|
64
61
|
|
65
62
|
|
66
63
|
@overload
|
67
|
-
def invert_endianness(cntrs: list) -> list:
|
68
|
-
...
|
64
|
+
def invert_endianness(cntrs: list) -> list: ...
|
69
65
|
|
70
66
|
|
71
67
|
@overload
|
72
|
-
def invert_endianness(circuit: QuantumCircuit, n_qubits: int) -> QuantumCircuit:
|
73
|
-
...
|
68
|
+
def invert_endianness(circuit: QuantumCircuit, n_qubits: int) -> QuantumCircuit: ...
|
74
69
|
|
75
70
|
|
76
71
|
@overload
|
77
|
-
def invert_endianness(block: AbstractBlock, n_qubits: int, in_place: bool) -> AbstractBlock:
|
78
|
-
...
|
72
|
+
def invert_endianness(block: AbstractBlock, n_qubits: int, in_place: bool) -> AbstractBlock: ...
|
79
73
|
|
80
74
|
|
81
75
|
@singledispatch
|
qadence/transpile/transpile.py
CHANGED
@@ -12,15 +12,13 @@ BlockOrCirc = TypeVar("BlockOrCirc", AbstractBlock, QuantumCircuit)
|
|
12
12
|
@overload
|
13
13
|
def transpile(
|
14
14
|
*fs: Callable[[AbstractBlock], AbstractBlock]
|
15
|
-
) -> Callable[[AbstractBlock], AbstractBlock]:
|
16
|
-
...
|
15
|
+
) -> Callable[[AbstractBlock], AbstractBlock]: ...
|
17
16
|
|
18
17
|
|
19
18
|
@overload
|
20
19
|
def transpile(
|
21
20
|
*fs: Callable[[QuantumCircuit], QuantumCircuit]
|
22
|
-
) -> Callable[[QuantumCircuit], QuantumCircuit]:
|
23
|
-
...
|
21
|
+
) -> Callable[[QuantumCircuit], QuantumCircuit]: ...
|
24
22
|
|
25
23
|
|
26
24
|
def transpile(*fs: Callable) -> Callable:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: qadence
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.10.0
|
4
4
|
Summary: Pasqal interface for circuit-based quantum computing SDKs
|
5
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>
|
6
6
|
License: Apache 2.0
|
@@ -54,7 +54,7 @@ Requires-Dist: mlflow; extra == 'mlflow'
|
|
54
54
|
Provides-Extra: protocols
|
55
55
|
Requires-Dist: qadence-protocols; extra == 'protocols'
|
56
56
|
Provides-Extra: pulser
|
57
|
-
Requires-Dist: pasqal-cloud==0.12.
|
57
|
+
Requires-Dist: pasqal-cloud==0.12.7; extra == 'pulser'
|
58
58
|
Requires-Dist: pulser-core==1.2.0; extra == 'pulser'
|
59
59
|
Requires-Dist: pulser-simulation==1.2.0; extra == 'pulser'
|
60
60
|
Provides-Extra: visualization
|
@@ -4,13 +4,14 @@ 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=
|
7
|
+
qadence/extensions.py,sha256=Bx2cMsBq3sNTnmwPoqQF-7Tks-FspXb1fTl6zncJFUE,6068
|
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
11
|
qadence/model.py,sha256=OH61_Ij_c7PRywiXf16tJ5mnK9iYNbBTdRiHeG8PZ54,21623
|
12
12
|
qadence/overlap.py,sha256=ekaUnIcQWdF4hSFuUWpRjaxo43JyDGFOayP7vMXCZpw,16821
|
13
13
|
qadence/parameters.py,sha256=RDYklyW5EQZTjsAazEXa4lLGDOdmUUU53hLj385uSaI,12687
|
14
|
+
qadence/pasqal_cloud_connection.py,sha256=aGeLrJ50owc8xC1OBP2MIxy-v3heTDGlr42boH5QAAc,9677
|
14
15
|
qadence/protocols.py,sha256=bcYTxSjgMPV-a-D6yv90jCpnGik8myzaNpFv9z1gzJ0,442
|
15
16
|
qadence/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
17
|
qadence/qubit_support.py,sha256=Nkn1Q01RVViTcggSIom7EFKdWpAuM4TMGwBZ5feCUxA,2120
|
@@ -27,14 +28,14 @@ qadence/analog/device.py,sha256=t7oGjiZhk28IG2C-SVkc0RNSlV1L4SXV-tkLNiSYFNM,2570
|
|
27
28
|
qadence/analog/hamiltonian_terms.py,sha256=9LKidqqEMJTTdXeaxkxP_otTmcv9i4yeJ-JKCLOCK3Y,3421
|
28
29
|
qadence/analog/parse_analog.py,sha256=9Y_LMdw4wCHH6YSkvHhs6PUNwzT14HS7cUGheNSmDQg,4168
|
29
30
|
qadence/backends/__init__.py,sha256=ibm7wmZxuIoMYAQxgAx0MsfLYWOVHNWgLwyS1HjMuuI,215
|
30
|
-
qadence/backends/api.py,sha256=
|
31
|
+
qadence/backends/api.py,sha256=IPqxgJ1yJ1Z_yx37DSADro21C7ArGbfneYoFhDfttOI,2651
|
31
32
|
qadence/backends/gpsr.py,sha256=HW5m6iHLq3hLHdJoU1q1i1laR0hBs7uCniXqrsFoNCI,5616
|
32
33
|
qadence/backends/jax_utils.py,sha256=VfKhqCKknHDWZO21UFipWH_Lkiq175Z5GkP49gWjbyw,5038
|
33
34
|
qadence/backends/utils.py,sha256=SSiMxZjaFS8e8sB6ZBLXPKuJNQGl93pRMy9hnI4oDrw,9104
|
34
35
|
qadence/backends/horqrux/__init__.py,sha256=0OdVy6cq0oQggV48LO1WXdaZuSkDkz7OYNEPIkNAmfk,140
|
35
36
|
qadence/backends/horqrux/backend.py,sha256=KNFFGN9dsgB9QKtNXiP3LyMY9DQ-7W7ScyE6k29fHJY,8842
|
36
37
|
qadence/backends/horqrux/config.py,sha256=xz7JlUcwW_4JAbvProbSI9hA1SXZRRAN0Hr2bvmLzfg,892
|
37
|
-
qadence/backends/horqrux/convert_ops.py,sha256=
|
38
|
+
qadence/backends/horqrux/convert_ops.py,sha256=LTT8xptZ6DfhgEvFaACtal-qY2doy_Jj3dvV6HXE1Q8,8646
|
38
39
|
qadence/backends/pulser/__init__.py,sha256=capQ-eHqwtOeLf4mWsI0BIseAHhiLGie5cFD4-iVhUo,116
|
39
40
|
qadence/backends/pulser/backend.py,sha256=cI4IgijPpItNdDmLpKkJFas0X02wMiZd_XmVas41gEI,14846
|
40
41
|
qadence/backends/pulser/channels.py,sha256=ZF0yEXUFHAmi3IdeXjzdTNGR5NzaRRFTiUpUGVg2sO4,329
|
@@ -53,16 +54,17 @@ qadence/blocks/abstract.py,sha256=DSQUE71rMyRBwAP--4Tx1WQC_LCXaNlftjd7goGyrpQ,12
|
|
53
54
|
qadence/blocks/analog.py,sha256=ymnnlSVoW1XL05ZvnnHCqRTHuOXIEY_7E9M0PNKJZy4,10812
|
54
55
|
qadence/blocks/block_to_tensor.py,sha256=Sg7YGKUoPUUHKvyB8Khztrk7UYnV5SD451_3I00n84w,17367
|
55
56
|
qadence/blocks/composite.py,sha256=f9D8L3u5Ktu_-xDBWsWiPlY8I-YW5YFgU18BtqwFHK0,8937
|
56
|
-
qadence/blocks/embedding.py,sha256=
|
57
|
+
qadence/blocks/embedding.py,sha256=MI-gTPEe1e56AiHJr6MJwMAHdA7ZYmTo0b0VmFfyISQ,7029
|
57
58
|
qadence/blocks/manipulate.py,sha256=kPmzej7mnWFoqTJA2CkGulT7hcPha0GGPARC8rjZltg,2387
|
58
59
|
qadence/blocks/matrix.py,sha256=unE8mVWBTTcmSLX4le2fHqHFu4fbGeMTK8MrGoPsVRY,4036
|
59
60
|
qadence/blocks/primitive.py,sha256=GLruKpiFBStWVd_M9mzLr3MqDNPbyaMUzEVB6xV3cPQ,17657
|
60
|
-
qadence/blocks/utils.py,sha256=
|
61
|
-
qadence/constructors/__init__.py,sha256=
|
62
|
-
qadence/constructors/
|
61
|
+
qadence/blocks/utils.py,sha256=_V43qD7kQNK8JS3gxfpkRn56ZIF_GGrhAnARn1hq2hk,17772
|
62
|
+
qadence/constructors/__init__.py,sha256=kFAMJMZbEUQlNZBAJi2XOaPFMh-ynb2_A1lI85la4y0,1027
|
63
|
+
qadence/constructors/ala.py,sha256=76rdD_vMki5F_r_Iq-68zU3NHrJiebVmr-e7L4lIDAo,8359
|
63
64
|
qadence/constructors/feature_maps.py,sha256=BaAxFi6fSKwjsfFjqZ8T7lyZfjotcgH2OW3b0j67YVk,8644
|
64
65
|
qadence/constructors/hamiltonians.py,sha256=u9feuuLmgQ7tX0TcP8tsbCefvBSVjkY7k4fMT5vp12Q,10054
|
65
|
-
qadence/constructors/
|
66
|
+
qadence/constructors/hea.py,sha256=EJveIvEAwOGWfMQ08LUdZkjTRFoqQioXjQXimv4-VUs,11702
|
67
|
+
qadence/constructors/iia.py,sha256=wYcvR-4U-C1WkyK_EN8Rz2g3kZpWb1-302X3h60PtWw,7946
|
66
68
|
qadence/constructors/qft.py,sha256=2LpgQ-z1HUxB3rqHzYsbjqpdU63gyuuaUVCbNEFbjo8,7688
|
67
69
|
qadence/constructors/rydberg_feature_maps.py,sha256=RuXtuAhjpong78jpKUjZHdh4fOdHBnuht1ffoAMWdEE,4839
|
68
70
|
qadence/constructors/rydberg_hea.py,sha256=GrIrboyjEe1fJEbhtRYeCZ5dYzDVpMt-SQucS9UyNtw,8372
|
@@ -92,7 +94,7 @@ qadence/exceptions/exceptions.py,sha256=4j_VJpx2sZ2Mir5BJUWu4nwb131FY1ygO4q8-Xly
|
|
92
94
|
qadence/measurements/__init__.py,sha256=RIjG9tVJMqhNzyj7maZI250Um0KgHl2PizDcKJag-JU,161
|
93
95
|
qadence/measurements/protocols.py,sha256=mD50R9yPs5bIYH7Efd0BsR0503apiyrsZydi_Q6BJag,1161
|
94
96
|
qadence/measurements/samples.py,sha256=AVvszDwgfKnZ_ooATyTA3270vGeg1V3WO94jsfrTk-8,1200
|
95
|
-
qadence/measurements/shadow.py,sha256=
|
97
|
+
qadence/measurements/shadow.py,sha256=7FF7QoafUaFh1hK4PklwtBq9Vylv6gS6jCC8NxuntXI,12213
|
96
98
|
qadence/measurements/tomography.py,sha256=Xz_sw-Vo1LOAHFgTiUsEmIn77j__4uuJNwWZz3KmTgE,2679
|
97
99
|
qadence/measurements/utils.py,sha256=rGFU2ZoTWdhYrUmVHiSSobzhQri8VTCPC-CW23-Dv5E,6548
|
98
100
|
qadence/mitigations/__init__.py,sha256=RzaxYJftePFMloGhBVSixZ8fSe-ps_Jc-EyPm6xz-bs,159
|
@@ -101,14 +103,14 @@ qadence/mitigations/protocols.py,sha256=0TeHvlGTN8_88XNEwrjA97C5BUlrh34wYmx0w6-5
|
|
101
103
|
qadence/mitigations/readout.py,sha256=nI-voV5N0R7630Cn8t8x9EdV9iB76P0LDkRosy1s0Ec,6631
|
102
104
|
qadence/ml_tools/__init__.py,sha256=a52dLBtUh5rTJ0ks_LREv-txtQ8pQZZhnQaIg28fSOw,936
|
103
105
|
qadence/ml_tools/config.py,sha256=KcwvfyUb1XT-8NkP1ULjaGRNZqJm6dmWnuY9Bl4KZl0,19406
|
104
|
-
qadence/ml_tools/constructors.py,sha256=
|
106
|
+
qadence/ml_tools/constructors.py,sha256=bhARCCN-GHwSyBCBROnMGH32jo2wj3KV2FEVxIo5zDM,28021
|
105
107
|
qadence/ml_tools/data.py,sha256=5sAqG9rUtGZPzFlzEDhMjSeOXF8Z0BmszJ_FRzYAy2A,5311
|
106
108
|
qadence/ml_tools/models.py,sha256=DKSVFNC-Iq0-AmBrCZ1kqUpTBHQh_pX_1MqYT8eCG08,17045
|
107
109
|
qadence/ml_tools/optimize_step.py,sha256=wUnxfWy0c9rEKe41-26On1bPFBwmSYBF4WCGn76oyq8,3376
|
108
110
|
qadence/ml_tools/parameters.py,sha256=gew2Kq_5-RgRpaTvs8eauVhgo0sTqqDQEV6WHFEiLGM,1301
|
109
111
|
qadence/ml_tools/stages.py,sha256=qW2phMIvQBLM3tn2UoGN-ePiBnZoNq5k844eHVnnn8Y,1407
|
110
112
|
qadence/ml_tools/tensors.py,sha256=xZ9ZRzOqEaMgLUGWQf1najDmL6iLuN1ojCGVFs1Tm94,1337
|
111
|
-
qadence/ml_tools/trainer.py,sha256=
|
113
|
+
qadence/ml_tools/trainer.py,sha256=xU7qffXzWZDfJLlcYebGt4cGXnI8PPls_WdVrGQE31M,27026
|
112
114
|
qadence/ml_tools/utils.py,sha256=PW8FyoV0mG_DtN1U8njTDV5qxZ0EK4mnFwMAsLBArfk,1410
|
113
115
|
qadence/ml_tools/callbacks/__init__.py,sha256=pTdfjulDGNKca--9BgrdmMyvJSah_0spp929Th6RzC8,913
|
114
116
|
qadence/ml_tools/callbacks/callback.py,sha256=XoqTS1uLOkbh4FtKpDSXbUA5_LzjOAoVMaa2jYcYB3w,28800
|
@@ -124,7 +126,7 @@ qadence/noise/__init__.py,sha256=tnChHv7FzOaV8C7O0P2l_gfjrpmHg8JaNhZprL33CP4,161
|
|
124
126
|
qadence/noise/protocols.py,sha256=SPHJi5AiIOcz6U_iXY3ddVHk3cl9UHSDKk49eMTX2QM,8586
|
125
127
|
qadence/operations/__init__.py,sha256=HAAo9VZUTq2H7kcEarChTgTWCIq7LT25-xBxkwE0F9c,1922
|
126
128
|
qadence/operations/analog.py,sha256=v11DSrg-XUbwIAWAWM43y3VQbYKsx2ynx-HimUoC-x0,7435
|
127
|
-
qadence/operations/control_ops.py,sha256=
|
129
|
+
qadence/operations/control_ops.py,sha256=fPSwOxJaVtJNbwri1UdD20W1JXQlB-inPTCJG3Fk4hI,10187
|
128
130
|
qadence/operations/ham_evo.py,sha256=brJ11tlwj6UPYkUcnId-BKlzNStsZd0vp9FKHCFTjlM,10642
|
129
131
|
qadence/operations/parametric.py,sha256=kV5d-diaQAoRlqKqoo0CGCbPej6eAxHQXniqfFKff3g,5394
|
130
132
|
qadence/operations/primitive.py,sha256=hDuwWndfPWqchM_98mOMf40qpkuPuwh39DIwHAbzGRo,9944
|
@@ -132,12 +134,12 @@ qadence/transpile/__init__.py,sha256=JrrQ4Osc4nNRWWjRGmVn57fWc8WwF92MokhKLRZ1vVA
|
|
132
134
|
qadence/transpile/apply_fn.py,sha256=glZo2_wMOjw7_KgWKYbqg8j-9SDs-RefWIfxWgdQK8I,1336
|
133
135
|
qadence/transpile/block.py,sha256=jV-EyatrwwdL2ahjF3wyEhC3PKMBPLaL5sQN1VNFc_w,11582
|
134
136
|
qadence/transpile/circuit.py,sha256=KTh6Gv1czZddFuA1JhNNszheZbwViVixiGh4rGvIgTM,451
|
135
|
-
qadence/transpile/digitalize.py,sha256=
|
136
|
-
qadence/transpile/flatten.py,sha256=
|
137
|
-
qadence/transpile/invert.py,sha256=
|
137
|
+
qadence/transpile/digitalize.py,sha256=7oNHEBs50ff3rvP-Tb72tCQ5sk6vMpoQvz4CXyvH6Tc,1521
|
138
|
+
qadence/transpile/flatten.py,sha256=k4HAfVzvDV40HyfaukiEHyJtAtvFRIcyDbAWiCL8tf0,3425
|
139
|
+
qadence/transpile/invert.py,sha256=IeyidgBwECCKB0i7Ym0KkLyfcx42LyT2mbqkfbK1H8M,4843
|
138
140
|
qadence/transpile/noise.py,sha256=LDcDJtQGkgUPkL2t69gg6AScTb-p3J3SxCDZbYOu1L8,1668
|
139
|
-
qadence/transpile/transpile.py,sha256=
|
140
|
-
qadence-1.
|
141
|
-
qadence-1.
|
142
|
-
qadence-1.
|
143
|
-
qadence-1.
|
141
|
+
qadence/transpile/transpile.py,sha256=xnzkHA6Qdb-Y5Fv9Latrolrpw44N6_OKc7_QGt70f0I,2713
|
142
|
+
qadence-1.10.0.dist-info/METADATA,sha256=EZCIbVwwlysCzEh5Cq7xjJVrUDqHulODFjL6xLEaWGI,9955
|
143
|
+
qadence-1.10.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
144
|
+
qadence-1.10.0.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
145
|
+
qadence-1.10.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|