-
Notifications
You must be signed in to change notification settings - Fork 0
/
sim_fpt.py
45 lines (38 loc) · 928 Bytes
/
sim_fpt.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
import numpy as np
import typer
from crun.fpt import get_passage_times
from stats.pdf import MakeLogPdf
def main(
out_filename: str,
*,
birth_rate: float = 0.5,
death_rate: float = 0.5,
gamma: float = 1,
X_0: int = 100,
n_agents: int = 1000000,
mult: int = 100,
to: float = 0,
n_points: int = 10000,
max_time: float = 1e3,
seed: int = -1,
):
# auto-generate seed
if seed < 0:
np.random.seed()
seed = np.random.randint(0, int(2**20))
data = get_passage_times(
to,
max_time=max_time,
n_points=n_points,
birth_rate=birth_rate,
death_rate=death_rate,
gamma=gamma,
initial=X_0,
n_agents=n_agents,
mult=mult,
seed=seed,
)
pdf = MakeLogPdf(data)
np.savetxt(out_filename, np.log10(pdf), fmt="%.4f", delimiter=",")
if __name__ == "__main__":
typer.run(main)