pyqrack-cpu 1.35.4__py3-none-win_amd64.whl → 1.38.1__py3-none-win_amd64.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 pyqrack-cpu might be problematic. Click here for more details.
- pyqrack/__init__.py +0 -1
- pyqrack/qrack_simulator.py +60 -63
- pyqrack/qrack_system/qrack_lib/qrack_pinvoke.dll +0 -0
- pyqrack/qrack_system/qrack_system.py +2 -2
- {pyqrack_cpu-1.35.4.dist-info → pyqrack_cpu-1.38.1.dist-info}/METADATA +1 -1
- pyqrack_cpu-1.38.1.dist-info/RECORD +15 -0
- pyqrack/util/__init__.py +0 -8
- pyqrack/util/convert_qiskit_circuit_to_qasm_experiment.py +0 -61
- pyqrack_cpu-1.35.4.dist-info/RECORD +0 -17
- {pyqrack_cpu-1.35.4.dist-info → pyqrack_cpu-1.38.1.dist-info}/LICENSE +0 -0
- {pyqrack_cpu-1.35.4.dist-info → pyqrack_cpu-1.38.1.dist-info}/WHEEL +0 -0
- {pyqrack_cpu-1.35.4.dist-info → pyqrack_cpu-1.38.1.dist-info}/top_level.txt +0 -0
pyqrack/__init__.py
CHANGED
pyqrack/qrack_simulator.py
CHANGED
|
@@ -15,9 +15,7 @@ _IS_QISKIT_AVAILABLE = True
|
|
|
15
15
|
try:
|
|
16
16
|
from qiskit.circuit.quantumcircuit import QuantumCircuit
|
|
17
17
|
from qiskit.compiler import transpile
|
|
18
|
-
from qiskit.qobj.qasm_qobj import QasmQobjExperiment
|
|
19
18
|
from qiskit.quantum_info.operators.symplectic.clifford import Clifford
|
|
20
|
-
from .util import convert_qiskit_circuit_to_qasm_experiment
|
|
21
19
|
except ImportError:
|
|
22
20
|
_IS_QISKIT_AVAILABLE = False
|
|
23
21
|
|
|
@@ -184,6 +182,9 @@ class QrackSimulator:
|
|
|
184
182
|
Qrack.qrack_lib.set_concurrency(self.sid, p)
|
|
185
183
|
self._throw_if_error()
|
|
186
184
|
|
|
185
|
+
def clone(self):
|
|
186
|
+
return QrackSimulator(cloneSid=self.sid)
|
|
187
|
+
|
|
187
188
|
# standard gates
|
|
188
189
|
|
|
189
190
|
## single-qubits gates
|
|
@@ -3265,7 +3266,7 @@ class QrackSimulator:
|
|
|
3265
3266
|
non_clifford_gates.append(op)
|
|
3266
3267
|
g = g + 1
|
|
3267
3268
|
|
|
3268
|
-
basis_gates = ["rz", "h", "x", "y", "z", "sx", "sxdg", "
|
|
3269
|
+
basis_gates = ["rz", "h", "x", "y", "z", "sx", "sxdg", "s", "sdg", "t", "tdg", "cx", "cy", "cz", "swap"]
|
|
3269
3270
|
try:
|
|
3270
3271
|
circ = transpile(clifford_circ, basis_gates=basis_gates, optimization_level=2)
|
|
3271
3272
|
except:
|
|
@@ -3337,7 +3338,7 @@ class QrackSimulator:
|
|
|
3337
3338
|
sqrt_ni = np.sqrt(-1j)
|
|
3338
3339
|
sqrt1_2 = 1 / math.sqrt(2)
|
|
3339
3340
|
ident = np.eye(2, dtype=np.complex128)
|
|
3340
|
-
# passable_gates = ["unitary", "rz", "h", "x", "y", "z", "sx", "sxdg", "
|
|
3341
|
+
# passable_gates = ["unitary", "rz", "h", "x", "y", "z", "sx", "sxdg", "s", "sdg", "t", "tdg"]
|
|
3341
3342
|
|
|
3342
3343
|
passed_swaps = []
|
|
3343
3344
|
for i in range(0, circ.width()):
|
|
@@ -3565,7 +3566,7 @@ class QrackSimulator:
|
|
|
3565
3566
|
circ.data.insert(j, copy.deepcopy(c.data[0]))
|
|
3566
3567
|
j -= 1
|
|
3567
3568
|
|
|
3568
|
-
basis_gates=["u", "rz", "h", "x", "y", "z", "sx", "sxdg", "
|
|
3569
|
+
basis_gates=["u", "rz", "h", "x", "y", "z", "sx", "sxdg", "s", "sdg", "t", "tdg", "cx", "cy", "cz", "swap"]
|
|
3569
3570
|
circ = transpile(circ, basis_gates=basis_gates, optimization_level=2)
|
|
3570
3571
|
|
|
3571
3572
|
#Eliminate unused ancillae
|
|
@@ -3662,150 +3663,150 @@ class QrackSimulator:
|
|
|
3662
3663
|
return
|
|
3663
3664
|
|
|
3664
3665
|
if (name == 'u1') or (name == 'p'):
|
|
3665
|
-
self._sim.u(operation.qubits[0], 0, 0, float(operation.params[0]))
|
|
3666
|
+
self._sim.u(operation.qubits[0]._index, 0, 0, float(operation.params[0]))
|
|
3666
3667
|
elif name == 'u2':
|
|
3667
3668
|
self._sim.u(
|
|
3668
|
-
operation.qubits[0],
|
|
3669
|
+
operation.qubits[0]._index,
|
|
3669
3670
|
math.pi / 2,
|
|
3670
3671
|
float(operation.params[0]),
|
|
3671
3672
|
float(operation.params[1]),
|
|
3672
3673
|
)
|
|
3673
3674
|
elif (name == 'u3') or (name == 'u'):
|
|
3674
3675
|
self._sim.u(
|
|
3675
|
-
operation.qubits[0],
|
|
3676
|
+
operation.qubits[0]._index,
|
|
3676
3677
|
float(operation.params[0]),
|
|
3677
3678
|
float(operation.params[1]),
|
|
3678
3679
|
float(operation.params[2]),
|
|
3679
3680
|
)
|
|
3680
3681
|
elif (name == 'unitary') and (len(operation.qubits) == 1):
|
|
3681
|
-
self._sim.mtrx(operation.params[0].flatten(), operation.qubits[0])
|
|
3682
|
+
self._sim.mtrx(operation.params[0].flatten(), operation.qubits[0]._index)
|
|
3682
3683
|
elif name == 'r':
|
|
3683
3684
|
self._sim.u(
|
|
3684
|
-
operation.qubits[0],
|
|
3685
|
+
operation.qubits[0]._index,
|
|
3685
3686
|
float(operation.params[0]),
|
|
3686
3687
|
float(operation.params[1]) - math.pi / 2,
|
|
3687
3688
|
(-1 * float(operation.params[1])) + math.pi / 2,
|
|
3688
3689
|
)
|
|
3689
3690
|
elif name == 'rx':
|
|
3690
|
-
self._sim.r(Pauli.PauliX, float(operation.params[0]), operation.qubits[0])
|
|
3691
|
+
self._sim.r(Pauli.PauliX, float(operation.params[0]), operation.qubits[0]._index)
|
|
3691
3692
|
elif name == 'ry':
|
|
3692
|
-
self._sim.r(Pauli.PauliY, float(operation.params[0]), operation.qubits[0])
|
|
3693
|
+
self._sim.r(Pauli.PauliY, float(operation.params[0]), operation.qubits[0]._index)
|
|
3693
3694
|
elif name == 'rz':
|
|
3694
|
-
self._sim.r(Pauli.PauliZ, float(operation.params[0]), operation.qubits[0])
|
|
3695
|
+
self._sim.r(Pauli.PauliZ, float(operation.params[0]), operation.qubits[0]._index)
|
|
3695
3696
|
elif name == 'h':
|
|
3696
|
-
self._sim.h(operation.qubits[0])
|
|
3697
|
+
self._sim.h(operation.qubits[0]._index)
|
|
3697
3698
|
elif name == 'x':
|
|
3698
|
-
self._sim.x(operation.qubits[0])
|
|
3699
|
+
self._sim.x(operation.qubits[0]._index)
|
|
3699
3700
|
elif name == 'y':
|
|
3700
|
-
self._sim.y(operation.qubits[0])
|
|
3701
|
+
self._sim.y(operation.qubits[0]._index)
|
|
3701
3702
|
elif name == 'z':
|
|
3702
|
-
self._sim.z(operation.qubits[0])
|
|
3703
|
+
self._sim.z(operation.qubits[0]._index)
|
|
3703
3704
|
elif name == 's':
|
|
3704
|
-
self._sim.s(operation.qubits[0])
|
|
3705
|
+
self._sim.s(operation.qubits[0]._index)
|
|
3705
3706
|
elif name == 'sdg':
|
|
3706
|
-
self._sim.adjs(operation.qubits[0])
|
|
3707
|
+
self._sim.adjs(operation.qubits[0]._index)
|
|
3707
3708
|
elif name == 'sx':
|
|
3708
3709
|
self._sim.mtrx(
|
|
3709
3710
|
[(1 + 1j) / 2, (1 - 1j) / 2, (1 - 1j) / 2, (1 + 1j) / 2],
|
|
3710
|
-
operation.qubits[0],
|
|
3711
|
+
operation.qubits[0]._index,
|
|
3711
3712
|
)
|
|
3712
3713
|
elif name == 'sxdg':
|
|
3713
3714
|
self._sim.mtrx(
|
|
3714
3715
|
[(1 - 1j) / 2, (1 + 1j) / 2, (1 + 1j) / 2, (1 - 1j) / 2],
|
|
3715
|
-
operation.qubits[0],
|
|
3716
|
+
operation.qubits[0]._index,
|
|
3716
3717
|
)
|
|
3717
3718
|
elif name == 't':
|
|
3718
|
-
self._sim.t(operation.qubits[0])
|
|
3719
|
+
self._sim.t(operation.qubits[0]._index)
|
|
3719
3720
|
elif name == 'tdg':
|
|
3720
|
-
self._sim.adjt(operation.qubits[0])
|
|
3721
|
+
self._sim.adjt(operation.qubits[0]._index)
|
|
3721
3722
|
elif name == 'cu1':
|
|
3722
3723
|
self._sim.mcu(
|
|
3723
|
-
operation.qubits[0:1], operation.qubits[1], 0, 0, float(operation.params[0])
|
|
3724
|
+
[q._index for q in operation.qubits[0:1]], operation.qubits[1]._index, 0, 0, float(operation.params[0])
|
|
3724
3725
|
)
|
|
3725
3726
|
elif name == 'cu2':
|
|
3726
3727
|
self._sim.mcu(
|
|
3727
|
-
operation.qubits[0:1],
|
|
3728
|
-
operation.qubits[1],
|
|
3728
|
+
[q._index for q in operation.qubits[0:1]],
|
|
3729
|
+
operation.qubits[1]._index,
|
|
3729
3730
|
math.pi / 2,
|
|
3730
3731
|
float(operation.params[0]),
|
|
3731
3732
|
float(operation.params[1]),
|
|
3732
3733
|
)
|
|
3733
3734
|
elif (name == 'cu3') or (name == 'cu'):
|
|
3734
3735
|
self._sim.mcu(
|
|
3735
|
-
operation.qubits[0:1],
|
|
3736
|
-
operation.qubits[1],
|
|
3736
|
+
[q._index for q in operation.qubits[0:1]],
|
|
3737
|
+
operation.qubits[1]._index,
|
|
3737
3738
|
float(operation.params[0]),
|
|
3738
3739
|
float(operation.params[1]),
|
|
3739
3740
|
float(operation.params[2]),
|
|
3740
3741
|
)
|
|
3741
3742
|
elif name == 'cx':
|
|
3742
|
-
self._sim.mcx(operation.qubits[0:1], operation.qubits[1])
|
|
3743
|
+
self._sim.mcx([q._index for q in operation.qubits[0:1]], operation.qubits[1]._index)
|
|
3743
3744
|
elif name == 'cy':
|
|
3744
|
-
self._sim.mcy(operation.qubits[0:1], operation.qubits[1])
|
|
3745
|
+
self._sim.mcy([q._index for q in operation.qubits[0:1]], operation.qubits[1]._index)
|
|
3745
3746
|
elif name == 'cz':
|
|
3746
|
-
self._sim.mcz(operation.qubits[0:1], operation.qubits[1])
|
|
3747
|
+
self._sim.mcz([q._index for q in operation.qubits[0:1]], operation.qubits[1]._index)
|
|
3747
3748
|
elif name == 'ch':
|
|
3748
|
-
self._sim.mch(operation.qubits[0:1], operation.qubits[1])
|
|
3749
|
+
self._sim.mch([q._index for q in operation.qubits[0:1]], operation.qubits[1]._index)
|
|
3749
3750
|
elif name == 'cp':
|
|
3750
3751
|
self._sim.mcmtrx(
|
|
3751
|
-
operation.qubits[0:1],
|
|
3752
|
+
[q._index for q in operation.qubits[0:1]],
|
|
3752
3753
|
[
|
|
3753
3754
|
1,
|
|
3754
3755
|
0,
|
|
3755
3756
|
0,
|
|
3756
3757
|
math.cos(float(operation.params[0])) + 1j * math.sin(float(operation.params[0])),
|
|
3757
3758
|
],
|
|
3758
|
-
operation.qubits[1],
|
|
3759
|
+
operation.qubits[1]._index,
|
|
3759
3760
|
)
|
|
3760
3761
|
elif name == 'csx':
|
|
3761
3762
|
self._sim.mcmtrx(
|
|
3762
|
-
operation.qubits[0:1],
|
|
3763
|
+
[q._index for q in operation.qubits[0:1]],
|
|
3763
3764
|
[(1 + 1j) / 2, (1 - 1j) / 2, (1 - 1j) / 2, (1 + 1j) / 2],
|
|
3764
|
-
operation.qubits[1],
|
|
3765
|
+
operation.qubits[1]._index,
|
|
3765
3766
|
)
|
|
3766
3767
|
elif name == 'csxdg':
|
|
3767
3768
|
self._sim.mcmtrx(
|
|
3768
|
-
operation.qubits[0:1],
|
|
3769
|
+
[q._index for q in operation.qubits[0:1]],
|
|
3769
3770
|
[(1 - 1j) / 2, (1 + 1j) / 2, (1 + 1j) / 2, (1 - 1j) / 2],
|
|
3770
|
-
operation.qubits[1],
|
|
3771
|
+
operation.qubits[1]._index,
|
|
3771
3772
|
)
|
|
3772
3773
|
elif name == 'dcx':
|
|
3773
|
-
self._sim.mcx(operation.qubits[0:1], operation.qubits[1])
|
|
3774
|
-
self._sim.mcx(operation.qubits[1:2], operation.qubits[0])
|
|
3774
|
+
self._sim.mcx([q._index for q in operation.qubits[0:1]], operation.qubits[1]._index)
|
|
3775
|
+
self._sim.mcx(operation.qubits[1:2]._index, operation.qubits[0]._index)
|
|
3775
3776
|
elif name == 'ccx':
|
|
3776
|
-
self._sim.mcx(operation.qubits[0:2], operation.qubits[2])
|
|
3777
|
+
self._sim.mcx([q._index for q in operation.qubits[0:2]], operation.qubits[2]._index)
|
|
3777
3778
|
elif name == 'ccy':
|
|
3778
|
-
self._sim.mcy(operation.qubits[0:2], operation.qubits[2])
|
|
3779
|
+
self._sim.mcy([q._index for q in operation.qubits[0:2]], operation.qubits[2]._index)
|
|
3779
3780
|
elif name == 'ccz':
|
|
3780
|
-
self._sim.mcz(operation.qubits[0:2], operation.qubits[2])
|
|
3781
|
+
self._sim.mcz([q._index for q in operation.qubits[0:2]], operation.qubits[2]._index)
|
|
3781
3782
|
elif name == 'mcx':
|
|
3782
|
-
self._sim.mcx(operation.qubits[0:-1], operation.qubits[-1])
|
|
3783
|
+
self._sim.mcx([q._index for q in operation.qubits[0:-1]], operation.qubits[-1]._index)
|
|
3783
3784
|
elif name == 'mcy':
|
|
3784
|
-
self._sim.mcy(operation.qubits[0:-1], operation.qubits[-1])
|
|
3785
|
+
self._sim.mcy([q._index for q in operation.qubits[0:-1]], operation.qubits[-1]._index)
|
|
3785
3786
|
elif name == 'mcz':
|
|
3786
|
-
self._sim.mcz(operation.qubits[0:-1], operation.qubits[-1])
|
|
3787
|
+
self._sim.mcz([q._index for q in operation.qubits[0:-1]], operation.qubits[-1]._index)
|
|
3787
3788
|
elif name == 'swap':
|
|
3788
|
-
self._sim.swap(operation.qubits[0], operation.qubits[1])
|
|
3789
|
+
self._sim.swap(operation.qubits[0]._index, operation.qubits[1]._index)
|
|
3789
3790
|
elif name == 'iswap':
|
|
3790
|
-
self._sim.iswap(operation.qubits[0], operation.qubits[1])
|
|
3791
|
+
self._sim.iswap(operation.qubits[0]._index, operation.qubits[1]._index)
|
|
3791
3792
|
elif name == 'iswap_dg':
|
|
3792
|
-
self._sim.adjiswap(operation.qubits[0], operation.qubits[1])
|
|
3793
|
+
self._sim.adjiswap(operation.qubits[0]._index, operation.qubits[1]._index)
|
|
3793
3794
|
elif name == 'cswap':
|
|
3794
3795
|
self._sim.cswap(
|
|
3795
|
-
operation.qubits[0:1], operation.qubits[1], operation.qubits[2]
|
|
3796
|
+
[q._index for q in operation.qubits[0:1]], operation.qubits[1]._index, operation.qubits[2]._index
|
|
3796
3797
|
)
|
|
3797
3798
|
elif name == 'mcswap':
|
|
3798
3799
|
self._sim.cswap(
|
|
3799
|
-
operation.qubits[:-2], operation.qubits[-2], operation.qubits[-1]
|
|
3800
|
+
[q._index for q in operation.qubits[:-2]], operation.qubits[-2]._index, operation.qubits[-1]._index
|
|
3800
3801
|
)
|
|
3801
3802
|
elif name == 'reset':
|
|
3802
3803
|
qubits = operation.qubits
|
|
3803
3804
|
for qubit in qubits:
|
|
3804
|
-
if self._sim.m(qubit):
|
|
3805
|
-
self._sim.x(qubit)
|
|
3805
|
+
if self._sim.m(qubit._index):
|
|
3806
|
+
self._sim.x(qubit._index)
|
|
3806
3807
|
elif name == 'measure':
|
|
3807
3808
|
qubits = operation.qubits
|
|
3808
|
-
clbits = operation.
|
|
3809
|
+
clbits = operation.clbits
|
|
3809
3810
|
cregbits = (
|
|
3810
3811
|
operation.register
|
|
3811
3812
|
if hasattr(operation, 'register')
|
|
@@ -3892,7 +3893,6 @@ class QrackSimulator:
|
|
|
3892
3893
|
measure_clbit = [clbit for clbit in sample_clbits]
|
|
3893
3894
|
|
|
3894
3895
|
# Sample and convert to bit-strings
|
|
3895
|
-
data = []
|
|
3896
3896
|
if num_samples == 1:
|
|
3897
3897
|
sample = self._sim.m_all()
|
|
3898
3898
|
result = 0
|
|
@@ -3902,12 +3902,13 @@ class QrackSimulator:
|
|
|
3902
3902
|
result |= qubit_outcome << index
|
|
3903
3903
|
measure_results = [result]
|
|
3904
3904
|
else:
|
|
3905
|
-
measure_results = self._sim.measure_shots(measure_qubit, num_samples)
|
|
3905
|
+
measure_results = self._sim.measure_shots([q._index for q in measure_qubit], num_samples)
|
|
3906
3906
|
|
|
3907
|
+
data = []
|
|
3907
3908
|
for sample in measure_results:
|
|
3908
3909
|
for index in range(len(measure_qubit)):
|
|
3909
3910
|
qubit_outcome = (sample >> index) & 1
|
|
3910
|
-
clbit = measure_clbit[index]
|
|
3911
|
+
clbit = measure_clbit[index]._index
|
|
3911
3912
|
clmask = 1 << clbit
|
|
3912
3913
|
self._classical_memory = (self._classical_memory & (~clmask)) | (
|
|
3913
3914
|
qubit_outcome << clbit
|
|
@@ -3923,12 +3924,9 @@ class QrackSimulator:
|
|
|
3923
3924
|
"Before trying to run_qiskit_circuit() with QrackSimulator, you must install Qiskit!"
|
|
3924
3925
|
)
|
|
3925
3926
|
|
|
3926
|
-
if isinstance(experiment, QuantumCircuit):
|
|
3927
|
-
experiment = convert_qiskit_circuit_to_qasm_experiment(experiment)
|
|
3928
|
-
|
|
3929
3927
|
instructions = []
|
|
3930
|
-
if isinstance(experiment,
|
|
3931
|
-
instructions = experiment.
|
|
3928
|
+
if isinstance(experiment, QuantumCircuit):
|
|
3929
|
+
instructions = experiment.data
|
|
3932
3930
|
else:
|
|
3933
3931
|
raise RuntimeError('Unrecognized "run_input" argument specified for run().')
|
|
3934
3932
|
|
|
@@ -3938,7 +3936,6 @@ class QrackSimulator:
|
|
|
3938
3936
|
self._sample_cregbits = []
|
|
3939
3937
|
self._sample_measure = True
|
|
3940
3938
|
_data = []
|
|
3941
|
-
shotsPerLoop = self._shots
|
|
3942
3939
|
shotLoopMax = 1
|
|
3943
3940
|
|
|
3944
3941
|
is_initializing = True
|
|
Binary file
|
|
@@ -36,7 +36,7 @@ class QrackSystem:
|
|
|
36
36
|
self.qrack_lib = CDLL(shared_lib_path)
|
|
37
37
|
except Exception as e:
|
|
38
38
|
if _platform == "win32":
|
|
39
|
-
shared_lib_path = "C:/Program Files/
|
|
39
|
+
shared_lib_path = "C:/Program Files (x86)/Qrack/bin/qrack_pinvoke.dll"
|
|
40
40
|
elif _platform == "darwin":
|
|
41
41
|
shared_lib_path = "/usr/local/lib/qrack/libqrack_pinvoke.dylib"
|
|
42
42
|
else:
|
|
@@ -46,7 +46,7 @@ class QrackSystem:
|
|
|
46
46
|
self.qrack_lib = CDLL(shared_lib_path)
|
|
47
47
|
except Exception as e:
|
|
48
48
|
if _platform == "win32":
|
|
49
|
-
shared_lib_path = "C:/Program Files (x86)/
|
|
49
|
+
shared_lib_path = "C:/Program Files (x86)/Qrack/bin/qrack_pinvoke.dll"
|
|
50
50
|
elif _platform == "darwin":
|
|
51
51
|
shared_lib_path = "/usr/lib/qrack/libqrack_pinvoke.dylib"
|
|
52
52
|
else:
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
pyqrack/__init__.py,sha256=faAl_3T44Jy3jROW1Tez_-_oQfCYgvU01wqOS2kwzrg,533
|
|
2
|
+
pyqrack/neuron_activation_fn.py,sha256=cvljN3vvoH71uPva8EFKxJomgiQMo7zqud2JoSpKTiM,615
|
|
3
|
+
pyqrack/pauli.py,sha256=NgtZd4aBN4l8Car14Ris9lZ1Y5JDfNNCN7kDRuo9vWk,673
|
|
4
|
+
pyqrack/qrack_circuit.py,sha256=6Km-AMtt2aG6cjriSMBULGPOzPzNCp8ewyPEG2ii7Ic,19649
|
|
5
|
+
pyqrack/qrack_neuron.py,sha256=kMQH2vlajXvkrycNcCs1A1odyp8-CMmaJKEujP4mi0I,9086
|
|
6
|
+
pyqrack/qrack_simulator.py,sha256=80f0hqTWrqpwKXz-q6bFmjkocJ4vnXNs9g3JgDe3je4,137701
|
|
7
|
+
pyqrack/quimb_circuit_type.py,sha256=fNsmfK9JoNdYN1_Clm9pmS_FTinNsGKJnKQID6L4Bgk,638
|
|
8
|
+
pyqrack/qrack_system/__init__.py,sha256=PUterej-xpA4BqFmiBrQCMeTQlsRf-K8Dxnwp-iVvUQ,343
|
|
9
|
+
pyqrack/qrack_system/qrack_system.py,sha256=4WSvgmlYhE4B_ZYp7Yvycu2hxao19vamGD8ofHgT1NY,43079
|
|
10
|
+
pyqrack/qrack_system/qrack_lib/qrack_pinvoke.dll,sha256=VcCLGbnNkhBa49DYDI8zeEWiMmN3-qu38BAK1-1JABY,1692672
|
|
11
|
+
pyqrack_cpu-1.38.1.dist-info/LICENSE,sha256=IdAVedmFOPQtHi_XeEI9OhJwUuwlT6tCJwrT55zAn3w,1090
|
|
12
|
+
pyqrack_cpu-1.38.1.dist-info/METADATA,sha256=zDIMGQSjXlNZ5eW_d5cEIn3JVm3Pe3RqyboMtLb2Bqk,6560
|
|
13
|
+
pyqrack_cpu-1.38.1.dist-info/WHEEL,sha256=JMWfR_Dj7ISokcwe0cBhCfK6JKnIi-ZX11L6d_ntt6o,98
|
|
14
|
+
pyqrack_cpu-1.38.1.dist-info/top_level.txt,sha256=YE_3q9JTGRLMilNg2tGP1y7uU-Dx8PDao2OhwoIbv8E,8
|
|
15
|
+
pyqrack_cpu-1.38.1.dist-info/RECORD,,
|
pyqrack/util/__init__.py
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
# (C) Daniel Strano and the Qrack contributors 2017-2021. All rights reserved.
|
|
2
|
-
#
|
|
3
|
-
# Use of this source code is governed by an MIT-style license that can be
|
|
4
|
-
# found in the LICENSE file or at https://opensource.org/licenses/MIT.
|
|
5
|
-
|
|
6
|
-
from .convert_qiskit_circuit_to_qasm_experiment import (
|
|
7
|
-
convert_qiskit_circuit_to_qasm_experiment,
|
|
8
|
-
)
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
_IS_QISKIT_AVAILABLE = True
|
|
2
|
-
try:
|
|
3
|
-
from qiskit.circuit.quantumcircuit import QuantumCircuit
|
|
4
|
-
from qiskit.qobj.qasm_qobj import QasmQobjExperiment, QasmQobjInstruction
|
|
5
|
-
except ImportError:
|
|
6
|
-
_IS_QISKIT_AVAILABLE = False
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class QrackQasmQobjInstructionConditional:
|
|
10
|
-
def __init__(self, mask, val):
|
|
11
|
-
self.mask = mask
|
|
12
|
-
self.val = val
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
def convert_qiskit_circuit_to_qasm_experiment(experiment, config=None, header=None):
|
|
16
|
-
if not _IS_QISKIT_AVAILABLE:
|
|
17
|
-
raise RuntimeError(
|
|
18
|
-
"Before trying to convert_circuit_to_qasm_experiment() with QrackSimulator, you must install Qiskit!"
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
instructions = []
|
|
22
|
-
for datum in experiment._data:
|
|
23
|
-
qubits = []
|
|
24
|
-
for qubit in datum[1]:
|
|
25
|
-
qubits.append(experiment.qubits.index(qubit))
|
|
26
|
-
|
|
27
|
-
clbits = []
|
|
28
|
-
for clbit in datum[2]:
|
|
29
|
-
clbits.append(experiment.clbits.index(clbit))
|
|
30
|
-
|
|
31
|
-
conditional = None
|
|
32
|
-
condition = datum[0].condition
|
|
33
|
-
if condition is not None:
|
|
34
|
-
if isinstance(condition[0], Clbit):
|
|
35
|
-
conditional = experiment.clbits.index(condition[0])
|
|
36
|
-
else:
|
|
37
|
-
creg_index = experiment.cregs.index(condition[0])
|
|
38
|
-
size = experiment.cregs[creg_index].size
|
|
39
|
-
offset = 0
|
|
40
|
-
for i in range(creg_index):
|
|
41
|
-
offset += len(experiment.cregs[i])
|
|
42
|
-
mask = ((1 << offset) - 1) ^ ((1 << (offset + size)) - 1)
|
|
43
|
-
val = condition[1]
|
|
44
|
-
conditional = (
|
|
45
|
-
offset
|
|
46
|
-
if (size == 1)
|
|
47
|
-
else QrackQasmQobjInstructionConditional(mask, val)
|
|
48
|
-
)
|
|
49
|
-
|
|
50
|
-
instructions.append(
|
|
51
|
-
QasmQobjInstruction(
|
|
52
|
-
datum[0].name,
|
|
53
|
-
qubits=qubits,
|
|
54
|
-
memory=clbits,
|
|
55
|
-
condition=condition,
|
|
56
|
-
conditional=conditional,
|
|
57
|
-
params=datum[0].params,
|
|
58
|
-
)
|
|
59
|
-
)
|
|
60
|
-
|
|
61
|
-
return QasmQobjExperiment(config=config, header=header, instructions=instructions)
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
pyqrack/__init__.py,sha256=gDz6LYCK_3GgGF973p3OGPfocfPgEs-qWaiL_tCw1fs,594
|
|
2
|
-
pyqrack/neuron_activation_fn.py,sha256=cvljN3vvoH71uPva8EFKxJomgiQMo7zqud2JoSpKTiM,615
|
|
3
|
-
pyqrack/pauli.py,sha256=NgtZd4aBN4l8Car14Ris9lZ1Y5JDfNNCN7kDRuo9vWk,673
|
|
4
|
-
pyqrack/qrack_circuit.py,sha256=6Km-AMtt2aG6cjriSMBULGPOzPzNCp8ewyPEG2ii7Ic,19649
|
|
5
|
-
pyqrack/qrack_neuron.py,sha256=kMQH2vlajXvkrycNcCs1A1odyp8-CMmaJKEujP4mi0I,9086
|
|
6
|
-
pyqrack/qrack_simulator.py,sha256=3mawPZArtQKVmKL5Rqi0v4nl7n9mmiXEHJZYwzWZDig,137224
|
|
7
|
-
pyqrack/quimb_circuit_type.py,sha256=fNsmfK9JoNdYN1_Clm9pmS_FTinNsGKJnKQID6L4Bgk,638
|
|
8
|
-
pyqrack/qrack_system/__init__.py,sha256=PUterej-xpA4BqFmiBrQCMeTQlsRf-K8Dxnwp-iVvUQ,343
|
|
9
|
-
pyqrack/qrack_system/qrack_system.py,sha256=fj58altw0xryjrb-Oi-S_HDcUb2Ft0Alp1UNOvtSF9E,43081
|
|
10
|
-
pyqrack/qrack_system/qrack_lib/qrack_pinvoke.dll,sha256=TlfYDckM_zNWmRet5kOrATM8tSGyATpr1OWi8s56I48,1696768
|
|
11
|
-
pyqrack/util/__init__.py,sha256=cx9yH6Px9cIpBdLO3rftxscbXKUneB36nGRoA68x42c,341
|
|
12
|
-
pyqrack/util/convert_qiskit_circuit_to_qasm_experiment.py,sha256=tcICZbIhTpM4hU_OfiS_n142cVoER9vR3ZWMaVf9-Zs,2126
|
|
13
|
-
pyqrack_cpu-1.35.4.dist-info/LICENSE,sha256=IdAVedmFOPQtHi_XeEI9OhJwUuwlT6tCJwrT55zAn3w,1090
|
|
14
|
-
pyqrack_cpu-1.35.4.dist-info/METADATA,sha256=TYiif4TAiiFyWSbP-ZFm-aQzc_NIyyMs6d7rGm9pb34,6560
|
|
15
|
-
pyqrack_cpu-1.35.4.dist-info/WHEEL,sha256=JMWfR_Dj7ISokcwe0cBhCfK6JKnIi-ZX11L6d_ntt6o,98
|
|
16
|
-
pyqrack_cpu-1.35.4.dist-info/top_level.txt,sha256=YE_3q9JTGRLMilNg2tGP1y7uU-Dx8PDao2OhwoIbv8E,8
|
|
17
|
-
pyqrack_cpu-1.35.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|