pennylane-qrack 0.10.1__py3-none-macosx_13_0_x86_64.whl → 0.10.2__py3-none-macosx_13_0_x86_64.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.

Potentially problematic release.


This version of pennylane-qrack might be problematic. Click here for more details.

@@ -16,4 +16,4 @@
16
16
  Version number (major.minor.patch[-label])
17
17
  """
18
18
 
19
- __version__ = "0.10.1"
19
+ __version__ = "0.10.2"
Binary file
@@ -24,7 +24,7 @@ import itertools as it
24
24
 
25
25
  import numpy as np
26
26
 
27
- from pennylane import QubitDevice, DeviceError
27
+ from pennylane import QubitDevice, DeviceError, QuantumFunctionError
28
28
  from pennylane.ops import (
29
29
  QubitStateVector,
30
30
  BasisState,
@@ -175,31 +175,34 @@ class QrackDevice(QubitDevice):
175
175
 
176
176
  def __init__(self, wires=0, shots=None, **kwargs):
177
177
  options = dict(kwargs)
178
- if 'isStabilizerHybrid' in options:
179
- self.isStabilizerHybrid = options['isStabilizerHybrid']
180
- if 'isTensorNetwork' in options:
181
- self.isTensorNetwork = options['isTensorNetwork']
182
- if 'isSchmidtDecompose' in options:
183
- self.isSchmidtDecompose = options['isSchmidtDecompose']
184
- if 'isBinaryDecisionTree' in options:
185
- self.isBinaryDecisionTree = options['isBinaryDecisionTree']
186
- if 'isOpenCL' in options:
187
- self.isOpenCL = options['isOpenCL']
188
- if 'isHostPointer' in options:
189
- self.isHostPointer = options['isHostPointer']
190
- if 'noise' in options:
191
- self.noise = options['noise']
178
+ if "isStabilizerHybrid" in options:
179
+ self.isStabilizerHybrid = options["isStabilizerHybrid"]
180
+ if "isTensorNetwork" in options:
181
+ self.isTensorNetwork = options["isTensorNetwork"]
182
+ if "isSchmidtDecompose" in options:
183
+ self.isSchmidtDecompose = options["isSchmidtDecompose"]
184
+ if "isBinaryDecisionTree" in options:
185
+ self.isBinaryDecisionTree = options["isBinaryDecisionTree"]
186
+ if "isOpenCL" in options:
187
+ self.isOpenCL = options["isOpenCL"]
188
+ if "isHostPointer" in options:
189
+ self.isHostPointer = options["isHostPointer"]
190
+ if "noise" in options:
191
+ self.noise = options["noise"]
192
+ if (self.noise != 0) and (shots is None):
193
+ raise ValueError("Shots must be finite for noisy simulation (not analytical mode).")
192
194
  super().__init__(wires=wires, shots=shots)
193
195
  self._state = QrackSimulator(
194
196
  self.num_wires,
195
- isStabilizerHybrid = self.isStabilizerHybrid,
197
+ isStabilizerHybrid=self.isStabilizerHybrid,
196
198
  isTensorNetwork=self.isTensorNetwork,
197
199
  isSchmidtDecompose=self.isSchmidtDecompose,
198
200
  isBinaryDecisionTree=self.isBinaryDecisionTree,
199
201
  isOpenCL=self.isOpenCL,
200
202
  isHostPointer=self.isHostPointer,
201
- noise = self.noise
203
+ noise=self.noise,
202
204
  )
205
+ self._circuit = []
203
206
 
204
207
  def _reverse_state(self):
205
208
  end = self.num_wires - 1
@@ -216,7 +219,14 @@ class QrackDevice(QubitDevice):
216
219
  operations (List[pennylane.Operation]): operations to be applied
217
220
  """
218
221
 
219
- for i, op in enumerate(operations):
222
+ self._circuit = self._circuit + operations
223
+ if self.noise == 0:
224
+ self._apply()
225
+ self._circuit = []
226
+ # else: Defer application until shots or expectation values are requested
227
+
228
+ def _apply(self):
229
+ for op in self._circuit:
220
230
  if isinstance(op, QubitStateVector):
221
231
  self._apply_qubit_state_vector(op)
222
232
  elif isinstance(op, BasisState):
@@ -647,20 +657,38 @@ class QrackDevice(QubitDevice):
647
657
  # estimate the ev
648
658
  return np.mean(self.sample(observable))
649
659
 
660
+ def _generate_sample(self):
661
+ rev_sample = self._state.m_all()
662
+ sample = 0
663
+ for i in range(self.num_wires):
664
+ if (rev_sample & (1 << i)) > 0:
665
+ sample |= 1 << (self.num_wires - (i + 1))
666
+ return sample
667
+
650
668
  def generate_samples(self):
651
669
  if self.shots is None:
652
- raise qml.QuantumFunctionError(
670
+ raise QuantumFunctionError(
653
671
  "The number of shots has to be explicitly set on the device "
654
672
  "when using sample-based measurements."
655
673
  )
656
674
 
675
+ if self.noise != 0:
676
+ self._samples = []
677
+ for _ in range(self.shots):
678
+ self._state.reset_all()
679
+ self._apply()
680
+ self._samples.append(self._generate_sample())
681
+ self._samples = QubitDevice.states_to_binary(
682
+ np.array([self._generate_sample()]), self.num_wires
683
+ )
684
+ self._circuit = []
685
+
686
+ return self._samples
687
+
657
688
  if self.shots == 1:
658
- rev_sample = self._state.m_all()
659
- sample = 0
660
- for i in range(self.num_wires):
661
- if (rev_sample & (1 << i)) > 0:
662
- sample |= 1 << (self.num_wires - (i + 1))
663
- self._samples = QubitDevice.states_to_binary(np.array([sample]), self.num_wires)
689
+ self._samples = QubitDevice.states_to_binary(
690
+ np.array([self._generate_sample()]), self.num_wires
691
+ )
664
692
 
665
693
  return self._samples
666
694
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pennylane-qrack
3
- Version: 0.10.1
3
+ Version: 0.10.2
4
4
  Summary: PennyLane plugin for Qrack.
5
5
  Home-page: http://github.com/vm6502q
6
6
  Maintainer: vm6502q
@@ -0,0 +1,15 @@
1
+ pennylane_qrack/CMakeCache.txt,sha256=ikR3Vw_axsyQXHQXIhKiWiprMn0WArSSK188F_cHmvM,16093
2
+ pennylane_qrack/Makefile,sha256=WgHeF4eQjsjX_OjNyuhzcuo1-YJMsVX9j82iABayQAQ,7789
3
+ pennylane_qrack/QrackDeviceConfig.toml,sha256=t_IQVSFR-GJ3VuqpQqm4M5gA3TVL4-y0qPq-f0FJwac,6219
4
+ pennylane_qrack/__init__.py,sha256=_g4NKu07_pXqxvQaxjdAPe769S5tWwYjqyHi3z7YKHc,673
5
+ pennylane_qrack/_version.py,sha256=YL61LFzCM_V-BsclpB2jHSN9t5GG3al6nqVVC3JGW7A,692
6
+ pennylane_qrack/cmake_install.cmake,sha256=V_v3t0o7_0wjq0Fxyg_StmG6P2KihbZa6ZWxI1ghWiQ,3088
7
+ pennylane_qrack/libqrack_device.dylib,sha256=Mun9yoWiGV7b-puHY58bGQW_tzhK98zeEVqKdQpYqAo,3241240
8
+ pennylane_qrack/qrack_device.cpp,sha256=eRoowI7n9XV63aoZEaDjWmK1NC4JQ1GBeL2uggDttG0,36846
9
+ pennylane_qrack/qrack_device.py,sha256=VFwbhAKvIKwpO9_fZ_sGv__DvYzTqRW77Hd8k0-DByk,26947
10
+ pennylane_qrack-0.10.2.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
11
+ pennylane_qrack-0.10.2.dist-info/METADATA,sha256=L9OiqwRP5f5EB4FRcVTBXKRnMGqfQGwY7xRuVdb4FQE,5525
12
+ pennylane_qrack-0.10.2.dist-info/WHEEL,sha256=J5ilKsqAoC0pyiH-h5sYtoeHADqK6Q5xDFVAl51dkYU,106
13
+ pennylane_qrack-0.10.2.dist-info/entry_points.txt,sha256=V6f1sN6IZZZaEvxrI47A3K_kksp8fDUWjLWD0Met7Ww,79
14
+ pennylane_qrack-0.10.2.dist-info/top_level.txt,sha256=5NFMNHqCHtVLwNkLg66xz846uUJAlnOJ5VGa6ulW1ow,16
15
+ pennylane_qrack-0.10.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.1.0)
2
+ Generator: setuptools (75.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-macosx_13_0_x86_64
5
5
 
@@ -1,15 +0,0 @@
1
- pennylane_qrack/CMakeCache.txt,sha256=ikR3Vw_axsyQXHQXIhKiWiprMn0WArSSK188F_cHmvM,16093
2
- pennylane_qrack/Makefile,sha256=WgHeF4eQjsjX_OjNyuhzcuo1-YJMsVX9j82iABayQAQ,7789
3
- pennylane_qrack/QrackDeviceConfig.toml,sha256=t_IQVSFR-GJ3VuqpQqm4M5gA3TVL4-y0qPq-f0FJwac,6219
4
- pennylane_qrack/__init__.py,sha256=_g4NKu07_pXqxvQaxjdAPe769S5tWwYjqyHi3z7YKHc,673
5
- pennylane_qrack/_version.py,sha256=wPzzxyCbgXdn3mdSkz3Gkpepi4x5Ik58UXi07BhMazA,692
6
- pennylane_qrack/cmake_install.cmake,sha256=V_v3t0o7_0wjq0Fxyg_StmG6P2KihbZa6ZWxI1ghWiQ,3088
7
- pennylane_qrack/libqrack_device.dylib,sha256=BqhS4snLfnK7e1biWCoYDsYxLsJiWBCgk_7fnbGx3Go,3304928
8
- pennylane_qrack/qrack_device.cpp,sha256=eRoowI7n9XV63aoZEaDjWmK1NC4JQ1GBeL2uggDttG0,36846
9
- pennylane_qrack/qrack_device.py,sha256=tN_RPJU8m4yr7AMfJQb6apRNxCKyX1XCIxpVwFo-2jw,26001
10
- pennylane_qrack-0.10.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
11
- pennylane_qrack-0.10.1.dist-info/METADATA,sha256=qGF858MmBaqNLGPk68IDYcAPF3bBHtEGL7kpmCBJrOQ,5525
12
- pennylane_qrack-0.10.1.dist-info/WHEEL,sha256=ltYqT0Jm_rFIBsQjbiCsK9NtBJ_2JztBV_lMGOlT0qc,106
13
- pennylane_qrack-0.10.1.dist-info/entry_points.txt,sha256=V6f1sN6IZZZaEvxrI47A3K_kksp8fDUWjLWD0Met7Ww,79
14
- pennylane_qrack-0.10.1.dist-info/top_level.txt,sha256=5NFMNHqCHtVLwNkLg66xz846uUJAlnOJ5VGa6ulW1ow,16
15
- pennylane_qrack-0.10.1.dist-info/RECORD,,