-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmake_delay_chains.py
More file actions
74 lines (57 loc) · 2.19 KB
/
Copy pathmake_delay_chains.py
File metadata and controls
74 lines (57 loc) · 2.19 KB
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
"""
make_delay_chains.py
Copyright (C) 2021 Andrew J. P. Garner
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
"""
from delay_buffer_generators import *
def even_process(p: float):
output = np.zeros([2, 2, 2])
output[0, 0, 0] = p
output[1, 1, 0] = 1 - p
output[1, 0, 1] = 1
name = "Even process (p = " + str(p) + ")"
return HMMProcess((output, name))
def perturbed_coin(p: float):
output = np.zeros([2, 2, 2])
output[0, 0, 0] = 1 - p
output[0, 0, 1] = p
output[1, 1, 0] = p
output[1, 1, 1] = 1 - p
name = "Perturbed coin (p = " + str(p) + ")"
return HMMProcess((output, name))
def restricted_golden_mean(k: int):
output = np.zeros([2, k + 1, k + 1])
output[0, 1, 0] = 0.5
output[1, 0, 0] = 0.5
for i in range(1, k + 1):
output[1, (i + 1) % (k + 1), i] = 1
name = "Restricted golden mean (K = " + str(k) + ")"
return HMMProcess((output, name))
def nemo_process(p: float, q: float):
output = np.zeros([2, 3, 3])
output[1, 0, 0] = p
output[0, 1, 0] = 1 - p
output[0, 2, 1] = 1
output[0, 0, 2] = 1 - q
output[1, 0, 2] = q
name = "Nemo process (p = " + str(p) + ", q = " + str(q) + ")"
return HMMProcess((output, name))
# %% Script
max_delay = 15
rgm_chain = make_delay_chain(restricted_golden_mean(3), max_delay)
pc_chain = make_delay_chain(perturbed_coin(0.05), max_delay)
nemo_chain = make_delay_chain(nemo_process(0.4, 0.1), max_delay)
even_chain = make_delay_chain(even_process(0.3), max_delay)
np.save("rgm_chain.npy", rgm_chain)
np.save("pc_chain.npy", pc_chain)
np.save("nemo_chain.npy", nemo_chain)
np.save("even_chain.npy", even_chain)