Exemplo n.º 1
0
    def test_locationmodel_valid(self):
        lm = LocationModel(4, 2)
        self.assertEqual(lm.num_qubits, 4)
        self.assertEqual(lm.gate_size, 2)
        self.assertEqual(lm.locations, set(it.combinations(range(4), 2)))
        self.assertEqual(lm.locations, set(lm.buckets[0] + lm.buckets[1]))

        lm = LocationModel(6, 3)
        self.assertEqual(lm.num_qubits, 6)
        self.assertEqual(lm.gate_size, 3)
        self.assertEqual(lm.locations, set(it.combinations(range(6), 3)))
        self.assertEqual(lm.locations, set(lm.buckets[0] + lm.buckets[1]))

        def valid_alg(locations):
            locations = list(locations)
            n = len(locations)
            return [locations[:n // 2], locations[n // 2:]]

        lm = LocationModel(4, 2, None, valid_alg)
        self.assertEqual(lm.num_qubits, 4)
        self.assertEqual(lm.gate_size, 2)
        self.assertEqual(lm.locations, set(it.combinations(range(4), 2)))
        self.assertEqual(lm.locations, set(lm.buckets[0] + lm.buckets[1]))
        locations = list(lm.locations)
        n = len(locations)
        self.assertEqual(lm.buckets[0], locations[:n // 2])
        self.assertEqual(lm.buckets[1], locations[n // 2:])
Exemplo n.º 2
0
 def test_genericgate_constructor_invalid(self):
     reset_tensor_cache()
     lm = LocationModel(4, 2)
     self.assertRaises(ValueError, GenericGate, "Test", 2, 4, lm)
     self.assertRaises(ValueError, GenericGate, "Test", 4, 2, lm, [0, 1])
     self.assertRaises(ValueError, GenericGate, "Test", 4, 2, lm, [0] * 16,
                       [0, 1])
    def test_genericgate_get_fun_vals(self):
        reset_tensor_cache()
        lm = LocationModel(4, 2)
        gg = GenericGate("Test", 4, 2, lm, loc_vals=[1, 0, 0, 0, 0, 0])

        with tf.Session() as sess:
            sess.run(tf.global_variables_initializer())
            fun_vals = gg.get_fun_vals(sess)

        self.assertTrue(np.array_equal(fun_vals, [0.25] * 16))
Exemplo n.º 4
0
    def test_genericgate_get_location ( self ):
        reset_tensor_cache()
        lm = LocationModel( 4, 2 )
        gg = GenericGate( "Test", 4, 2, lm, loc_vals = [ 1, 0, 0, 0, 0, 0 ] )

        with tf.Session() as sess:
            sess.run( tf.global_variables_initializer() )
            location = gg.get_location( sess )

        self.assertTrue( np.array_equal( location, list( lm.locations )[0] ) )
    def test_genericgate_get_unitary(self):
        reset_tensor_cache()
        lm = LocationModel(4, 2)
        gg = GenericGate("Test", 4, 2, lm, loc_vals=[1, 0, 0, 0, 0, 0])

        with tf.Session() as sess:
            sess.run(tf.global_variables_initializer())
            gate = gg.get_unitary(sess)

        paulis = get_pauli_n_qubit_projection(4, (0, 1))
        H = pauli_dot_product([0.25] * 16, paulis)
        U = la.expm(1j * H)
        self.assertTrue(hilbert_schmidt_distance(gate, U) <= 1e-16)
    def test_genericgate_get_herm(self):
        reset_tensor_cache()
        lm = LocationModel(4, 2)
        gg = GenericGate("Test", 4, 2, lm, loc_vals=[1, 0, 0, 0, 0, 0])
        herm = gg.get_herm()

        with tf.Session() as sess:
            sess.run(tf.global_variables_initializer())
            herm = herm.eval()

        paulis = get_pauli_n_qubit_projection(4, list(lm.locations)[0])
        H = pauli_dot_product([0.25] * 16, paulis)
        self.assertTrue(np.allclose(herm, H, rtol=0, atol=1e-15))
Exemplo n.º 7
0
    def test_genericgate_constructor_valid(self):
        reset_tensor_cache()
        lm = LocationModel(4, 2)
        gg = GenericGate("Test", 4, 2, lm)
        self.assertEqual(gg.name, "Test")
        self.assertEqual(gg.num_qubits, 4)
        self.assertEqual(gg.gate_size, 2)
        self.assertTrue(np.array_equal(gg.loc_vals, [0] * 6))
        self.assertTrue(np.array_equal(gg.fun_vals, [0.25] * 16))
        self.assertTrue(np.array_equal(list(lm.locations), gg.topology))

        gg = GenericGate("Test", 4, 2, lm, parity=0)
        self.assertEqual(gg.name, "Test")
        self.assertEqual(gg.num_qubits, 4)
        self.assertEqual(gg.gate_size, 2)
        self.assertTrue(np.array_equal(gg.fun_vals, [0.25] * 16))
        self.assertTrue(np.array_equal(lm.buckets[0], gg.topology))
    def test_locationmodel_fix_locations(self):
        lm = LocationModel(4, 2)
        loc_vals = [[0, 1, 2], [0, 1, 2]]
        loc_fixed = lm.fix_locations(loc_vals)
        self.assertEqual(loc_fixed[0], lm.buckets[1][2])
        self.assertEqual(loc_fixed[1], lm.buckets[0][2])

        lm = LocationModel(4, 2)
        loc_vals = [[0, 3, 2], [0, 1, 2]]
        loc_fixed = lm.fix_locations(loc_vals)
        self.assertEqual(loc_fixed[0], lm.buckets[1][1])
        self.assertEqual(loc_fixed[1], lm.buckets[0][2])