From 29593b4a2acf51287f2f2290bb4308a9410bb889 Mon Sep 17 00:00:00 2001 From: Anthony Walsh Date: Tue, 13 Jan 2026 17:10:54 +0100 Subject: [PATCH 1/3] Add random method to Unitary. --- perceval/components/unitary_components.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/perceval/components/unitary_components.py b/perceval/components/unitary_components.py index 94ed990c3..1860579ef 100644 --- a/perceval/components/unitary_components.py +++ b/perceval/components/unitary_components.py @@ -461,6 +461,16 @@ def describe(self): params.append("use_polarization=True") return f"Unitary({', '.join(params)})" + @staticmethod + def random(m: int) -> Unitary: + r"""Static method generating a random unitary component. + + :param m: Number of modes in random unitary. + :return: a Unitary circuit component + """ + matrix = Matrix.random_unitary(m) + return Unitary(matrix) + class PERM(Unitary): """Permutation From 04566a459c1a857b098726f7667b4b5a5d3bf166 Mon Sep 17 00:00:00 2001 From: Anthony Walsh Date: Wed, 14 Jan 2026 10:06:51 +0100 Subject: [PATCH 2/3] Fix typing. --- perceval/components/unitary_components.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perceval/components/unitary_components.py b/perceval/components/unitary_components.py index 1860579ef..c3169bc73 100644 --- a/perceval/components/unitary_components.py +++ b/perceval/components/unitary_components.py @@ -462,7 +462,7 @@ def describe(self): return f"Unitary({', '.join(params)})" @staticmethod - def random(m: int) -> Unitary: + def random(m: int) -> "Unitary": r"""Static method generating a random unitary component. :param m: Number of modes in random unitary. From 02be93df8bd143aa93798d2561891d6110cda3d5 Mon Sep 17 00:00:00 2001 From: Anthony Walsh Date: Wed, 21 Jan 2026 12:08:58 +0100 Subject: [PATCH 3/3] Add comment. --- perceval/components/unitary_components.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perceval/components/unitary_components.py b/perceval/components/unitary_components.py index c3169bc73..c7c84a2b6 100644 --- a/perceval/components/unitary_components.py +++ b/perceval/components/unitary_components.py @@ -462,7 +462,7 @@ def describe(self): return f"Unitary({', '.join(params)})" @staticmethod - def random(m: int) -> "Unitary": + def random(m: int) -> "Unitary": # Python 3.11 : Replace using Self typing r"""Static method generating a random unitary component. :param m: Number of modes in random unitary.