def plot(pt,counts): if pt == 'hist': from qiskit.tools.visualization import plot_histogram plot_histogram(counts) if pt == 'bloch_mv': from qiskit.tools.visualization import plot_bloch_multivector plot_bloch_multivector(counts)
def bloch_1(): qc = q.QuantumCircuit(2) init = [1j / sqrt(2), 1j / sqrt(2)] qc.initialize(init, 0) backend = Aer.get_backend('statevector_simulator') state_vector = q.execute(qc, backend=backend).result().get_statevector() plot_bloch_multivector(state_vector) plt.show()
def GroverTwo(): n = 2 grover_circuit = QuantumCircuit(n) for qubit in range(n): grover_circuit.h(qubit) # Оракул для |00> # for qubit in range(n): # grover_circuit.x(qubit) # grover_circuit.cz(0, 1) # for qubit in range(n): # grover_circuit.x(qubit) # Оракул для |01> # grover_circuit.x(1) # grover_circuit.cz(0, 1) # grover_circuit.x(1) # Оракул для |10> # grover_circuit.x(0) # grover_circuit.cz(0, 1) # grover_circuit.x(0) # Оракул для |11> grover_circuit.cz(0, 1) for qubit in range(n): grover_circuit.h(qubit) # Рефлексия for qubit in range(n): grover_circuit.z(qubit) grover_circuit.cz(0, 1) for qubit in range(n): grover_circuit.h(qubit) backend_sim = Aer.get_backend('statevector_simulator') job_sim = execute(grover_circuit, backend_sim) statevec = job_sim.result().get_statevector() plot_bloch_multivector(statevec) grover_circuit.measure_all() backend = Aer.get_backend('qasm_simulator') shots = 1024 results = execute(grover_circuit, backend=backend, shots=shots).result() answer = results.get_counts() return {"name": "00", "value": answer}
def inititalizeQbitStates(self): qr = QuantumRegister(3) cr = ClassicalRegister(3) qc = QuantumCircuit(qr, cr) backend = Aer.get_backend('statevector_simulator') out = execute(qc,backend).result().get_statevector() fig0 = plot_bloch_multivector(out) fig0.savefig("./img0_BlochDiagram") # step-1 for counter =1 qc.ry(np.pi/2, 0) #pi/2 rotation of q0 qc.draw(output='mpl',filename='./img1_CircuitDiagram') backend = Aer.get_backend('statevector_simulator') out = execute(qc,backend).result().get_statevector() fig1 = plot_bloch_multivector(out) fig1.savefig("./img1_BlochDiagram") # step-2 for counter =2 qc.cx(0, 1) qc.draw(output='mpl',filename='./img2_CircuitDiagram') backend = Aer.get_backend('statevector_simulator') out = execute(qc,backend).result().get_statevector() fig2 = plot_bloch_multivector(out) fig2.savefig("./img2_BlochDiagram") # step-3 for counter =3 qc.ry(np.pi, 0) qc.draw(output='mpl',filename='./img3_CircuitDiagram') backend = Aer.get_backend('statevector_simulator') out = execute(qc,backend).result().get_statevector() fig3 = plot_bloch_multivector(out) fig3.savefig("./img3_BlochDiagram") # step-4 for counter =4 qc.cx(0,2) qc.measure(qr, cr) qc.draw(output='mpl',filename='./img4_CircuitDiagram') backend = Aer.get_backend('statevector_simulator') out = execute(qc,backend).result().get_statevector() fig4 = plot_bloch_multivector(out) fig4.savefig("./img4_BlochDiagram") #histogram plot simulator = Aer.get_backend('qasm_simulator') result = execute(qc, backend = simulator).result() from qiskit.tools.visualization import plot_histogram fig = plot_histogram(result.get_counts(qc)) fig.savefig("./Histogram")
def inititalizeQbitStates(self): global qr global cr global qc backend = Aer.get_backend('statevector_simulator') out = execute(qc, backend).result().get_statevector() fig0 = plot_bloch_multivector(out) fig0.savefig("./img0_BlochDiagram") # step-1 for counter =1 qc.ry(np.pi / 2, 0) #pi/2 rotation of q0 qc.draw(output='mpl', filename='./img1_CircuitDiagram') backend = Aer.get_backend('statevector_simulator') out = execute(qc, backend).result().get_statevector() fig1 = plot_bloch_multivector(out) fig1.savefig("./img1_BlochDiagram") # step-2 for counter =2 qc.cx(0, 1) qc.draw(output='mpl', filename='./img2_CircuitDiagram') backend = Aer.get_backend('statevector_simulator') out = execute(qc, backend).result().get_statevector() fig2 = plot_bloch_multivector(out) fig2.savefig("./img2_BlochDiagram") # step-3 for counter =3 qc.ry(np.pi, 0) qc.draw(output='mpl', filename='./img3_CircuitDiagram') backend = Aer.get_backend('statevector_simulator') out = execute(qc, backend).result().get_statevector() fig3 = plot_bloch_multivector(out) fig3.savefig("./img3_BlochDiagram") # step-4 for counter =4 qc.cx(0, 2) qc.measure(qr, cr) qc.draw(output='mpl', filename='./img4_CircuitDiagram') backend = Aer.get_backend('statevector_simulator') out = execute(qc, backend).result().get_statevector() fig4 = plot_bloch_multivector(out) fig4.savefig("./img4_BlochDiagram")
def qgate(self, gate): if not isinstance(gate, str): self.state_vector = self.state_vector @ gate else: self.state_vector = np.array([1 + 0j, 0 + 0j]) fig = plot_bloch_multivector(self.state_vector) fig_mpl = FigureCanvasTkAgg(fig, f_mpl) fig_mpl._tkcanvas.grid(row=0, column=0, sticky="n") plt.close(fig) c = [] for n in self.state_vector.tolist(): c.append(f"{round(n.real, 2)} + {round(n.imag, 2)}j") state_out = f"[{c[0]}, {c[1]}]" l_state_v.configure(text=f"State Vector: {state_out}")
def getGoalBlochs(state): if state == '00': psi = np.array([1, 0, 0, 0]) return plot_bloch_multivector(psi, title="Goal Qubits") elif state == '01': psi = np.array([0, 1, 0, 0]) return plot_bloch_multivector(psi, title="Goal Qubits") elif state == '10': psi = np.array([0, 0, 1, 0]) return plot_bloch_multivector(psi, title="Goal Qubits") elif state == '11': psi = np.array([0, 0, 0, 1]) return plot_bloch_multivector(psi, title="Goal Qubits") elif state == '1': psi = np.array([0, 1]) return plot_bloch_multivector(psi, title="Goal Qubits") elif state == '0': psi = np.array([1, 0]) return plot_bloch_multivector(psi, title="Goal Qubits")
from qiskit import * from qiskit.tools.visualization import plot_bloch_multivector circuit = QuantumCircuit(1,1) circuit.cx(0,1) simulator = Aer.get_backend('statevector_simulator') result = execute(circuit, backend = simulator).result() statevector = result.get_statevector() print(statevector) circuit.draw(output = 'mpl') plot_bloch_multivector(statevector)
circuit.h(qr[2]) circuit.draw(output='mpl') circuit.measure(qr,cr) circuit.draw(output='mpl') # Procedemos a ejecutar en entorno ideal simulator=Aer.get_backend('qasm_simulator') result=execute(circuit,backend=simulator).result() # visualizacion resultado from qiskit.tools.visualization import plot_histogram plot_histogram(result.get_counts(circuit)) from qiskit.tools.visualization import plot_bloch_multivector plot_bloch_multivector(result.get_counts(circuit)) from qiskit.tools.visualization import plot_gate_map plot_gate_map(result.get_counts(circuit)) # ejecucion en entorno real IBMQ.load_account() provider=IBMQ.get_provider('ibm-q') qcomp=provider.get_backend('ibmq_london') job=execute(circuit,backend=qcomp) from qiskit.tools.monitor import job_monitor
# Add a CX (CNOT) gate on control qubit 0 and target qubit 1 circuit.cx(0, 1) circuit.t(0) #circuit.measure_all() # Execute the circuit on the statevector simulator job = execute(circuit, simulator) # Grab results from the job result = job.result() statevector = result.get_statevector(circuit) plot_bloch_multivector(statevector, title='Bloch sphere') plot_state_city(statevector, title='State vector') print(statevector) # Returns counts counts = result.get_counts(circuit) print("\nCounts:",counts) # Draw the circuit circ_plt = circuit.draw(output='mpl') plt.show(block=False) print(circuit.draw(output='text')) # Plot a histogram fig = plot_histogram(counts)
import qiskit as q from qiskit import Aer,execute from qiskit import IBMQ from qiskit.tools.visualization import plot_histogram,plot_bloch_multivector from qiskit.tools.monitor import job_monitor import matplotlib statevector=q.Aer.get_backend("statevector_simulator") qasm_sim=q.Aer.get_backend("qasm_simulator") def do_jobs(circuit): result=execute(circuit,backend=statevector).result() statevec = result.get_statevector() n_qubits=circuit.num_qubits circuit.measure([i for i in range(n_qubits)],[i for i in range(n_qubits)]) result2=execute(circuit,backend=qasm_sim).result() counts = result2.get_counts() return statevec,counts circuit=q.QuantumCircuit(3,3) circuit.h(0) circuit.cx(0,1) circuit.cx(1,2) print(circuit) statevec,counts=do_jobs(circuit) plot_bloch_multivector(statevec).show() #plot_histogram(counts).show()
""" from qiskit import * from qiskit.tools.visualization import plot_bloch_multivector from qiskit.tools.visualization import plot_histogram #get plot_histogram #Circuit manipulation circuit = QuantumCircuit(3,3) #Create circuit with 1 qubit and 1 bit circuit.x(0) #Give the qubit X gate (0) means 1st qubit (1) means 2nd qubit #Show the result in state vector. simulator = Aer.get_backend("statevector_simulator") job = execute( circuit, simulator) result = job.result() statevector = result.get_statevector() print(statevector) #State vector representation plot_bloch_multivector(statevector) #show vector in bloch circuit.draw(output="mpl") #Show the matrix representation of gate simulator = Aer.get_backend("unitary_simulator") result1 = execute(circuit,simulator).result() unitary = result1.get_unitary() print(unitary) #gate matrix representation representation #Show the measurement result in bits representation and probabilities. circuit.measure([0,1,2],[0,1,2]) #in this representation, measurement is required. backend = Aer.get_backend("qasm_simulator") answer = execute(circuit, backend, shots=2000).result() #Note that 001 for this case because the last bit is the result of qubit 0. counts = answer.get_counts(circuit) plot_histogram(counts)
f_mpl.grid(row=0, column=1, sticky="n", pady=5) l_state_v = Label(info, text="State Vector:", width=50, height=1, anchor="w", relief=GROOVE) l_state_v.grid(row=0, column=0, pady=5) b_reset = Button(info, text="RESET", width=50, command=lambda: V.qgate("reset")).grid(row=1, column=0) V = BSVector() fig = plot_bloch_multivector(V.state_vector) V.qgate("reset") operators = Frame(info) operators.rowconfigure([0, 1], pad=10) operators.grid(row=2, column=0, sticky="n") pauli = Frame(operators, borderwidth=2, relief=GROOVE) pauli.grid(row=0, column=0, sticky="n") hadamard = Frame(operators, borderwidth=2, relief=GROOVE) hadamard.grid(row=1, column=0, sticky="n") other = Frame(operators, borderwidth=2, relief=GROOVE) other.grid(row=2, column=0, sticky="n")
def getCurrentBlochs(psi): return plot_bloch_multivector(psi, title="Current Qubits")