bmtool 0.7.0.6.4__py3-none-any.whl → 0.7.1.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- bmtool/SLURM.py +162 -109
- bmtool/__init__.py +1 -1
- bmtool/__main__.py +8 -7
- bmtool/analysis/entrainment.py +290 -147
- bmtool/analysis/lfp.py +279 -134
- bmtool/analysis/netcon_reports.py +41 -44
- bmtool/analysis/spikes.py +114 -73
- bmtool/bmplot/connections.py +658 -325
- bmtool/bmplot/entrainment.py +17 -18
- bmtool/bmplot/lfp.py +24 -17
- bmtool/bmplot/netcon_reports.py +0 -4
- bmtool/bmplot/spikes.py +97 -48
- bmtool/connectors.py +394 -251
- bmtool/debug/commands.py +13 -7
- bmtool/debug/debug.py +2 -2
- bmtool/graphs.py +26 -19
- bmtool/manage.py +6 -11
- bmtool/plot_commands.py +350 -151
- bmtool/singlecell.py +357 -195
- bmtool/synapses.py +564 -470
- bmtool/util/commands.py +1079 -627
- bmtool/util/neuron/celltuner.py +989 -609
- bmtool/util/util.py +992 -588
- {bmtool-0.7.0.6.4.dist-info → bmtool-0.7.1.1.dist-info}/METADATA +40 -2
- bmtool-0.7.1.1.dist-info/RECORD +34 -0
- {bmtool-0.7.0.6.4.dist-info → bmtool-0.7.1.1.dist-info}/WHEEL +1 -1
- bmtool-0.7.0.6.4.dist-info/RECORD +0 -34
- {bmtool-0.7.0.6.4.dist-info → bmtool-0.7.1.1.dist-info}/entry_points.txt +0 -0
- {bmtool-0.7.0.6.4.dist-info → bmtool-0.7.1.1.dist-info}/licenses/LICENSE +0 -0
- {bmtool-0.7.0.6.4.dist-info → bmtool-0.7.1.1.dist-info}/top_level.txt +0 -0
bmtool/plot_commands.py
CHANGED
@@ -1,23 +1,43 @@
|
|
1
|
-
import click
|
2
|
-
import logging
|
3
1
|
import os
|
4
2
|
|
5
|
-
|
6
|
-
from .bmplot import (connection_matrix, percent_connection_matrix,
|
7
|
-
divergence_connection_matrix,plot_3d_positions,
|
8
|
-
edge_histogram_matrix,plot_network_graph,
|
9
|
-
raster,plot_report_default,probability_connection_matrix,
|
10
|
-
sim_setup,plot_I_clamps,plot_basic_cell_info,
|
11
|
-
plot_inspikes, cell_rotation_3d)
|
3
|
+
import click
|
12
4
|
import matplotlib.pyplot as plt
|
5
|
+
from clint.textui import colored
|
6
|
+
|
7
|
+
from .bmplot import (
|
8
|
+
cell_rotation_3d,
|
9
|
+
connection_matrix,
|
10
|
+
divergence_connection_matrix,
|
11
|
+
edge_histogram_matrix,
|
12
|
+
percent_connection_matrix,
|
13
|
+
plot_3d_positions,
|
14
|
+
plot_basic_cell_info,
|
15
|
+
plot_I_clamps,
|
16
|
+
plot_inspikes,
|
17
|
+
plot_network_graph,
|
18
|
+
plot_report_default,
|
19
|
+
probability_connection_matrix,
|
20
|
+
raster,
|
21
|
+
sim_setup,
|
22
|
+
)
|
23
|
+
|
13
24
|
|
14
|
-
@click.group(
|
15
|
-
@click.option(
|
16
|
-
|
25
|
+
@click.group("plot")
|
26
|
+
@click.option(
|
27
|
+
"--config",
|
28
|
+
type=click.Path(),
|
29
|
+
default="./simulation_config.json",
|
30
|
+
help='Configuration file to use, default: "simulation_config.json"',
|
31
|
+
)
|
32
|
+
@click.option(
|
33
|
+
"--no-display",
|
34
|
+
is_flag=True,
|
35
|
+
default=False,
|
36
|
+
help="When set there will be no plot displayed, useful for saving plots",
|
37
|
+
)
|
17
38
|
@click.pass_context
|
18
39
|
def cli(ctx, config, no_display):
|
19
|
-
|
20
|
-
config_path = os.path.abspath(os.path.expanduser(config)).replace("\\","/")
|
40
|
+
config_path = os.path.abspath(os.path.expanduser(config)).replace("\\", "/")
|
21
41
|
if not os.path.exists(config_path):
|
22
42
|
click.echo(colored.red("Config file not found: " + config))
|
23
43
|
|
@@ -25,201 +45,380 @@ def cli(ctx, config, no_display):
|
|
25
45
|
ctx.obj["display"] = not no_display
|
26
46
|
|
27
47
|
|
28
|
-
@click.group(
|
29
|
-
@click.option(
|
30
|
-
@click.option(
|
31
|
-
@click.option(
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
48
|
+
@click.group("connection", help="Display information related to neuron connections")
|
49
|
+
@click.option("--title", type=click.STRING, default=None, help="change the plot's title")
|
50
|
+
@click.option("--save-file", type=click.STRING, default=None, help="save plot to path supplied")
|
51
|
+
@click.option(
|
52
|
+
"--sources",
|
53
|
+
type=click.STRING,
|
54
|
+
default="all",
|
55
|
+
help="comma separated list of source node types [default:all]",
|
56
|
+
)
|
57
|
+
@click.option(
|
58
|
+
"--targets",
|
59
|
+
type=click.STRING,
|
60
|
+
default="all",
|
61
|
+
help="comma separated list of target node types [default:all]",
|
62
|
+
)
|
63
|
+
@click.option(
|
64
|
+
"--sids",
|
65
|
+
type=click.STRING,
|
66
|
+
default=None,
|
67
|
+
help="comma separated list of source node identifiers [default:node_type_id]",
|
68
|
+
)
|
69
|
+
@click.option(
|
70
|
+
"--tids",
|
71
|
+
type=click.STRING,
|
72
|
+
default=None,
|
73
|
+
help="comma separated list of target node identifiers [default:node_type_id]",
|
74
|
+
)
|
75
|
+
@click.option(
|
76
|
+
"--no-prepend-pop",
|
77
|
+
is_flag=True,
|
78
|
+
default=False,
|
79
|
+
help="When set don't prepend the population name to the unique ids [default:False]",
|
80
|
+
)
|
36
81
|
@click.pass_context
|
37
|
-
def connection(ctx,title,save_file,sources,targets,sids,tids,no_prepend_pop):
|
38
|
-
|
82
|
+
def connection(ctx, title, save_file, sources, targets, sids, tids, no_prepend_pop):
|
39
83
|
ctx.obj["connection"] = {
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
84
|
+
"title": title,
|
85
|
+
"save_file": save_file,
|
86
|
+
"sources": sources,
|
87
|
+
"targets": targets,
|
88
|
+
"sids": sids,
|
89
|
+
"tids": tids,
|
90
|
+
"no_prepend_pop": no_prepend_pop,
|
47
91
|
}
|
48
|
-
|
49
|
-
|
50
|
-
@
|
92
|
+
|
93
|
+
|
94
|
+
@connection.command("total", help="total connection matrix for a given set of populations")
|
95
|
+
@click.option(
|
96
|
+
"--synfo",
|
97
|
+
type=click.STRING,
|
98
|
+
default="0",
|
99
|
+
help=" 1 for mean and stdev;2 for .mod files used;3 for .json files used",
|
100
|
+
)
|
51
101
|
@click.pass_context
|
52
|
-
def connection_total(ctx,synfo):
|
53
|
-
connection_matrix(ctx.obj[
|
54
|
-
if ctx.obj[
|
102
|
+
def connection_total(ctx, synfo):
|
103
|
+
connection_matrix(ctx.obj["config"], **ctx.obj["connection"], synaptic_info=synfo)
|
104
|
+
if ctx.obj["display"]:
|
55
105
|
plt.show()
|
56
106
|
|
57
|
-
|
107
|
+
|
108
|
+
@connection.command("percent", help="percentage matrix for a given set of populations")
|
58
109
|
@click.pass_context
|
59
110
|
def connection_percent(ctx):
|
60
|
-
percent_connection_matrix(ctx.obj[
|
61
|
-
if ctx.obj[
|
111
|
+
percent_connection_matrix(ctx.obj["config"], **ctx.obj["connection"])
|
112
|
+
if ctx.obj["display"]:
|
62
113
|
plt.show()
|
63
114
|
|
64
|
-
|
65
|
-
@
|
115
|
+
|
116
|
+
@connection.command("divergence", help="divergence matrix for a given set of populations")
|
117
|
+
@click.option(
|
118
|
+
"--method", type=click.STRING, default="mean", help="mean, std, min, max (default: mean)"
|
119
|
+
)
|
66
120
|
@click.pass_context
|
67
|
-
def connection_divergence(ctx,method):
|
68
|
-
divergence_connection_matrix(ctx.obj[
|
69
|
-
if ctx.obj[
|
121
|
+
def connection_divergence(ctx, method):
|
122
|
+
divergence_connection_matrix(ctx.obj["config"], **ctx.obj["connection"], method=method)
|
123
|
+
if ctx.obj["display"]:
|
70
124
|
plt.show()
|
71
125
|
|
72
|
-
|
73
|
-
@
|
126
|
+
|
127
|
+
@connection.command("convergence", help="convergence matrix for a given set of populations")
|
128
|
+
@click.option(
|
129
|
+
"--method", type=click.STRING, default="mean", help="mean, std, min, max (default: mean)"
|
130
|
+
)
|
74
131
|
@click.pass_context
|
75
|
-
def connection_convergence(ctx,method):
|
76
|
-
divergence_connection_matrix(
|
77
|
-
|
132
|
+
def connection_convergence(ctx, method):
|
133
|
+
divergence_connection_matrix(
|
134
|
+
ctx.obj["config"], **ctx.obj["connection"], convergence=True, method=method
|
135
|
+
)
|
136
|
+
if ctx.obj["display"]:
|
78
137
|
plt.show()
|
79
138
|
|
80
|
-
|
81
|
-
@
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
@click.
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
139
|
+
|
140
|
+
@connection.command(
|
141
|
+
"prob",
|
142
|
+
help="Probabilities for a connection between given populations. Distance and type dependent",
|
143
|
+
)
|
144
|
+
@click.option(
|
145
|
+
"--axis",
|
146
|
+
type=click.STRING,
|
147
|
+
default="x,y,z",
|
148
|
+
help="comma separated list of axis to use for distance measure eg: x,y,z or x,y",
|
149
|
+
)
|
150
|
+
@click.option(
|
151
|
+
"--bins",
|
152
|
+
type=click.STRING,
|
153
|
+
default="8",
|
154
|
+
help="number of bins to separate distances into (resolution) - default: 8",
|
155
|
+
)
|
156
|
+
@click.option(
|
157
|
+
"--line",
|
158
|
+
type=click.BOOL,
|
159
|
+
is_flag=True,
|
160
|
+
default=False,
|
161
|
+
help="Create a line plot instead of a binned bar plot",
|
162
|
+
)
|
163
|
+
@click.option(
|
164
|
+
"--verbose",
|
165
|
+
type=click.BOOL,
|
166
|
+
is_flag=True,
|
167
|
+
default=False,
|
168
|
+
help="Print plot values for use in another script",
|
169
|
+
)
|
170
|
+
@click.pass_context
|
171
|
+
def connection_probabilities(ctx, axis, bins, line, verbose):
|
172
|
+
axis = axis.lower().split(",")
|
173
|
+
dist_X = True if "x" in axis else False
|
174
|
+
dist_Y = True if "y" in axis else False
|
175
|
+
dist_Z = True if "z" in axis else False
|
91
176
|
bins = int(bins)
|
92
|
-
print(
|
93
|
-
|
94
|
-
|
177
|
+
print(
|
178
|
+
"Working... this may take a few moments depending on the size of your network, please wait..."
|
179
|
+
)
|
180
|
+
probability_connection_matrix(
|
181
|
+
ctx.obj["config"],
|
182
|
+
**ctx.obj["connection"],
|
183
|
+
dist_X=dist_X,
|
184
|
+
dist_Y=dist_Y,
|
185
|
+
dist_Z=dist_Z,
|
186
|
+
bins=bins,
|
187
|
+
line_plot=line,
|
188
|
+
verbose=verbose,
|
189
|
+
)
|
190
|
+
if ctx.obj["display"]:
|
95
191
|
plt.show()
|
96
192
|
|
97
|
-
|
98
|
-
@
|
99
|
-
|
100
|
-
|
101
|
-
@click.option(
|
193
|
+
|
194
|
+
@connection.command(
|
195
|
+
"property-histogram-matrix", help="connection property matrix for a given set of populations"
|
196
|
+
)
|
197
|
+
@click.option(
|
198
|
+
"--edge-property",
|
199
|
+
type=click.STRING,
|
200
|
+
default="syn_weight",
|
201
|
+
help="Parameter you want to plot (default:syn_weight)",
|
202
|
+
)
|
203
|
+
@click.option(
|
204
|
+
"--report",
|
205
|
+
type=click.STRING,
|
206
|
+
default=None,
|
207
|
+
help="For variables that were collected post simulation run, specify the report the variable is contained in, specified in your simulation config (default:None)",
|
208
|
+
)
|
209
|
+
@click.option(
|
210
|
+
"--time",
|
211
|
+
type=click.STRING,
|
212
|
+
default=-1,
|
213
|
+
help="Time in (ms) that you want the data point to be collected from. Only used in conjunction with the --report parameter.",
|
214
|
+
)
|
215
|
+
@click.option(
|
216
|
+
"--time-compare",
|
217
|
+
type=click.STRING,
|
218
|
+
default=None,
|
219
|
+
help="Time in (ms) that you want to compare with the --time parameter. Requires --time and --report parameters.",
|
220
|
+
)
|
102
221
|
@click.pass_context
|
103
222
|
def connection_property_histogram_matrix(ctx, edge_property, report, time, time_compare):
|
104
|
-
edge_histogram_matrix(
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
223
|
+
edge_histogram_matrix(
|
224
|
+
config=ctx.obj["config"],
|
225
|
+
**ctx.obj["connection"],
|
226
|
+
edge_property=edge_property,
|
227
|
+
report=report,
|
228
|
+
time=time,
|
229
|
+
time_compare=time_compare,
|
230
|
+
)
|
231
|
+
if ctx.obj["display"]:
|
111
232
|
plt.show()
|
112
233
|
|
113
|
-
|
114
|
-
@
|
234
|
+
|
235
|
+
@connection.command("network-graph", help="connection graph for supplied targets (default:all)")
|
236
|
+
@click.option(
|
237
|
+
"--edge-property",
|
238
|
+
type=click.STRING,
|
239
|
+
default="model_template",
|
240
|
+
help="Edge property to define connections [default:model_template]",
|
241
|
+
)
|
115
242
|
@click.pass_context
|
116
|
-
def connection_network_graph(ctx,edge_property):
|
117
|
-
plot_network_graph(ctx.obj[
|
118
|
-
if ctx.obj[
|
243
|
+
def connection_network_graph(ctx, edge_property):
|
244
|
+
plot_network_graph(ctx.obj["config"], **ctx.obj["connection"], edge_property=edge_property)
|
245
|
+
if ctx.obj["display"]:
|
119
246
|
plt.show()
|
120
247
|
|
121
|
-
|
122
|
-
@click.
|
123
|
-
@click.option(
|
248
|
+
|
249
|
+
@click.group("cell", help="Plot information regarding cells in the model")
|
250
|
+
@click.option("--title", type=click.STRING, default=None, help="change the plot's title")
|
251
|
+
@click.option("--save-file", type=click.STRING, default=None, help="save plot to path supplied")
|
124
252
|
@click.pass_context
|
125
|
-
def cell(ctx,title,save_file):
|
253
|
+
def cell(ctx, title, save_file):
|
254
|
+
ctx.obj["cell"] = {"title": title, "save_file": save_file}
|
126
255
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
@click.option(
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
256
|
+
|
257
|
+
@cell.command("rotation", help="Plot a 3d plot for cell rotation")
|
258
|
+
@click.option(
|
259
|
+
"--populations",
|
260
|
+
type=click.STRING,
|
261
|
+
default="all",
|
262
|
+
help="comma separated list of populations to plot [default:all]",
|
263
|
+
)
|
264
|
+
@click.option(
|
265
|
+
"--group-by",
|
266
|
+
type=click.STRING,
|
267
|
+
default="node_type_id",
|
268
|
+
help="comma separated list of identifiers [default: node_type_id] (pop_name is a good one)",
|
269
|
+
)
|
270
|
+
@click.option(
|
271
|
+
"--group",
|
272
|
+
type=click.STRING,
|
273
|
+
default=None,
|
274
|
+
help="Conditional for cell selection (comma delimited). Eg if group-by was pop_name group would be PNc [default:None]",
|
275
|
+
)
|
276
|
+
@click.option(
|
277
|
+
"--max-cells",
|
278
|
+
type=click.INT,
|
279
|
+
default=999999999,
|
280
|
+
help="max number of cells to display [default: 999999999]",
|
281
|
+
)
|
282
|
+
@click.option(
|
283
|
+
"--quiver-length",
|
284
|
+
type=click.FLOAT,
|
285
|
+
default=10,
|
286
|
+
help="how long the arrows should be [default: 10]",
|
287
|
+
)
|
288
|
+
@click.option(
|
289
|
+
"--arrow-length-ratio",
|
290
|
+
type=click.FLOAT,
|
291
|
+
default=0.2,
|
292
|
+
help="ratio for the arrow of the quiver [default: 0.2]",
|
293
|
+
)
|
294
|
+
@click.option(
|
295
|
+
"--init-vector",
|
296
|
+
type=click.STRING,
|
297
|
+
default="1,0,0",
|
298
|
+
help="comma delimited initial rotation vector specified by pt3dadd [default: 0,0,1]",
|
299
|
+
)
|
300
|
+
@click.pass_context
|
301
|
+
def rotation_3d(
|
302
|
+
ctx, populations, group_by, group, max_cells, quiver_length, arrow_length_ratio, init_vector
|
303
|
+
):
|
304
|
+
cell_rotation_3d(
|
305
|
+
config=ctx.obj["config"],
|
306
|
+
**ctx.obj["cell"],
|
307
|
+
populations=populations,
|
308
|
+
group_by=group_by,
|
309
|
+
group=group,
|
310
|
+
max_cells=max_cells,
|
311
|
+
quiver_length=quiver_length,
|
312
|
+
arrow_length_ratio=arrow_length_ratio,
|
313
|
+
init_vector=init_vector,
|
314
|
+
)
|
315
|
+
if ctx.obj["display"]:
|
151
316
|
plt.show()
|
152
317
|
|
153
318
|
|
154
|
-
@cli.command(
|
155
|
-
@click.option(
|
156
|
-
|
157
|
-
|
158
|
-
@click.option(
|
319
|
+
@cli.command("positions", help="Plot cell positions for a given set of populations")
|
320
|
+
@click.option(
|
321
|
+
"--title", type=click.STRING, default="Cell 3D Positions", help="change the plot's title"
|
322
|
+
)
|
323
|
+
@click.option(
|
324
|
+
"--populations",
|
325
|
+
type=click.STRING,
|
326
|
+
default="all",
|
327
|
+
help="comma separated list of populations to plot [default:all]",
|
328
|
+
)
|
329
|
+
@click.option(
|
330
|
+
"--group-by",
|
331
|
+
type=click.STRING,
|
332
|
+
default="node_type_id",
|
333
|
+
help="comma separated list of identifiers [default: node_type_id] (pop_name is a good one)",
|
334
|
+
)
|
335
|
+
@click.option(
|
336
|
+
"--save-file", type=click.STRING, default=None, help="save plot to path supplied [default:None]"
|
337
|
+
)
|
159
338
|
@click.pass_context
|
160
339
|
def plot_positions(ctx, title, populations, group_by, save_file):
|
161
|
-
plot_3d_positions(
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
340
|
+
plot_3d_positions(
|
341
|
+
config=ctx.obj["config"],
|
342
|
+
title=title,
|
343
|
+
populations=populations,
|
344
|
+
group_by=group_by,
|
345
|
+
save_file=save_file,
|
346
|
+
)
|
347
|
+
if ctx.obj["display"]:
|
167
348
|
plt.show()
|
168
349
|
|
169
|
-
|
170
|
-
@
|
171
|
-
@click.option(
|
172
|
-
@click.option(
|
350
|
+
|
351
|
+
@cli.command("raster", help="Plot the spike raster for a given population")
|
352
|
+
@click.option("--title", type=click.STRING, default="Raster Plot", help="change the plot's title")
|
353
|
+
@click.option("--population", type=click.STRING, default=None, help="population name")
|
354
|
+
@click.option(
|
355
|
+
"--group-key",
|
356
|
+
type=click.STRING,
|
357
|
+
default="pop_name",
|
358
|
+
help="change key to group cells by [default: pop_name]",
|
359
|
+
)
|
173
360
|
@click.pass_context
|
174
361
|
def plot_raster(ctx, title, population, group_key):
|
175
|
-
raster(config=ctx.obj[
|
176
|
-
|
177
|
-
population=population,
|
178
|
-
group_key=group_key)
|
179
|
-
if ctx.obj['display']:
|
362
|
+
raster(config=ctx.obj["config"], title=title, population=population, group_key=group_key)
|
363
|
+
if ctx.obj["display"]:
|
180
364
|
plt.show()
|
181
365
|
|
182
|
-
|
183
|
-
@
|
184
|
-
@click.option(
|
185
|
-
|
366
|
+
|
367
|
+
@cli.command("report", help="Plot the specified report using BMTK's default report plotter")
|
368
|
+
@click.option(
|
369
|
+
"--report-name",
|
370
|
+
type=click.STRING,
|
371
|
+
default=None,
|
372
|
+
help="Name of the report specified in your simulation config you want to consider",
|
373
|
+
)
|
374
|
+
@click.option(
|
375
|
+
"--variables", type=click.STRING, default=None, help="Comma separated list of variables to plot"
|
376
|
+
)
|
377
|
+
@click.option("--gids", type=click.STRING, default=None, help="Cell numbers you want to plot")
|
186
378
|
@click.pass_context
|
187
379
|
def plot_report(ctx, report_name, variables, gids):
|
188
|
-
plot_report_default(
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
if ctx.obj['display']:
|
380
|
+
plot_report_default(
|
381
|
+
config=ctx.obj["config"], report_name=report_name, variables=variables, gids=gids
|
382
|
+
)
|
383
|
+
if ctx.obj["display"]:
|
193
384
|
plt.show()
|
194
385
|
|
386
|
+
|
195
387
|
# Additional commands by Matt Stroud
|
196
|
-
@cli.command(
|
197
|
-
@click.option(
|
388
|
+
@cli.command("summary", help="Plot connprobs,Iclamp,inptrains,#cells,#conn,3Dpos.")
|
389
|
+
@click.option(
|
390
|
+
"--network",
|
391
|
+
type=click.STRING,
|
392
|
+
default=None,
|
393
|
+
help="Name of the biophysical network you want to probe for prob connection plot",
|
394
|
+
)
|
198
395
|
@click.pass_context
|
199
396
|
def setup(ctx, network):
|
200
|
-
sim_setup(config_file=ctx.obj[
|
201
|
-
|
202
|
-
if ctx.obj['display']:
|
397
|
+
sim_setup(config_file=ctx.obj["config"], network=network)
|
398
|
+
if ctx.obj["display"]:
|
203
399
|
plt.close(1)
|
204
400
|
plt.show(block=True)
|
205
401
|
|
206
|
-
|
402
|
+
|
403
|
+
@cli.command("iclamp", help="Plot just the I-clamps involved in the simulation.")
|
207
404
|
@click.pass_context
|
208
405
|
def I_clamp(ctx):
|
209
|
-
plot_I_clamps(fp=ctx.obj[
|
210
|
-
if ctx.obj[
|
406
|
+
plot_I_clamps(fp=ctx.obj["config"])
|
407
|
+
if ctx.obj["display"]:
|
211
408
|
plt.show()
|
212
409
|
|
213
|
-
|
410
|
+
|
411
|
+
@cli.command("cells", help="Print out cell information including virtual cells.")
|
214
412
|
@click.pass_context
|
215
413
|
def Cells(ctx):
|
216
|
-
plot_basic_cell_info(config_file=ctx.obj[
|
414
|
+
plot_basic_cell_info(config_file=ctx.obj["config"])
|
415
|
+
|
217
416
|
|
218
|
-
@cli.command(
|
417
|
+
@cli.command("input", help="Plot just the input spike trains involved in the simulation.")
|
219
418
|
@click.pass_context
|
220
419
|
def Spikes(ctx):
|
221
|
-
plot_inspikes(fp=ctx.obj[
|
222
|
-
if ctx.obj[
|
420
|
+
plot_inspikes(fp=ctx.obj["config"])
|
421
|
+
if ctx.obj["display"]:
|
223
422
|
plt.show()
|
224
423
|
|
225
424
|
|