From 265f263754ce019323cbfbd31b9d40c68d373ea4 Mon Sep 17 00:00:00 2001 From: Shivansh Mittal Date: Fri, 11 Oct 2024 13:52:42 +0530 Subject: [PATCH 1/3] removed pure_to_mixed function and tests --- toqito/state_ops/__init__.py | 1 - toqito/state_ops/pure_to_mixed.py | 69 -------------------- toqito/state_ops/tests/test_pure_to_mixed.py | 35 ---------- 3 files changed, 105 deletions(-) delete mode 100644 toqito/state_ops/pure_to_mixed.py delete mode 100644 toqito/state_ops/tests/test_pure_to_mixed.py diff --git a/toqito/state_ops/__init__.py b/toqito/state_ops/__init__.py index 0d3401dfc..a52584b08 100644 --- a/toqito/state_ops/__init__.py +++ b/toqito/state_ops/__init__.py @@ -1,4 +1,3 @@ """Operations on quantum states.""" -from toqito.state_ops.pure_to_mixed import pure_to_mixed from toqito.state_ops.schmidt_decomposition import schmidt_decomposition diff --git a/toqito/state_ops/pure_to_mixed.py b/toqito/state_ops/pure_to_mixed.py deleted file mode 100644 index 59d6f7e45..000000000 --- a/toqito/state_ops/pure_to_mixed.py +++ /dev/null @@ -1,69 +0,0 @@ -"""Pure to mixed operation.""" - -import numpy as np - - -def pure_to_mixed(phi: np.ndarray) -> np.ndarray: - r"""Convert a state vector or density matrix to a density matrix. - - Examples - ========== - - It is possible to convert a pure state vector to a mixed state vector using the :code:`toqito` - package. Consider the following Bell state - - .. math:: - u = \frac{1}{\sqrt{2}} \left( |00 \rangle + |11 \rangle \right). - - The corresponding mixed state from :math:`u` is calculated as - - .. math:: - \rho = u u^* = \frac{1}{2} \begin{pmatrix} - 1 & 0 & 0 & 1 \\ - 0 & 0 & 0 & 0 \\ - 0 & 0 & 0 & 0 \\ - 1 & 0 & 0 & 1 - \end{pmatrix} - - Using :code:`toqito`, we can obtain this matrix as follows. - - >>> from toqito.states import bell - >>> from toqito.state_ops import pure_to_mixed - >>> phi = bell(0) - >>> pure_to_mixed(phi) - array([[0.5, 0. , 0. , 0.5], - [0. , 0. , 0. , 0. ], - [0. , 0. , 0. , 0. ], - [0.5, 0. , 0. , 0.5]]) - - We can also give matrix inputs to the function in :code:`toqito`. - - >>> from toqito.states import bell - >>> from toqito.state_ops import pure_to_mixed - >>> phi = bell(0) @ bell(0).conj().T - >>> pure_to_mixed(phi) - array([[0.5, 0. , 0. , 0.5], - [0. , 0. , 0. , 0. ], - [0. , 0. , 0. , 0. ], - [0.5, 0. , 0. , 0.5]]) - - - - :raises ValueError: If matrix is not square. - :param phi: A density matrix or a pure state vector. - :return: density matrix representation of :code:`phi`, regardless of whether :code:`phi` is - itself already a density matrix or if if is a pure state vector. - - """ - # Compute the size of `phi`. If it's already a mixed state, leave it alone. - # If it's a vector (pure state), make it into a density matrix. - row_dim, col_dim = phi.shape[0], phi.shape[1] - - # It's a pure state vector. - if min(row_dim, col_dim) == 1: - return phi @ phi.conj().T - # It's a density matrix. - if row_dim == col_dim: - return phi - # It's neither. - raise ValueError("InvalidDim: `phi` must be either a vector or square matrix.") diff --git a/toqito/state_ops/tests/test_pure_to_mixed.py b/toqito/state_ops/tests/test_pure_to_mixed.py deleted file mode 100644 index 63784a596..000000000 --- a/toqito/state_ops/tests/test_pure_to_mixed.py +++ /dev/null @@ -1,35 +0,0 @@ -"""Test pure_to_mixed.""" - -import numpy as np - -from toqito.state_ops import pure_to_mixed -from toqito.states import bell - - -def test_pure_to_mixed_state_vector(): - """Convert pure state to mixed state vector.""" - expected_res = np.array([[1 / 2, 0, 0, 1 / 2], [0, 0, 0, 0], [0, 0, 0, 0], [1 / 2, 0, 0, 1 / 2]]) - - phi = bell(0) - res = pure_to_mixed(phi) - - bool_mat = np.isclose(res, expected_res) - np.testing.assert_equal(np.all(bool_mat), True) - - -def test_pure_to_mixed_density_matrix(): - """Convert pure state to mixed state density matrix.""" - expected_res = np.array([[1 / 2, 0, 0, 1 / 2], [0, 0, 0, 0], [0, 0, 0, 0], [1 / 2, 0, 0, 1 / 2]]) - - phi = bell(0) @ bell(0).conj().T - res = pure_to_mixed(phi) - - bool_mat = np.isclose(res, expected_res) - np.testing.assert_equal(np.all(bool_mat), True) - - -def test_invalid_pure_to_mixed_input(): - """Invalid arguments for pure_to_mixed.""" - with np.testing.assert_raises(ValueError): - non_valid_input = np.array([[1 / 2, 0, 0, 1 / 2], [1 / 2, 0, 0, 1 / 2]]) - pure_to_mixed(non_valid_input) From 710183b6c1a8aad34e6508d41baf9cb04cf47a66 Mon Sep 17 00:00:00 2001 From: Shivansh Mittal Date: Fri, 11 Oct 2024 13:53:54 +0530 Subject: [PATCH 2/3] replaced usage to pure_to_mixed to vector_to_density_matrix --- toqito/state_opt/tests/test_state_exclusion.py | 10 +++++----- toqito/state_props/l1_norm_coherence.py | 4 ++-- toqito/state_props/log_negativity.py | 4 ++-- toqito/state_props/negativity.py | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/toqito/state_opt/tests/test_state_exclusion.py b/toqito/state_opt/tests/test_state_exclusion.py index cc62f71e9..3167968b7 100644 --- a/toqito/state_opt/tests/test_state_exclusion.py +++ b/toqito/state_opt/tests/test_state_exclusion.py @@ -4,7 +4,7 @@ import pytest from toqito.matrices import standard_basis -from toqito.state_ops import pure_to_mixed +from toqito.matrix_ops import vector_to_density_matrix from toqito.state_opt import state_exclusion from toqito.states import bell @@ -14,8 +14,8 @@ # Bell states are perfectly distinguishable, so the probability of error should be nil ([bell(0), bell(1), bell(2), bell(3)], None, 0, {}), ([bell(0), bell(1), bell(2), bell(3)], [1 / 4, 1 / 4, 1 / 4, 1 / 4], 0, {}), - ([pure_to_mixed(bell(0)), pure_to_mixed(bell(1))], None, 0, {"cvxopt_kktsolver": "ldl"}), - ([pure_to_mixed(bell(0)), pure_to_mixed(bell(1))], [1 / 2, 1 / 2], 0, {"cvxopt_kktsolver": "ldl"}), + ([vector_to_density_matrix(bell(0)), vector_to_density_matrix(bell(1))], None, 0, {"cvxopt_kktsolver": "ldl"}), + ([vector_to_density_matrix(bell(0)), vector_to_density_matrix(bell(1))], [1 / 2, 1 / 2], 0, {"cvxopt_kktsolver": "ldl"}), # For |0> and |+>, this probability is 1/2 - 1/(2*sqrt(2)) ( [np.array([[1.], [0.]]), np.array([[1.], [1.]]) / np.sqrt(2)], @@ -35,8 +35,8 @@ # Bell states are perfectly distinguishable, so the probability of error should be nil ([bell(0), bell(1), bell(2), bell(3)], None, 0, {}), ([bell(0), bell(1), bell(2), bell(3)], [1 / 4, 1 / 4, 1 / 4, 1 / 4], 0, {}), - ([pure_to_mixed(bell(0)), pure_to_mixed(bell(1))], None, 0, {}), - ([pure_to_mixed(bell(0)), pure_to_mixed(bell(1))], [1 / 2, 1 / 2], 0, {}), + ([vector_to_density_matrix(bell(0)), vector_to_density_matrix(bell(1))], None, 0, {}), + ([vector_to_density_matrix(bell(0)), vector_to_density_matrix(bell(1))], [1 / 2, 1 / 2], 0, {}), # For |0> and |+>, this probability is 1/sqrt(2) ( [np.array([[1.], [0.]]), np.array([[1.], [1.]]) / np.sqrt(2)], diff --git a/toqito/state_props/l1_norm_coherence.py b/toqito/state_props/l1_norm_coherence.py index bb7520c26..06741c43f 100644 --- a/toqito/state_props/l1_norm_coherence.py +++ b/toqito/state_props/l1_norm_coherence.py @@ -2,7 +2,7 @@ import numpy as np -from toqito.state_ops import pure_to_mixed +from toqito.matrix_ops import vector_to_density_matrix def l1_norm_coherence(rho: np.ndarray) -> float: @@ -49,5 +49,5 @@ def l1_norm_coherence(rho: np.ndarray) -> float: :return: The l1-norm coherence of :code:`rho`. """ - rho = pure_to_mixed(rho) + rho = vector_to_density_matrix(rho) return np.sum(np.sum(np.abs(rho))) - np.trace(rho) diff --git a/toqito/state_props/log_negativity.py b/toqito/state_props/log_negativity.py index 73aa244e7..cfba3762c 100644 --- a/toqito/state_props/log_negativity.py +++ b/toqito/state_props/log_negativity.py @@ -3,7 +3,7 @@ import numpy as np from picos import partial_transpose -from toqito.state_ops import pure_to_mixed +from toqito.matrix_ops import vector_to_density_matrix def log_negativity(rho: np.ndarray, dim: list[int] | int = None) -> float: @@ -46,7 +46,7 @@ def log_negativity(rho: np.ndarray, dim: list[int] | int = None) -> float: """ # Allow the user to input either a pure state vector or a density matrix. - rho = pure_to_mixed(rho) + rho = vector_to_density_matrix(rho) rho_dims = rho.shape round_dim = np.round(np.sqrt(rho_dims)) diff --git a/toqito/state_props/negativity.py b/toqito/state_props/negativity.py index b46d1bb0b..64eab426a 100644 --- a/toqito/state_props/negativity.py +++ b/toqito/state_props/negativity.py @@ -3,7 +3,7 @@ import numpy as np from picos import partial_transpose -from toqito.state_ops import pure_to_mixed +from toqito.matrix_ops import vector_to_density_matrix def negativity(rho: np.ndarray, dim: list[int] | int = None) -> float: @@ -47,7 +47,7 @@ def negativity(rho: np.ndarray, dim: list[int] | int = None) -> float: """ # Allow the user to input either a pure state vector or a density matrix. - rho = pure_to_mixed(rho) + rho = vector_to_density_matrix(rho) rho_dims = rho.shape round_dim = np.round(np.sqrt(rho_dims)) From c92c66178328df3606ab865a33708c072fef450f Mon Sep 17 00:00:00 2001 From: Shivansh Mittal Date: Fri, 11 Oct 2024 14:13:06 +0530 Subject: [PATCH 3/3] Rename vector_to_density_matrix to just to_density_matrix --- toqito/matrix_ops/__init__.py | 2 +- ..._to_density_matrix.py => test_to_density_matrix.py} | 10 +++++----- ...ector_to_density_matrix.py => to_density_matrix.py} | 6 +++--- toqito/measurements/pretty_good_measurement.py | 4 ++-- toqito/state_opt/ppt_distinguishability.py | 6 +++--- toqito/state_opt/state_distinguishability.py | 6 +++--- toqito/state_opt/state_exclusion.py | 10 +++++----- .../state_opt/tests/test_state_distinguishability.py | 4 ++-- toqito/state_opt/tests/test_state_exclusion.py | 10 +++++----- toqito/state_props/l1_norm_coherence.py | 4 ++-- toqito/state_props/log_negativity.py | 4 ++-- toqito/state_props/negativity.py | 4 ++-- 12 files changed, 35 insertions(+), 35 deletions(-) rename toqito/matrix_ops/tests/{test_vector_to_density_matrix.py => test_to_density_matrix.py} (79%) rename toqito/matrix_ops/{vector_to_density_matrix.py => to_density_matrix.py} (91%) diff --git a/toqito/matrix_ops/__init__.py b/toqito/matrix_ops/__init__.py index c7177112b..d6522b983 100644 --- a/toqito/matrix_ops/__init__.py +++ b/toqito/matrix_ops/__init__.py @@ -8,4 +8,4 @@ from toqito.matrix_ops.vectors_from_gram_matrix import vectors_from_gram_matrix from toqito.matrix_ops.vectors_to_gram_matrix import vectors_to_gram_matrix from toqito.matrix_ops.calculate_vector_matrix_dimension import calculate_vector_matrix_dimension -from toqito.matrix_ops.vector_to_density_matrix import vector_to_density_matrix +from toqito.matrix_ops.to_density_matrix import to_density_matrix diff --git a/toqito/matrix_ops/tests/test_vector_to_density_matrix.py b/toqito/matrix_ops/tests/test_to_density_matrix.py similarity index 79% rename from toqito/matrix_ops/tests/test_vector_to_density_matrix.py rename to toqito/matrix_ops/tests/test_to_density_matrix.py index 874f9486b..a999f7e49 100644 --- a/toqito/matrix_ops/tests/test_vector_to_density_matrix.py +++ b/toqito/matrix_ops/tests/test_to_density_matrix.py @@ -1,9 +1,9 @@ -"""Test vector_to_density_matrix.""" +"""Test to_density_matrix.""" import numpy as np import pytest -from toqito.matrix_ops import vector_to_density_matrix +from toqito.matrix_ops import to_density_matrix @pytest.mark.parametrize( @@ -23,11 +23,11 @@ (np.array([[[1, 0], [0, 1]]]), None, ValueError), ], ) -def test_vector_to_density_matrix(input_vector, expected_output, exception): +def test_to_density_matrix(input_vector, expected_output, exception): """Test vector to density matrix functionality.""" if exception: with pytest.raises(exception): - vector_to_density_matrix(input_vector) + to_density_matrix(input_vector) else: - computed_density_matrix = vector_to_density_matrix(input_vector) + computed_density_matrix = to_density_matrix(input_vector) assert (np.abs(computed_density_matrix - expected_output) <= 1e-3).all() diff --git a/toqito/matrix_ops/vector_to_density_matrix.py b/toqito/matrix_ops/to_density_matrix.py similarity index 91% rename from toqito/matrix_ops/vector_to_density_matrix.py rename to toqito/matrix_ops/to_density_matrix.py index d54d763a2..9eed80045 100644 --- a/toqito/matrix_ops/vector_to_density_matrix.py +++ b/toqito/matrix_ops/to_density_matrix.py @@ -3,7 +3,7 @@ import numpy as np -def vector_to_density_matrix(input_array: np.ndarray) -> np.ndarray: +def to_density_matrix(input_array: np.ndarray) -> np.ndarray: """Convert a given vector to a density matrix or return the density matrix if already given. If the input is a vector, this function computes the outer product to form a density matrix. @@ -15,9 +15,9 @@ def vector_to_density_matrix(input_array: np.ndarray) -> np.ndarray: As an example, consider one of the Bell states. >>> from toqito.states import bell - >>> from toqito.matrix_ops import vector_to_density_matrix + >>> from toqito.matrix_ops import to_density_matrix >>> - >>> vector_to_density_matrix(bell(0)) + >>> to_density_matrix(bell(0)) array([[0.5, 0. , 0. , 0.5], [0. , 0. , 0. , 0. ], [0. , 0. , 0. , 0. ], diff --git a/toqito/measurements/pretty_good_measurement.py b/toqito/measurements/pretty_good_measurement.py index 767b60a83..6519302fa 100644 --- a/toqito/measurements/pretty_good_measurement.py +++ b/toqito/measurements/pretty_good_measurement.py @@ -3,7 +3,7 @@ import numpy as np import scipy -from toqito.matrix_ops import vector_to_density_matrix +from toqito.matrix_ops import to_density_matrix def pretty_good_measurement(states: list[np.ndarray], probs: list[float] | None = None) -> list[np.ndarray]: @@ -69,7 +69,7 @@ def pretty_good_measurement(states: list[np.ndarray], probs: list[float] | None if not np.isclose(sum(probs), 1): raise ValueError("Probability vector should sum to 1.") - states = [vector_to_density_matrix(state) for state in states] + states = [to_density_matrix(state) for state in states] p_var = sum(probs[i] * states[i] for i in range(n)) p_var_sqrt = scipy.linalg.fractional_matrix_power(p_var, -1 / 2) diff --git a/toqito/state_opt/ppt_distinguishability.py b/toqito/state_opt/ppt_distinguishability.py index 8d2572df3..f2a530a1c 100644 --- a/toqito/state_opt/ppt_distinguishability.py +++ b/toqito/state_opt/ppt_distinguishability.py @@ -3,7 +3,7 @@ import numpy as np import picos -from toqito.matrix_ops import calculate_vector_matrix_dimension, vector_to_density_matrix +from toqito.matrix_ops import calculate_vector_matrix_dimension, to_density_matrix from toqito.matrix_props import has_same_dimension @@ -156,7 +156,7 @@ def _min_error_primal( ] ) - dms = [vector_to_density_matrix(vector) for vector in vectors] + dms = [to_density_matrix(vector) for vector in vectors] if strategy == "unambig": for i in range(n): for j in range(n): @@ -189,7 +189,7 @@ def _min_error_dual( y_var = picos.HermitianVariable("Y", (d, d)) problem.add_list_of_constraints( [ - y_var - probs[i] * vector_to_density_matrix(vectors[i]) + y_var - probs[i] * to_density_matrix(vectors[i]) >> picos.partial_transpose( q_var, subsystems=subsystems, diff --git a/toqito/state_opt/state_distinguishability.py b/toqito/state_opt/state_distinguishability.py index 9a42b5ee6..200207d78 100644 --- a/toqito/state_opt/state_distinguishability.py +++ b/toqito/state_opt/state_distinguishability.py @@ -3,7 +3,7 @@ import numpy as np import picos -from toqito.matrix_ops import calculate_vector_matrix_dimension, vector_to_density_matrix, vectors_to_gram_matrix +from toqito.matrix_ops import calculate_vector_matrix_dimension, to_density_matrix, vectors_to_gram_matrix from toqito.matrix_props import has_same_dimension @@ -167,7 +167,7 @@ def _min_error_primal( problem.add_list_of_constraints([meas >> 0 for meas in measurements]) problem.add_constraint(picos.sum(measurements) == picos.I(dim)) - dms = [vector_to_density_matrix(vector) for vector in vectors] + dms = [to_density_matrix(vector) for vector in vectors] problem.set_objective("max", np.real(picos.sum([(probs[i] * dms[i] | measurements[i]) for i in range(n)]))) solution = problem.solve(solver=solver, **kwargs) @@ -188,7 +188,7 @@ def _min_error_dual( # Set up variables and constraints for SDP: y_var = picos.HermitianVariable("Y", (dim, dim)) problem.add_list_of_constraints( - [y_var >> probs[i] * vector_to_density_matrix(vector) for i, vector in enumerate(vectors)] + [y_var >> probs[i] * to_density_matrix(vector) for i, vector in enumerate(vectors)] ) # Objective function: diff --git a/toqito/state_opt/state_exclusion.py b/toqito/state_opt/state_exclusion.py index b0e3fa05f..75a7f995b 100644 --- a/toqito/state_opt/state_exclusion.py +++ b/toqito/state_opt/state_exclusion.py @@ -3,7 +3,7 @@ import numpy as np import picos -from toqito.matrix_ops import calculate_vector_matrix_dimension, vector_to_density_matrix, vectors_to_gram_matrix +from toqito.matrix_ops import calculate_vector_matrix_dimension, to_density_matrix, vectors_to_gram_matrix from toqito.matrix_props import has_same_dimension @@ -185,7 +185,7 @@ def _min_error_primal( problem.add_list_of_constraints([meas >> 0 for meas in measurements]) problem.add_constraint(picos.sum(measurements) == picos.I(dim)) - dms = [vector_to_density_matrix(vector) for vector in vectors] + dms = [to_density_matrix(vector) for vector in vectors] # # Numerical inaccuracies can make it so the trace of the density matrices aren't unital, which messes up with # # cvxopt # dms = [state / np.trace(state) for state in dms] @@ -209,7 +209,7 @@ def _min_error_dual( # Set up variables and constraints for SDP: y_var = picos.HermitianVariable("Y", (dim, dim)) problem.add_list_of_constraints( - [y_var << probs[i] * vector_to_density_matrix(vector) for i, vector in enumerate(vectors)] + [y_var << probs[i] * to_density_matrix(vector) for i, vector in enumerate(vectors)] ) # Objective function: @@ -239,7 +239,7 @@ def _unambiguous_primal( problem.add_list_of_constraints([meas >> 0 for meas in measurements]) problem.add_constraint(inconclusive_measurement >> 0) - unnormalized_dms = [p * vector_to_density_matrix(vector) for (p, vector) in zip(probs, vectors)] + unnormalized_dms = [p * to_density_matrix(vector) for (p, vector) in zip(probs, vectors)] sums_of_unnormalized_dms = picos.sum(unnormalized_dms) problem.add_list_of_constraints(m | rho == 0 for (m, rho) in zip(measurements, unnormalized_dms)) @@ -268,7 +268,7 @@ def _unambiguous_dual( problem.add_constraint(lagrangian_variable_big_n >> 0) - dms = [vector_to_density_matrix(vector) for (p, vector) in zip(probs, vectors)] + dms = [to_density_matrix(vector) for (p, vector) in zip(probs, vectors)] unnormalized_dms = [proba * rho for (proba, rho) in zip(probs, dms)] sum_of_unnormalized_dms = picos.sum(unnormalized_dms) diff --git a/toqito/state_opt/tests/test_state_distinguishability.py b/toqito/state_opt/tests/test_state_distinguishability.py index f3e00ebcd..cc0766fd7 100644 --- a/toqito/state_opt/tests/test_state_distinguishability.py +++ b/toqito/state_opt/tests/test_state_distinguishability.py @@ -4,7 +4,7 @@ import pytest from toqito.matrices import standard_basis -from toqito.matrix_ops import vector_to_density_matrix +from toqito.matrix_ops import to_density_matrix from toqito.state_opt import state_distinguishability from toqito.states import bb84, bell @@ -14,7 +14,7 @@ # Bell states (should be perfectly distinguishable) ([bell(0), bell(1), bell(2), bell(3)], 1), # Bell states as density matrices - ([vector_to_density_matrix(bell(i)) for i in range(4)], 1), + ([to_density_matrix(bell(i)) for i in range(4)], 1), # BB84 states (bb84()[0] + bb84()[1], .5), ] diff --git a/toqito/state_opt/tests/test_state_exclusion.py b/toqito/state_opt/tests/test_state_exclusion.py index 3167968b7..48912f149 100644 --- a/toqito/state_opt/tests/test_state_exclusion.py +++ b/toqito/state_opt/tests/test_state_exclusion.py @@ -4,7 +4,7 @@ import pytest from toqito.matrices import standard_basis -from toqito.matrix_ops import vector_to_density_matrix +from toqito.matrix_ops import to_density_matrix from toqito.state_opt import state_exclusion from toqito.states import bell @@ -14,8 +14,8 @@ # Bell states are perfectly distinguishable, so the probability of error should be nil ([bell(0), bell(1), bell(2), bell(3)], None, 0, {}), ([bell(0), bell(1), bell(2), bell(3)], [1 / 4, 1 / 4, 1 / 4, 1 / 4], 0, {}), - ([vector_to_density_matrix(bell(0)), vector_to_density_matrix(bell(1))], None, 0, {"cvxopt_kktsolver": "ldl"}), - ([vector_to_density_matrix(bell(0)), vector_to_density_matrix(bell(1))], [1 / 2, 1 / 2], 0, {"cvxopt_kktsolver": "ldl"}), + ([to_density_matrix(bell(0)), to_density_matrix(bell(1))], None, 0, {"cvxopt_kktsolver": "ldl"}), + ([to_density_matrix(bell(0)), to_density_matrix(bell(1))], [1 / 2, 1 / 2], 0, {"cvxopt_kktsolver": "ldl"}), # For |0> and |+>, this probability is 1/2 - 1/(2*sqrt(2)) ( [np.array([[1.], [0.]]), np.array([[1.], [1.]]) / np.sqrt(2)], @@ -35,8 +35,8 @@ # Bell states are perfectly distinguishable, so the probability of error should be nil ([bell(0), bell(1), bell(2), bell(3)], None, 0, {}), ([bell(0), bell(1), bell(2), bell(3)], [1 / 4, 1 / 4, 1 / 4, 1 / 4], 0, {}), - ([vector_to_density_matrix(bell(0)), vector_to_density_matrix(bell(1))], None, 0, {}), - ([vector_to_density_matrix(bell(0)), vector_to_density_matrix(bell(1))], [1 / 2, 1 / 2], 0, {}), + ([to_density_matrix(bell(0)), to_density_matrix(bell(1))], None, 0, {}), + ([to_density_matrix(bell(0)), to_density_matrix(bell(1))], [1 / 2, 1 / 2], 0, {}), # For |0> and |+>, this probability is 1/sqrt(2) ( [np.array([[1.], [0.]]), np.array([[1.], [1.]]) / np.sqrt(2)], diff --git a/toqito/state_props/l1_norm_coherence.py b/toqito/state_props/l1_norm_coherence.py index 06741c43f..c52bbd6c6 100644 --- a/toqito/state_props/l1_norm_coherence.py +++ b/toqito/state_props/l1_norm_coherence.py @@ -2,7 +2,7 @@ import numpy as np -from toqito.matrix_ops import vector_to_density_matrix +from toqito.matrix_ops import to_density_matrix def l1_norm_coherence(rho: np.ndarray) -> float: @@ -49,5 +49,5 @@ def l1_norm_coherence(rho: np.ndarray) -> float: :return: The l1-norm coherence of :code:`rho`. """ - rho = vector_to_density_matrix(rho) + rho = to_density_matrix(rho) return np.sum(np.sum(np.abs(rho))) - np.trace(rho) diff --git a/toqito/state_props/log_negativity.py b/toqito/state_props/log_negativity.py index cfba3762c..cc59dc23d 100644 --- a/toqito/state_props/log_negativity.py +++ b/toqito/state_props/log_negativity.py @@ -3,7 +3,7 @@ import numpy as np from picos import partial_transpose -from toqito.matrix_ops import vector_to_density_matrix +from toqito.matrix_ops import to_density_matrix def log_negativity(rho: np.ndarray, dim: list[int] | int = None) -> float: @@ -46,7 +46,7 @@ def log_negativity(rho: np.ndarray, dim: list[int] | int = None) -> float: """ # Allow the user to input either a pure state vector or a density matrix. - rho = vector_to_density_matrix(rho) + rho = to_density_matrix(rho) rho_dims = rho.shape round_dim = np.round(np.sqrt(rho_dims)) diff --git a/toqito/state_props/negativity.py b/toqito/state_props/negativity.py index 64eab426a..3ecf35be5 100644 --- a/toqito/state_props/negativity.py +++ b/toqito/state_props/negativity.py @@ -3,7 +3,7 @@ import numpy as np from picos import partial_transpose -from toqito.matrix_ops import vector_to_density_matrix +from toqito.matrix_ops import to_density_matrix def negativity(rho: np.ndarray, dim: list[int] | int = None) -> float: @@ -47,7 +47,7 @@ def negativity(rho: np.ndarray, dim: list[int] | int = None) -> float: """ # Allow the user to input either a pure state vector or a density matrix. - rho = vector_to_density_matrix(rho) + rho = to_density_matrix(rho) rho_dims = rho.shape round_dim = np.round(np.sqrt(rho_dims))