Commit b834bdd8 authored by Nguyen, Thien Minh's avatar Nguyen, Thien Minh
Browse files

Fixed tests and reenabled tests



Signed-off-by: default avatarThien Nguyen <nguyentm@ornl.gov>
parent 0ad12404
Loading
Loading
Loading
Loading
+18 −18
Original line number Diff line number Diff line
@@ -5,23 +5,23 @@ add_test (NAME qcor_quasimo_python_bindings
set_tests_properties(qcor_quasimo_python_bindings
    PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_INSTALL_PREFIX}:$ENV{PYTHONPATH}")

#add_test (NAME qcor_simple_kernel_jit_python
#  COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_kernel_jit.py 
#  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
#)
#set_tests_properties(qcor_simple_kernel_jit_python
#    PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_INSTALL_PREFIX}:$ENV{PYTHONPATH}")
add_test (NAME qcor_simple_kernel_jit_python
 COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_kernel_jit.py 
 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
set_tests_properties(qcor_simple_kernel_jit_python
   PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_INSTALL_PREFIX}:$ENV{PYTHONPATH}")

#add_test (NAME qcor_test_qcor_spec_api
#    COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_qcor_spec_api.py 
#    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
#  )
#  set_tests_properties(qcor_test_qcor_spec_api
#      PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_INSTALL_PREFIX}:$ENV{PYTHONPATH}")
add_test (NAME qcor_test_qcor_spec_api
   COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_qcor_spec_api.py 
   WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 )
 set_tests_properties(qcor_test_qcor_spec_api
     PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_INSTALL_PREFIX}:$ENV{PYTHONPATH}")

#add_test (NAME qcor_kernel_ftqc_python
#  COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_kernel_ftqc.py -qrt ftqc
#  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
#)
#set_tests_properties(qcor_kernel_ftqc_python
#    PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_INSTALL_PREFIX}:$ENV{PYTHONPATH}")
 No newline at end of file
add_test (NAME qcor_kernel_ftqc_python
 COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_kernel_ftqc.py -qrt ftqc
 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
set_tests_properties(qcor_kernel_ftqc_python
   PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_INSTALL_PREFIX}:$ENV{PYTHONPATH}")
 No newline at end of file
+13 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ int_result = 0

class TestKernelFTQC(unittest.TestCase):
    def test_pass_by_ref(self):
        global testX0
        @qjit
        def testX0(q : qreg, out_meas_z: FLOAT_REF):
            X(q[0])
@@ -15,6 +16,7 @@ class TestKernelFTQC(unittest.TestCase):
            else:
                out_meas_z = 1.0 + out_meas_z

        global testX1
        @qjit
        def testX1(q : qreg, out_meas_z: FLOAT_REF):
            X(q[1])
@@ -23,6 +25,7 @@ class TestKernelFTQC(unittest.TestCase):
            else:
                out_meas_z = 1.0 + out_meas_z

        global test_ref
        @qjit
        def test_ref(q : qreg, out_meas_z: FLOAT_REF):
            testX0(q, out_meas_z)
@@ -39,6 +42,7 @@ class TestKernelFTQC(unittest.TestCase):
        self.assertAlmostEqual(float_result, -2.0)

    def test_pass_by_value(self):
        global testX0_byVal
        @qjit
        def testX0_byVal(q : qreg, out_meas_z: float):
            X(q[0])
@@ -47,6 +51,7 @@ class TestKernelFTQC(unittest.TestCase):
            else:
                out_meas_z = 1.0 + out_meas_z

        global testX1_byVal
        @qjit
        def testX1_byVal(q : qreg, out_meas_z: float):
            X(q[1])
@@ -55,6 +60,7 @@ class TestKernelFTQC(unittest.TestCase):
            else:
                out_meas_z = 1.0 + out_meas_z

        global test_byVal
        @qjit
        def test_byVal(q : qreg, out_meas_z: float):
            testX0_byVal(q, out_meas_z)
@@ -68,11 +74,13 @@ class TestKernelFTQC(unittest.TestCase):
        self.assertAlmostEqual(float_result, 0.0)

    def test_bit_flip_code(self):
        global encodeLogicalQubit
        @qjit
        def encodeLogicalQubit(q : qreg):
            CX(q[0], q[1])
            CX(q[0], q[2])

        global measureSyndrome
        @qjit
        def measureSyndrome(q : qreg, syndrome: INT_REF):
            # Make sure to clear syndrome
@@ -94,12 +102,14 @@ class TestKernelFTQC(unittest.TestCase):
                X(q[ancIdx])
                syndrome = syndrome + 2

        global reset_all_qubits
        @qjit
        def reset_all_qubits(q : qreg):
            for i in range(q.size()):
                if Measure(q[i]):
                    X(q[i])
        
        global testBitflipCode
        @qjit
        def testBitflipCode(q : qreg, qIdx: int, syndrome: INT_REF):
            H(q[0])
@@ -129,6 +139,7 @@ class TestKernelFTQC(unittest.TestCase):
        self.assertEqual(int_result, 2)

    def test_deuteron_measurement(self):
        global measure_basis
        @qjit
        def measure_basis(q: qreg, bases: List[int], out_parity: INT_REF):
            oneCount = 0
@@ -143,12 +154,14 @@ class TestKernelFTQC(unittest.TestCase):
                        oneCount = 1 + oneCount
            out_parity = oneCount - 2 * (oneCount / 2)

        global h2_ansatz
        @qjit 
        def h2_ansatz(q: qreg, theta: float):
            X(q[0])
            Ry(q[1], theta)
            CX(q[1], q[0])

        global estimate_term_expectation
        @qjit 
        def estimate_term_expectation(q: qreg, theta: float, bases: List[int], nSamples: int, out_energy: FLOAT_REF):
            exp_sum = 0.0
+2 −0
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ try:
            H = FOp('', 0.0002899) + FOp('0^ 0', -.43658) + \
                FOp('1 0^', 4.2866) + FOp('1^ 0', -4.2866) + FOp('1^ 1', 12.25) 
              
            global ansatz
            @qjit
            def ansatz(q: qreg, theta: float):
                X(q[0])
@@ -28,6 +29,7 @@ try:
            H = QOp('', 5.907) + QOp('Y0 Y1', -2.1433) + \
                QOp('X0 X1', -2.1433) + QOp('Z0', .21829) + QOp('Z1', -6.125) 
              
            global ansatz
            @qjit
            def ansatz(q: qreg, theta: float):
                X(q[0])
+11 −8
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ from qcor import *

class TestQCORSpecAPI(unittest.TestCase):
    def test_simple_deuteron(self):

        global ansatz
        @qjit
        def ansatz(q: qreg, theta: List[float]):
            X(q[0])
@@ -34,8 +34,9 @@ class TestQCORSpecAPI(unittest.TestCase):

    def test_simple_deuteron_with_grad(self):

        global ansatz1
        @qjit
        def ansatz(q: qreg, theta: float):
        def ansatz1(q: qreg, theta: float):
            X(q[0])
            Ry(q[1], theta)
            CX(q[1], q[0])
@@ -44,7 +45,7 @@ class TestQCORSpecAPI(unittest.TestCase):
            Y(0) * Y(1) + .21829 * Z(0) - 6.125 * Z(1) + 5.907
        
        n_params = 1
        obj = createObjectiveFunction(ansatz, H, n_params, {'gradient-strategy':'parameter-shift'})
        obj = createObjectiveFunction(ansatz1, H, n_params, {'gradient-strategy':'parameter-shift'})
        optimizer = createOptimizer('nlopt', {'nlopt-optimizer':'l-bfgs'})
        results = optimizer.optimize(obj)
        self.assertAlmostEqual(results[0], -1.74, places=1)
@@ -54,8 +55,9 @@ class TestQCORSpecAPI(unittest.TestCase):
        H = -2.1433 * X(0) * X(1) - 2.1433 * \
            Y(0) * Y(1) + .21829 * Z(0) - 6.125 * Z(1) + 5.907

        global ansatz2
        @qjit
        def ansatz(q : qreg, theta : float):
        def ansatz2(q : qreg, theta : float):
            X(q[0])
            Ry(q[1], theta)
            CX(q[1], q[0])
@@ -64,7 +66,7 @@ class TestQCORSpecAPI(unittest.TestCase):

        def objective_function(x):
            q = qalloc(H.nBits())
            energy = ansatz.observe(H, q, x[0])
            energy = ansatz2.observe(H, q, x[0])
            return abs(target_energy - energy)

        optimizer = createOptimizer('nlopt', {'nlopt-maxeval':20})
@@ -80,8 +82,9 @@ class TestQCORSpecAPI(unittest.TestCase):
            H = FOp('', 0.0002899) + FOp('0^ 0', -.43658) + \
                FOp('1 0^', 4.2866) + FOp('1^ 0', -4.2866) + FOp('1^ 1', 12.25) 
            
            global ansatz3
            @qjit
            def ansatz(q : qreg, theta : float):
            def ansatz3(q : qreg, theta : float):
                X(q[0])
                Ry(q[1], theta)
                CX(q[1], q[0])
@@ -90,7 +93,7 @@ class TestQCORSpecAPI(unittest.TestCase):

            def objective_function(x):
                q = qalloc(2)
                energy = ansatz.observe(H, q, x[0])
                energy = ansatz3.observe(H, q, x[0])
                print(energy)
                return abs(target_energy - energy)

@@ -102,7 +105,7 @@ class TestQCORSpecAPI(unittest.TestCase):
            Hq = jordan_wigner(H)
            def objective_function2(x):
                q = qalloc(2)
                energy = ansatz.observe(Hq, q, x[0])
                energy = ansatz3.observe(Hq, q, x[0])
                print(energy)
                return abs(target_energy - energy)

+1 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ class TestWorkflows(unittest.TestCase):
      H = -2.1433 * X(0) * X(1) - 2.1433 * \
            Y(0) * Y(1) + .21829 * Z(0) - 6.125 * Z(1) + 5.907
      
      global ansatz
      @qjit
      def ansatz(q : qreg, theta : float):
        X(q[0])