From 92e1d102ef046f8ecec59dc51d73433d83ae49d1 Mon Sep 17 00:00:00 2001
From: Antonio Manesco <am@antoniomanesco.org>
Date: Wed, 15 Nov 2023 15:35:44 +0100
Subject: [PATCH] build hermitian bloch matrix correctly

---
 codes/utils.py | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/codes/utils.py b/codes/utils.py
index 22f48a0..47ac550 100644
--- a/codes/utils.py
+++ b/codes/utils.py
@@ -273,13 +273,17 @@ def generate_guess(vectors, ndof, scale=0.1):
     """
     guess = {}
     for vector in vectors:
-        amplitude = scale * np.random.rand(ndof, ndof)
-        phase = 2 * np.pi * np.random.rand(ndof, ndof)
-        rand_hermitian = amplitude * np.exp(1j * phase)
-        if np.linalg.norm(np.array(vector)):
-            rand_hermitian += rand_hermitian.T.conj()
-            rand_hermitian /= 2
-        guess[vector] = rand_hermitian
+        if vector not in guess.keys():
+            amplitude = scale * np.random.rand(ndof, ndof)
+            phase = 2 * np.pi * np.random.rand(ndof, ndof)
+            rand_hermitian = amplitude * np.exp(1j * phase)
+            if np.linalg.norm(np.array(vector)) == 0:
+                rand_hermitian += rand_hermitian.T.conj()
+                rand_hermitian /= 2
+                guess[vector] = rand_hermitian
+            else:
+                guess[vector] = rand_hermitian
+                guess[tuple(-np.array(vector))] = rand_hermitian.T.conj()
 
     return guess
 
-- 
GitLab