Beispiel #1
0
    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)
Beispiel #4
0
 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)
Beispiel #7
0
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]
Beispiel #8
0
def draw_circuit(aCircuit, outfilename="bv.tex"):
    """
        draw the circuit
    """
    latex_drawer(aCircuit, outfilename, basis="h,x,cx")