Пример #1
0
 def test_not_global_seed(self, method):
     """Test fixing seed is locally scoped ({method} method)."""
     seed = 314159
     test_cases = 100
     random_density_matrix(2, method=method, seed=seed)
     rng_before = np.random.randint(1000, size=test_cases)
     random_density_matrix(2, method=method, seed=seed)
     rng_after = np.random.randint(1000, size=test_cases)
     self.assertFalse(np.all(rng_before == rng_after))
Пример #2
0
 def test_density_matrix(self):
     """ Test that a random state with set seed will not affect later
     results.
     """
     seed = 314159
     test_cases = 100
     random_density_matrix(4, seed=seed)
     rng_before = [np.random.randint(1000) for _ in range(test_cases)]
     random_density_matrix(4, seed=seed)
     rng_after = [np.random.randint(1000) for _ in range(test_cases)]
     array_equality = all(
         [rng_before[i] == rng_after[i] for i in range(test_cases)])
     self.assertFalse(array_equality)
Пример #3
0
 def test_expval_pauli_qargs(self, qubits):
     """Test expectation_value method for Pauli op"""
     seed = 1020
     op = random_pauli(2, seed=seed)
     state = random_density_matrix(2**3, seed=seed)
     target = state.expectation_value(op.to_matrix(), qubits)
     expval = state.expectation_value(op, qubits)
     self.assertAlmostEqual(expval, target)
Пример #4
0
 def test_expval_pauli_c_contiguous(self, pauli):
     """Test expectation_value method for Pauli op"""
     seed = 1020
     op = Pauli(pauli)
     rho = random_density_matrix(2**op.num_qubits, seed=seed)
     rho._data = np.reshape(rho.data.flatten(order="C"), rho.data.shape, order="C")
     target = rho.expectation_value(op.to_matrix())
     expval = rho.expectation_value(op)
     self.assertAlmostEqual(expval, target)
Пример #5
0
def random_density_matrix(length,
                          rank=None,
                          method='Hilbert-Schmidt',
                          seed=None):
    """Deprecated in 0.8+
    """
    warnings.warn(
        'The random_density_matrix() function in qiskit.tools.qi has been '
        'deprecated and will be removed in the future. Instead use '
        'the function in qiskit.quantum_info.random', DeprecationWarning)
    return random.random_density_matrix(length, rank, method, seed)
Пример #6
0
 def test_fixed_seed(self, method):
     """Test fixing seed fixes output ({method} method)"""
     seed = 1532
     value1 = random_density_matrix(4, method=method, seed=seed)
     value2 = random_density_matrix(4, method=method, seed=seed)
     self.assertEqual(value1, value2)
Пример #7
0
 def test_int_dims(self, dim, method):
     """Test random_density_matrix {method} method is valid with dims {dim}."""
     value = random_density_matrix(dim, method=method)
     self.assertIsInstance(value, DensityMatrix)
     self.assertTrue(value.is_valid())
     self.assertEqual(np.product(value.dims()), dim)
Пример #8
0
 def test_tuple_dims(self, dims, method):
     """Test random_density_matrix {method} method is valid with dims {dims}."""
     value = random_density_matrix(dims, method=method)
     self.assertIsInstance(value, DensityMatrix)
     self.assertTrue(value.is_valid())
     self.assertEqual(value.dims(), dims)
Пример #9
0
 def test_random_density_matrix(self):
     random_hs_matrix = random_density_matrix(2, seed=42)
     self.assertEqual((2, 2), random_hs_matrix.shape)
     random_bures_matrix = random_density_matrix(2, method='Bures', seed=40)
     self.assertEqual((2, 2), random_bures_matrix.shape)