def test_teleport(self): filename = self._get_resource_path('test_teleport.tex') QPS_SPECS = { "circuits": [{ "name": "teleport", "quantum_registers": [{ "name": "q", "size": 3 }], "classical_registers": [ { "name": "c0", "size": 1 }, { "name": "c1", "size": 1 }, { "name": "c2", "size": 1 }, ] }] } qp = QuantumProgram(specs=QPS_SPECS) qc = qp.get_circuit("teleport") q = qp.get_quantum_register("q") c0 = qp.get_classical_register("c0") c1 = qp.get_classical_register("c1") c2 = qp.get_classical_register("c2") # Prepare an initial state qc.u3(0.3, 0.2, 0.1, q[0]) # Prepare a Bell pair qc.h(q[1]) qc.cx(q[1], q[2]) # Barrier following state preparation qc.barrier(q) # Measure in the Bell basis qc.cx(q[0], q[1]) qc.h(q[0]) qc.measure(q[0], c0[0]) qc.measure(q[1], c1[0]) # Apply a correction qc.z(q[2]).c_if(c0, 1) qc.x(q[2]).c_if(c1, 1) qc.measure(q[2], c2[0]) try: latex_drawer(qc, filename) except Exception: if os.path.exists(filename): os.remove(filename) raise
def test_teleport(self): filename = self._get_resource_path('test_teleport.tex') q = qiskit.QuantumRegister(3, 'q') c = qiskit.ClassicalRegister(3, 'c') qc = qiskit.QuantumCircuit(q, c) # Prepare an initial state qc.u3(0.3, 0.2, 0.1, q[0]) # Prepare a Bell pair qc.h(q[1]) qc.cx(q[1], q[2]) # Barrier following state preparation qc.barrier(q) # Measure in the Bell basis qc.cx(q[0], q[1]) qc.h(q[0]) qc.measure(q[0], c[0]) qc.measure(q[1], c[1]) # Apply a correction qc.z(q[2]).c_if(c, 1) qc.x(q[2]).c_if(c, 2) qc.measure(q[2], c[2]) try: latex_drawer(qc, filename) self.assertNotEqual(os.path.exists(filename), False) finally: if os.path.exists(filename): os.remove(filename)
def test_teleport(self): filename = self._get_resource_path('test_teleport.tex') q = qiskit.QuantumRegister(3, 'q') c = qiskit.ClassicalRegister(3, 'c') qc = qiskit.QuantumCircuit(q, c) # Prepare an initial state qc.u3(0.3, 0.2, 0.1, q[0]) # Prepare a Bell pair qc.h(q[1]) qc.cx(q[1], q[2]) # Barrier following state preparation qc.barrier(q) # Measure in the Bell basis qc.cx(q[0], q[1]) qc.h(q[0]) qc.measure(q[0], c[0]) qc.measure(q[1], c[1]) # Apply a correction qc.z(q[2]).c_if(c, 1) qc.x(q[2]).c_if(c, 2) qc.measure(q[2], c[2]) try: latex_drawer(qc, filename) self.assertNotEqual(os.path.exists(filename), False) finally: if os.path.exists(filename): os.remove(filename)
def test_latex_drawer(self): filename = self._get_resource_path('test_latex_drawer.tex') try: latex_drawer(self.qc, filename) except Exception: if os.path.exists(filename): os.remove(filename) raise
def test_tiny_circuit(self): filename = self._get_resource_path('test_tiny.tex') qc = self.random_circuit(1, 1, 1) try: latex_drawer(qc, filename) self.assertNotEqual(os.path.exists(filename), False) finally: if os.path.exists(filename): os.remove(filename)
def test_normal_circuit(self): filename = self._get_resource_path('test_normal.tex') qc = self.random_circuit(5, 5, 3) try: latex_drawer(qc, filename) self.assertNotEqual(os.path.exists(filename), False) finally: if os.path.exists(filename): os.remove(filename)
def circuitImage(circuit, basis="u1,u2,u3,cx"): """Obtain the circuit in image format Note: Requires pdflatex installed (to compile Latex) Note: Required pdf2image Python package (to display pdf as image) """ filename='circuit' tmpdir='tmp/' if not os.path.exists(tmpdir): os.makedirs(tmpdir) latex_drawer(circuit, tmpdir+filename+".tex", basis=basis) os.system("pdflatex -output-directory {} {}".format(tmpdir, filename+".tex")) images = pdf2image.convert_from_path(tmpdir+filename+".pdf") shutil.rmtree(tmpdir) return images[0]
def draw_circuit(aCircuit, outfilename="bv.tex"): """ draw the circuit """ latex_drawer(aCircuit, outfilename, basis="h,x,cx")