Repository navigation
Expand file tree
/
Copy pathTaskfile.yml
More file actions
169 lines (150 loc) · 5.06 KB
/
Copy pathTaskfile.yml
File metadata and controls
169 lines (150 loc) · 5.06 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
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
version: '3'
vars:
# FIRING_RATES_SD: [0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3]
FIRING_RATES_SD: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
PARAM_OVERRIDES: '{{.PARAM_OVERRIDES | default ""}}'
INDEX_LAST_FR_SD: '{{(sub (len .FIRING_RATES_SD) 1)}}'
MAX_FR_SD: '{{index .FIRING_RATES_SD (atoi .INDEX_LAST_FR_SD)}}'
tasks:
default:
desc: Run all experiments and plot the results
deps:
- task: run_all
cmds:
- task: plot
test:
desc: Run all with large timestep to test pipeline
deps:
- task: run_all
vars:
PARAM_OVERRIDES: 'params.timestep_ms_=1'
cmds:
- task: plot
plot:
desc: Plot the results of the experiments
deps:
- task: extract_all_minimal_data
- task: plot_weights_over_time
sources:
- plot_parameter_sweep.py
- results/base_mean_sd.txt
- results/Spiking_model_baseline/minimal_data.npz
- for: { var: FIRING_RATES_SD, as: FR_SD }
file: results/Spiking_model_PIcontrol_PV_rt_tSD_{{.FR_SD}}/minimal_data.npz
generates:
- results/*.svg
- results/*.png
- results/*.pdf
cmds:
- python plot_parameter_sweep.py '{{.FIRING_RATES_SD | join ","}}'
plot_weights_over_time:
sources:
- plot_weights_over_time.py
- results/Spiking_model_baseline/results.pkl
- results/Spiking_model_PIcontrol_PV_rt_tSD_{{.MAX_FR_SD}}/results.pkl
generates:
- results/weights_over_time.svg
cmds:
- python plot_weights_over_time.py results/Spiking_model_baseline results/Spiking_model_PIcontrol_PV_rt_tSD_{{.MAX_FR_SD}}
extract_all_minimal_data:
sources:
- for: { var: FIRING_RATES_SD, as: FR_SD }
file: results/Spiking_model_PIcontrol_PV_rt_tSD_{{.FR_SD}}/results.pkl
- results/Spiking_model_baseline/results.pkl
generates:
- for: { var: FIRING_RATES_SD, as: FR_SD }
file: results/Spiking_model_PIcontrol_PV_rt_tSD_{{.FR_SD}}/minimal_data.pkl
- results/Spiking_model_baseline/minimal_data.npz
deps:
- for: { var: FIRING_RATES_SD, as: FR_SD }
task: extract_minimal_data
vars:
OUTDIR: results/Spiking_model_PIcontrol_PV_rt_tSD_{{.FR_SD}}
- task: extract_minimal_data
vars:
OUTDIR: results/Spiking_model_baseline
extract_minimal_data:
internal: true
sources:
- "{{.OUTDIR}}/results.pkl"
generates:
- "{{.OUTDIR}}/minimal_data.npz"
cmds:
- python extract_minimal_data.py {{.OUTDIR}}
run_all:
desc: Run baseline then control experiments in parallel
deps:
- task: get_targets_from_baseline
vars:
PARAM_OVERRIDES: '{{.PARAM_OVERRIDES}}'
cmds:
- task: run_all_ctrl
vars:
PARAM_OVERRIDES: '{{.PARAM_OVERRIDES}}'
run_all_ctrl:
internal: true
deps:
- for: {var: FIRING_RATES_SD, as: FR_SD}
task: run_ctrl
vars:
FR_SD: '{{.FR_SD}}'
PARAM_OVERRIDES: '{{.PARAM_OVERRIDES}}'
get_targets_from_baseline:
desc: Get the mean and standard deviation of the base firing rate (store in results/base_mean_sd.txt)
deps:
- task: run
vars:
FIRING_RATE: -1
OUTDIR: results/Spiking_model_baseline
PARAM_OVERRIDES: '{{.PARAM_OVERRIDES}}'
sources:
- results/Spiking_model_baseline/results.pkl
- get_targets_from_baseline.py
generates:
- results/base_mean_sd.txt
cmds:
- python get_targets_from_baseline.py results/Spiking_model_baseline/results.pkl
run:
desc: Run a single experiment for a target firing rate
vars:
FIRING_RATE: '{{.FIRING_RATE | default -1}}'
sources:
- Spiking_model_cleo.py
generates:
- "{{.OUTDIR}}/results.pkl"
cmds:
- python Spiking_model_cleo.py -F {{.OUTDIR}} with target_firing_rate={{.FIRING_RATE}} {{.PARAM_OVERRIDES}}
# link to latest run (need to find dynamically)
- ln -sf $(pwd)/{{.OUTDIR}}/$(find {{.OUTDIR}} -maxdepth 1 -type d -regex '.*/[0-9]+' | awk -F/ '{print $NF}' | sort -n | tail -1)/results.pkl {{.OUTDIR}}
run_ctrl:
vars:
FIRING_RATE:
sh: python firing_rate_sd_to_hz.py {{.FR_SD}}
OUTDIR: results/Spiking_model_PIcontrol_PV_rt_tSD_{{.FR_SD}}
cmds:
- task: run
vars:
FIRING_RATE: '{{.FIRING_RATE}}'
OUTDIR: '{{.OUTDIR}}'
PARAM_OVERRIDES: '{{.PARAM_OVERRIDES}}'
plot_exp:
desc: Produce detailed plots of a single experiment
sources:
- plot_essentials.py
- plot_Spikingmodel_stripped.py
- '{{.OUTDIR}}/results.pkl'
generates:
- "{{.OUTDIR}}/2ndbigfigure.pdf"
cmds:
- python plot_Spikingmodel_stripped.py {{.OUTDIR}}
- python plot_essentials.py {{.OUTDIR}}
plot_all_exps:
desc: Produce detailed plots of all experiments (assuming they've already run)
deps:
- for: { var: FIRING_RATES_SD, as: FR_SD }
task: plot_exp
vars:
OUTDIR: results/Spiking_model_PIcontrol_PV_rt_tSD_{{.FR_SD}}
- task: plot_exp
vars:
OUTDIR: results/Spiking_model_baseline