-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathinterface.py
155 lines (129 loc) · 6.04 KB
/
interface.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# define models and tasks
model_dic = {
'0': 'AuGMEnT',
'1': 'HER',
'2': 'LSTM'
}
task_dic = {
'0':'task 1-2',
'1':'task AX_CPT',
'2':'task 12-AX_S',
'3':'task 12-AX',
'4':'saccade/anti-saccade task',
'5':'sequence prediction task',
'6':'copy task',
'7':'repeat copy task'
}
def check_validity(model_selection, task_selection):
if model_selection == '0':
if task_selection == '6' or task_selection == '7':
return False
elif model_selection == '1':
if task_selection == '6' or task_selection == '7':
return False
elif model_selection == '2':
if task_selection == '0' or task_selection == '1' or task_selection == '2':
return False
return True
def main():
# select model
model_selection = input("\nPlease select a model: \n\t 0: AuGMEnT \n\t 1: HER \n\t 2: LSTM\nEnter model number: ")
# select task
task_selection = input("\nPlease select a task: \n\t 0: task 1-2 \n\t 1: task AX_CPT \n\t 2: task 12-AX-S\n" +
"\t 3: task 12-AX\n\t 4: saccade/anti-saccade task\n\t 5: sequence prediction task\n" +
"\t 6: copy task\n\t 7: repeat copy task \nEnter task number: ")
# check model and task selection is valid
if(not check_validity(model_selection, task_selection)):
print('Your selection is invalid.')
return
print("\nSelected model: ", model_dic[model_selection])
print("\nSelected task: ", task_dic[task_selection],'\n\n')
# boolean parameters for simulation steps
enter_params_bool = input("Skip steps for task simulation? (Yes/No, default No): ")
params_bool_new = None
if(enter_params_bool != ''):
if(enter_params_bool[0] == 'y' or enter_params_bool[0] == 'Y'):
params_bool = []
params_bool_new = []
params_bool.append((input("Do training? (Yes/No, default: Yes): ")))
params_bool.append((input("Do test? (Yes/No, default: Yes): ")))
params_bool.append((input("Do weight plots? (Yes/No, default: Yes): ")))
params_bool.append((input("Do error plots? (Yes/No, default: Yes): ")))
for p in params_bool:
if(p != ''):
if(p[0] == 'y' or p[0] == 'Y'):
params_bool_new.append(True)
else:
params_bool_new.append(False)
else:
params_bool_new.append(True)
# task specific parameters
enter_params_task = input("\nChange parameters for task building? (Yes/No, default No): ")
params_task = None
if(enter_params_task != ''):
if(task_selection == '0'):
if(enter_params_task[0] == 'y' or enter_params_task[0] == 'Y'):
params_task = []
params_task.append(input("Number of trials (default: N = 4000): "))
params_task.append(input("Probability of '1' (default: p1 = 0.7): "))
params_task.append(input("Training percentage (default: tr_perc = 0.8): "))
elif(task_selection == '1'):
if(enter_params_task[0] == 'y' or enter_params_task[0] == 'Y'):
params_task = []
params_task.append(input("Number of trials (default: N = 40000): "))
params_task.append(input("Probability of target (default: p_target = 0.2): "))
params_task.append(input("Training percentage (default: tr_perc = 0.8): "))
elif(task_selection == '2'):
if(enter_params_task[0] == 'y' or enter_params_task[0] == 'Y'):
params_task = []
params_task.append(input("Number of trials (default: N = 100000): "))
params_task.append(input("Probability of digit (default: p_digit = 0.1): "))
params_task.append(input("Probability of wrong response (default: p_wrong = 0.15): "))
params_task.append(input("Probability of correct response (default: p_correct = 0.25): "))
params_task.append(input("Training percentage (default: tr_perc = 0.8): "))
elif(task_selection == '3'):
if(enter_params_task[0] == 'y' or enter_params_task[0] == 'Y'):
params_task = []
params_task.append(input("Number of trials (default: N = 20000): "))
params_task.append(input("Probability of target (default: p_target = 0.5): "))
params_task.append(input("Training percentage (default: tr_perc = 0.8): "))
elif(task_selection == '4'):
if(enter_params_task[0] == 'y' or enter_params_task[0] == 'Y'):
params_task = []
params_task.append(input("Number of trials (default: N = 20000): "))
params_task.append(input("Training percentage (default: tr_perc = 0.8): "))
elif(task_selection == '5'):
if(enter_params_task[0] == 'y' or enter_params_task[0] == 'Y'):
params_task = []
params_task.append(input("Number of trials (default: N = 20000): "))
params_task.append(input("Probability of target (default: p_target = 0.5): "))
params_task.append(input("Training percentage (default: tr_perc = 0.8): "))
elif(task_selection == '6'):
if(enter_params_task[0] == 'y' or enter_params_task[0] == 'Y'):
params_task = []
params_task.append(input("Size of bit string (default: size = 8): "))
params_task.append(input("Minimum length of sequence (default: min_length = 1): "))
params_task.append(input("Maximum length of sequence (default: max_length = 20): "))
params_task.append(input("Number of training iterations (default: training_iters = 200000): "))
elif(task_selection == '7'):
if(enter_params_task[0] == 'y' or enter_params_task[0] == 'Y'):
params_task = []
params_task.append(input("Size of bit string (default: size = 8): "))
params_task.append(input("Minimum length of sequence (default: min_length = 1): "))
params_task.append(input("Maximum length of sequence (default: max_length = 20): "))
params_task.append(input("Minimum number of repeats (default: min_repeats = 2): "))
params_task.append(input("Maximum number of repeats (default: max_repeats = 5): "))
params_task.append(input("Number of training iterations (default: training_iters = 200000): "))
print('\n\n')
# run appropriate task depending on selected model
if(model_selection == '0'):
from AuGMEnT.AuGMEnT_tasks import run_task
run_task(task_selection, params_bool_new, params_task)
elif(model_selection == '1'):
from HER.HER_tasks import run_task
run_task(task_selection, params_bool_new, params_task)
if(model_selection == '2'):
from LSTM.LSTM_tasks import run_task
run_task(task_selection, params_bool_new, params_task)
if __name__ == '__main__':
main()