-
Notifications
You must be signed in to change notification settings - Fork 55
/
test_lindbladtools.py
54 lines (48 loc) · 1.85 KB
/
test_lindbladtools.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import numpy as np
import scipy.sparse as sps
from ..util import BaseCase
from pygsti.tools import lindbladtools as lt
class LindbladToolsTester(BaseCase):
def test_hamiltonian_to_lindbladian(self):
expectedLindbladian = np.array([
[ 0, 0, 0, 0],
[ 0, 0, 0, 0],
[ 0, 0, 0, 0],
[ 0, 0, 0, 0]
])
self.assertArraysAlmostEqual(lt.hamiltonian_to_lindbladian(np.zeros(shape=(2, 2))),
expectedLindbladian)
sparse = sps.csr_matrix(np.zeros(shape=(2, 2)))
spL = lt.hamiltonian_to_lindbladian(sparse, True)
self.assertArraysAlmostEqual(spL.toarray(),
expectedLindbladian)
def test_stochastic_lindbladian(self):
a = np.array([[1, 2], [3, 4]])
expected = 2.0 * np.array([
[ 1, 2, 2, 4],
[ 3, 4, 6, 8],
[ 3, 6, 4, 8],
[ 9, 12, 12, 16]
])
self.assertArraysAlmostEqual(
lt.stochastic_lindbladian(a),
expected)
sparse = sps.csr_matrix(a)
spL = lt.stochastic_lindbladian(sparse, True)
self.assertArraysAlmostEqual(spL.toarray(),
expected)
def test_nonham_lindbladian(self):
a = np.array([[1, 2], [3, 4]])
b = np.array([[1, 2], [3, 4]])
expected = 2.0 * np.array([
[ -9, -5, -5, 4],
[ -4, -11, 6, 1],
[ -4, 6, -11, 1],
[ 9, 5, 5, -4]
])
self.assertArraysAlmostEqual(lt.nonham_lindbladian(a, b), expected)
sparsea = sps.csr_matrix(a)
sparseb = sps.csr_matrix(b)
spL = lt.nonham_lindbladian(sparsea, sparseb, True)
self.assertArraysAlmostEqual(spL.toarray(),
expected)