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/plot_commands.py CHANGED
@@ -1,23 +1,43 @@
1
- import click
2
- import logging
3
1
  import os
4
2
 
5
- from clint.textui import puts, colored, indent
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('plot')
15
- @click.option('--config', type=click.Path(), default='./simulation_config.json', help='Configuration file to use, default: "simulation_config.json"')
16
- @click.option('--no-display', is_flag=True, default=False, help='When set there will be no plot displayed, useful for saving plots')
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('connection', help='Display information related to neuron connections')
29
- @click.option('--title', type=click.STRING, default=None, help="change the plot's title")
30
- @click.option('--save-file', type=click.STRING, default=None, help="save plot to path supplied")
31
- @click.option('--sources', type=click.STRING, default='all', help="comma separated list of source node types [default:all]")
32
- @click.option('--targets', type=click.STRING, default='all', help="comma separated list of target node types [default:all]")
33
- @click.option('--sids', type=click.STRING, default=None, help="comma separated list of source node identifiers [default:node_type_id]")
34
- @click.option('--tids', type=click.STRING, default=None, help="comma separated list of target node identifiers [default:node_type_id]")
35
- @click.option('--no-prepend-pop', is_flag=True, default=False, help="When set don't prepend the population name to the unique ids [default:False]")
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
- 'title':title,
41
- 'save_file':save_file,
42
- 'sources':sources,
43
- 'targets':targets,
44
- 'sids':sids,
45
- 'tids':tids,
46
- 'no_prepend_pop':no_prepend_pop
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
- @connection.command('total',help="total connection matrix for a given set of populations")
50
- @click.option('--synfo', type=click.STRING, default='0', help=" 1 for mean and stdev;2 for .mod files used;3 for .json files used")
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['config'],**ctx.obj['connection'],synaptic_info=synfo)
54
- if ctx.obj['display']:
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
- @connection.command('percent',help="percentage matrix for a given set of populations")
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['config'],**ctx.obj['connection'])
61
- if ctx.obj['display']:
111
+ percent_connection_matrix(ctx.obj["config"], **ctx.obj["connection"])
112
+ if ctx.obj["display"]:
62
113
  plt.show()
63
114
 
64
- @connection.command('divergence',help="divergence matrix for a given set of populations")
65
- @click.option('--method', type=click.STRING, default='mean', help="mean, std, min, max (default: mean)")
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['config'],**ctx.obj['connection'],method=method)
69
- if ctx.obj['display']:
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
- @connection.command('convergence',help="convergence matrix for a given set of populations")
73
- @click.option('--method', type=click.STRING, default='mean', help="mean, std, min, max (default: mean)")
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(ctx.obj['config'],**ctx.obj['connection'],convergence=True,method=method)
77
- if ctx.obj['display']:
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
- @connection.command('prob',help="Probabilities for a connection between given populations. Distance and type dependent")
81
- @click.option('--axis', type=click.STRING, default='x,y,z', help="comma separated list of axis to use for distance measure eg: x,y,z or x,y")
82
- @click.option('--bins', type=click.STRING, default='8', help="number of bins to separate distances into (resolution) - default: 8")
83
- @click.option('--line', type=click.BOOL, is_flag=True, default=False, help="Create a line plot instead of a binned bar plot")
84
- @click.option('--verbose', type=click.BOOL, is_flag=True, default=False, help="Print plot values for use in another script")
85
- @click.pass_context
86
- def connection_probabilities(ctx,axis,bins,line,verbose):
87
- axis = axis.lower().split(',')
88
- dist_X = True if 'x' in axis else False
89
- dist_Y = True if 'y' in axis else False
90
- dist_Z = True if 'z' in axis else False
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("Working... this may take a few moments depending on the size of your network, please wait...")
93
- probability_connection_matrix(ctx.obj['config'],**ctx.obj['connection'],dist_X=dist_X,dist_Y=dist_Y,dist_Z=dist_Z,bins=bins,line_plot=line,verbose=verbose)
94
- if ctx.obj['display']:
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
- @connection.command('property-histogram-matrix',help="connection property matrix for a given set of populations")
98
- @click.option('--edge-property', type=click.STRING, default='syn_weight', help="Parameter you want to plot (default:syn_weight)")
99
- @click.option('--report', type=click.STRING, default=None, help="For variables that were collected post simulation run, specify the report the variable is contained in, specified in your simulation config (default:None)")
100
- @click.option('--time', type=click.STRING, default=-1, help="Time in (ms) that you want the data point to be collected from. Only used in conjunction with the --report parameter.")
101
- @click.option('--time-compare', type=click.STRING, default=None, help="Time in (ms) that you want to compare with the --time parameter. Requires --time and --report parameters.")
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(config = ctx.obj['config'],
105
- **ctx.obj['connection'],
106
- edge_property=edge_property,
107
- report=report,
108
- time=time,
109
- time_compare=time_compare)
110
- if ctx.obj['display']:
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
- @connection.command('network-graph',help="connection graph for supplied targets (default:all)")
114
- @click.option('--edge-property', type=click.STRING, default='model_template', help="Edge property to define connections [default:model_template]")
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['config'],**ctx.obj['connection'],edge_property=edge_property)
118
- if ctx.obj['display']:
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
- @click.group('cell', help='Plot information regarding cells in the model')
122
- @click.option('--title', type=click.STRING, default=None, help="change the plot's title")
123
- @click.option('--save-file', type=click.STRING, default=None, help="save plot to path supplied")
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
- ctx.obj["cell"] = {
128
- 'title':title,
129
- 'save_file':save_file
130
- }
131
-
132
- @cell.command('rotation',help="Plot a 3d plot for cell rotation")
133
- @click.option('--populations', type=click.STRING, default='all', help="comma separated list of populations to plot [default:all]")
134
- @click.option('--group-by', type=click.STRING, default='node_type_id', help="comma separated list of identifiers [default: node_type_id] (pop_name is a good one)")
135
- @click.option('--group', type=click.STRING, default=None, help="Conditional for cell selection (comma delimited). Eg if group-by was pop_name group would be PNc [default:None]")
136
- @click.option('--max-cells', type=click.INT, default=999999999, help="max number of cells to display [default: 999999999]")
137
- @click.option('--quiver-length', type=click.FLOAT, default=10, help="how long the arrows should be [default: 10]")
138
- @click.option('--arrow-length-ratio', type=click.FLOAT, default=0.2, help="ratio for the arrow of the quiver [default: 0.2]")
139
- @click.option('--init-vector', type=click.STRING, default="1,0,0", help="comma delimited initial rotation vector specified by pt3dadd [default: 0,0,1]")
140
- @click.pass_context
141
- def rotation_3d(ctx,populations,group_by,group,max_cells,quiver_length,arrow_length_ratio,init_vector):
142
- cell_rotation_3d(config=ctx.obj['config'],**ctx.obj['cell'],
143
- populations=populations,
144
- group_by=group_by,
145
- group=group,
146
- max_cells=max_cells,
147
- quiver_length=quiver_length,
148
- arrow_length_ratio=arrow_length_ratio,
149
- init_vector=init_vector)
150
- if ctx.obj['display']:
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('positions', help="Plot cell positions for a given set of populations")
155
- @click.option('--title', type=click.STRING, default='Cell 3D Positions', help="change the plot's title")
156
- @click.option('--populations', type=click.STRING, default='all', help="comma separated list of populations to plot [default:all]")
157
- @click.option('--group-by', type=click.STRING, default='node_type_id', help="comma separated list of identifiers [default: node_type_id] (pop_name is a good one)")
158
- @click.option('--save-file', type=click.STRING, default=None, help="save plot to path supplied [default:None]")
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(config=ctx.obj['config'],
162
- title=title,
163
- populations=populations,
164
- group_by=group_by,
165
- save_file=save_file)
166
- if ctx.obj['display']:
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
- @cli.command('raster', help="Plot the spike raster for a given population")
170
- @click.option('--title', type=click.STRING, default='Raster Plot', help="change the plot's title")
171
- @click.option('--population', type=click.STRING, default=None, help="population name")
172
- @click.option('--group-key', type=click.STRING, default='pop_name', help="change key to group cells by [default: pop_name]")
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['config'],
176
- title=title,
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
- @cli.command('report', help="Plot the specified report using BMTK's default report plotter")
183
- @click.option('--report-name', type=click.STRING, default=None, help="Name of the report specified in your simulation config you want to consider")
184
- @click.option('--variables', type=click.STRING, default=None, help="Comma separated list of variables to plot")
185
- @click.option('--gids', type=click.STRING, default=None, help="Cell numbers you want to plot")
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(config=ctx.obj['config'],
189
- report_name=report_name,
190
- variables=variables,
191
- gids=gids)
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('summary', help="Plot connprobs,Iclamp,inptrains,#cells,#conn,3Dpos.")
197
- @click.option('--network', type=click.STRING, default=None, help="Name of the biophysical network you want to probe for prob connection plot")
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['config'],
201
- network=network)
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
- @cli.command('iclamp', help="Plot just the I-clamps involved in the simulation.")
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['config'])
210
- if ctx.obj['display']:
406
+ plot_I_clamps(fp=ctx.obj["config"])
407
+ if ctx.obj["display"]:
211
408
  plt.show()
212
409
 
213
- @cli.command('cells', help="Print out cell information including virtual cells.")
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['config'])
414
+ plot_basic_cell_info(config_file=ctx.obj["config"])
415
+
217
416
 
218
- @cli.command('input', help="Plot just the input spike trains involved in the simulation.")
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['config'])
222
- if ctx.obj['display']:
420
+ plot_inspikes(fp=ctx.obj["config"])
421
+ if ctx.obj["display"]:
223
422
  plt.show()
224
423
 
225
424