def test_memory_level_1(self):
     """Test that a memory level 1 single data is correctly marginalized."""
     memory = np.array([[1.0j, 1.0, 0.5 + 0.5j], [0.5 + 0.5j, 1.0, 1.0j]],
                       dtype=complex)
     result = marginal_memory(memory, [0, 2])
     expected = np.array([[1.0j, 0.5 + 0.5j], [0.5 + 0.5j, 1.0j]],
                         dtype=complex)
     np.testing.assert_array_equal(result, expected)
 def test_memory_level_0_avg(self):
     """Test that avg level 0 measurement data is correctly marginalized."""
     memory = np.asarray(
         [[-1059254.375, -26266612.0], [-9012669.0, -41877468.0],
          [6027076.0, -54875060.0]],
         dtype=complex,
     )
     result = marginal_memory(memory, [0, 2], avg_data=True)
     expected = np.asarray(
         [[-1059254.375, -26266612.0], [6027076.0, -54875060.0]],
         dtype=complex)
     np.testing.assert_array_equal(result, expected)
 def test_memory_level_0(self):
     """Test that a single level 0 measurement data is correctly marginalized."""
     memory = np.asarray(
         [
             # qubit 0                    qubit 1                     qubit 2
             [
                 [-12974255.0, -28106672.0],
                 [15848939.0, -53271096.0],
                 [-18731048.0, -56490604.0],
             ],  # shot 1
             [
                 [-18346508.0, -26587824.0],
                 [-12065728.0, -44948360.0],
                 [14035275.0, -65373000.0],
             ],  # shot 2
             [
                 [12802274.0, -20436864.0],
                 [-15967512.0, -37575556.0],
                 [15201290.0, -65182832.0],
             ],  # ...
             [[-9187660.0, -22197716.0], [-17028016.0, -49578552.0],
              [13526576.0, -61017756.0]],
             [[7006214.0, -32555228.0], [16144743.0, -33563124.0],
              [-23524160.0, -66919196.0]],
         ],
         dtype=complex,
     )
     result = marginal_memory(memory, [0, 2])
     expected = np.asarray(
         [
             [[-12974255.0, -28106672.0], [-18731048.0, -56490604.0]
              ],  # shot 1
             [[-18346508.0, -26587824.0], [14035275.0, -65373000.0]
              ],  # shot 2
             [[12802274.0, -20436864.0], [15201290.0, -65182832.0]],  # ...
             [[-9187660.0, -22197716.0], [13526576.0, -61017756.0]],
             [[7006214.0, -32555228.0], [-23524160.0, -66919196.0]],
         ],
         dtype=complex,
     )
     np.testing.assert_array_equal(result, expected)
 def test_error_on_multiple_return_types(self):
     """Test that ValueError raised if multiple return types are requested."""
     with self.assertRaises(ValueError):
         marginal_memory([], int_return=True, hex_return=True)
 def test_marginalize_memory_in_parallel(self):
     """Test that memory marginalizes correctly multithreaded."""
     memory = [hex(ii) for ii in range(15)]
     res = marginal_memory(memory, indices=[0], parallel_threshold=1)
     self.assertEqual(res, [bin(ii % 2)[2:] for ii in range(15)])
 def test_marginal_counts_result_memory_indices_None(self):
     """Test that a memory marginalizes correctly with indices=None."""
     memory = [hex(ii) for ii in range(8)]
     res = marginal_memory(memory, hex_return=True)
     self.assertEqual(res, memory)
 def test_marginalize_memory_hex(self):
     """Test that memory marginalizes correctly hex output."""
     memory = [hex(ii) for ii in range(8)]
     res = marginal_memory(memory, indices=[0], hex_return=True)
     self.assertEqual(res, [hex(ii % 2) for ii in range(8)])
 def test_marginalize_memory(self):
     """Test that memory marginalizes correctly."""
     memory = [hex(ii) for ii in range(8)]
     res = marginal_memory(memory, indices=[0])
     self.assertEqual(res, [bin(ii % 2)[2:] for ii in range(8)])