The class implements a simple Quantum Block
| 15 | #from qiskit.visualizatiosn import * |
| 16 | |
| 17 | class QuantumCircuit: |
| 18 | """ |
| 19 | The class implements a simple Quantum Block |
| 20 | """ |
| 21 | |
| 22 | def __init__(self, num_qubits, backend, copies: int = 1000): |
| 23 | self._circuit_ = qiskit.QuantumCircuit(num_qubits) |
| 24 | self.theta = qiskit.circuit.Parameter('theta') |
| 25 | self._circuit_.h([i for i in range(num_qubits)]) |
| 26 | self._circuit_.barrier() |
| 27 | self._circuit_.ry(self.theta, [i for i in range(num_qubits)]) |
| 28 | self._circuit_.measure_all() |
| 29 | |
| 30 | self.backend = backend |
| 31 | self.copies = copies |
| 32 | |
| 33 | def run(self, theta_batch): |
| 34 | job = qiskit.execute(self._circuit_, |
| 35 | self.backend, |
| 36 | shots=self.copies, |
| 37 | parameter_binds=[{self.theta: theta} for theta in theta_batch]) |
| 38 | result = job.result().get_counts(self._circuit_) |
| 39 | |
| 40 | counts = np.array(list(result.values())) |
| 41 | states = np.array(list(result.keys())).astype(float) |
| 42 | probs = counts / self.copies |
| 43 | expectation = np.array([np.sum(np.multiply(probs, states))]) |
| 44 | return expectation |
| 45 | |
| 46 | |
| 47 | class QuantumFunction(Function): |
no outgoing calls
no test coverage detected