def test_group_subops(self):
        """grouper subroutine test"""
        paulis = (I ^ X) + (2 * X ^ X) + (3 * Z ^ Y)
        grouped_sum = AbelianGrouper.group_subops(paulis)
        with self.subTest('test group subops 1'):
            self.assertEqual(len(grouped_sum), 2)
            self.assertListEqual([str(op.primitive) for op in grouped_sum[0]], ['IX', 'XX'])
            self.assertListEqual([op.coeff for op in grouped_sum[0]], [1, 2])
            self.assertListEqual([str(op.primitive) for op in grouped_sum[1]], ['ZY'])
            self.assertListEqual([op.coeff for op in grouped_sum[1]], [3])

        paulis = X + (2 * Y) + (3 * Z)
        grouped_sum = AbelianGrouper.group_subops(paulis)
        with self.subTest('test group subops 2'):
            self.assertEqual(len(grouped_sum), 3)
            self.assertListEqual([str(op[0].primitive) for op in grouped_sum], ['X', 'Y', 'Z'])
            self.assertListEqual([op[0].coeff for op in grouped_sum], [1, 2, 3])
예제 #2
0
 def test_abelian_grouper4(self):
     """ abelian grouper test 4 """
     paulis = X + (2 * Y) + (3 * Z)
     grouped_sum = AbelianGrouper.group_subops(paulis)
     self.assertEqual(len(grouped_sum), 3)
     self.assertEqual(str(grouped_sum[0][0].primitive), 'X')
     self.assertEqual(grouped_sum[0][0].coeff, 1)
     self.assertEqual(str(grouped_sum[1][0].primitive), 'Y')
     self.assertEqual(grouped_sum[1][0].coeff, 2)
     self.assertEqual(str(grouped_sum[2][0].primitive), 'Z')
     self.assertEqual(grouped_sum[2][0].coeff, 3)
예제 #3
0
 def test_abelian_grouper3(self):
     """ abelian grouper test 3 """
     paulis = (I ^ X) + (2 * X ^ X) + (3 * Z ^ Y)
     for fast in [True, False]:
         for use_nx in [True, False]:
             grouped_sum = AbelianGrouper.group_subops(paulis,
                                                       fast=fast,
                                                       use_nx=use_nx)
             self.assertEqual(len(grouped_sum), 2)
             self.assertEqual(len(grouped_sum[0]), 2)
             self.assertEqual(str(grouped_sum[0][0].primitive), 'IX')
             self.assertEqual(grouped_sum[0][0].coeff, 1)
             self.assertEqual(str(grouped_sum[0][1].primitive), 'XX')
             self.assertEqual(grouped_sum[0][1].coeff, 2)
             self.assertEqual(len(grouped_sum[1]), 1)
             self.assertEqual(str(grouped_sum[1][0].primitive), 'ZY')
             self.assertEqual(grouped_sum[1][0].coeff, 3)
 def test_ablian_grouper_no_commute(self):
     """Abelian grouper test when non-PauliOp is given"""
     ops = Zero ^ Plus + X ^ Y
     with self.assertRaises(AquaError):
         _ = AbelianGrouper.group_subops(ops)