/
main.py
75 lines (52 loc) · 2.07 KB
/
main.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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import multiprocessing as mlt
import tqdm
import os
import numpy as np
import _tkinter
import parameters
import model
import backup
import analysis
import avakas
import sys
def main(parameters_file=None):
"""Produce data"""
param = parameters.load(parameters_file)
if param.running_mode == 'unique':
seed = np.random.randint(2 ** 32)
bkp = model.run((seed, param))
file_name = bkp.save()
print("Data have been saved using file name: '{}'.".format(file_name))
try:
analysis.separate.pos_firmA_over_pos_firmB(file_name)
except _tkinter.TclError:
print("Figures can not be produced if there is no graphic server.")
else:
print('Parameters are: ', param.dict())
pool = mlt.Pool()
backups = []
seeds = np.random.randint(2**32, size=param.n_simulations)
for bkp in tqdm.tqdm(
pool.imap_unordered(model.run, zip(seeds, (param, ) * param.n_simulations)),
total=param.n_simulations):
backups.append(bkp)
pool_backup = backup.PoolBackup(parameters=param, backups=backups)
file_name = pool_backup.save()
print("Data have been saved using file name: '{}'.".format(file_name))
try:
analysis.pool.distance_over_fov(file_name=file_name)
except _tkinter.TclError:
print("Figures can not be produced if there is no graphic server.")
if __name__ == "__main__":
if len(sys.argv) > 1:
i = sys.argv[1]
parameters_file = avakas.get_parameters_file(i)
main(parameters_file)
if os.path.exists("tasks") and os.listdir("tasks"):
print("I will use the parameters files in the 'tasks' directory.")
parameters_files = [os.path.join("tasks", f)
for f in os.listdir("tasks") if os.path.isfile(os.path.join("tasks", f))]
for i in parameters_files:
main(i) # Use every parameters file contained in tasks folder
else:
main() # Use default parameters file located in parameters.json