bmtool 0.5.9.7__py3-none-any.whl → 0.5.9.8__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/bmplot.py +36 -33
- bmtool/connectors.py +2 -2
- bmtool/util/util.py +6 -12
- {bmtool-0.5.9.7.dist-info → bmtool-0.5.9.8.dist-info}/METADATA +29 -371
- {bmtool-0.5.9.7.dist-info → bmtool-0.5.9.8.dist-info}/RECORD +9 -9
- {bmtool-0.5.9.7.dist-info → bmtool-0.5.9.8.dist-info}/WHEEL +1 -1
- {bmtool-0.5.9.7.dist-info → bmtool-0.5.9.8.dist-info}/LICENSE +0 -0
- {bmtool-0.5.9.7.dist-info → bmtool-0.5.9.8.dist-info}/entry_points.txt +0 -0
- {bmtool-0.5.9.7.dist-info → bmtool-0.5.9.8.dist-info}/top_level.txt +0 -0
bmtool/bmplot.py
CHANGED
@@ -274,7 +274,7 @@ def divergence_connection_matrix(config=None,title=None,sources=None, targets=No
|
|
274
274
|
plot_connection_info(syn_info,data,source_labels,target_labels,title, save_file=save_file)
|
275
275
|
return
|
276
276
|
|
277
|
-
def gap_junction_matrix(config=None,title=None,sources=None, targets=None, sids=None,tids=None, no_prepend_pop=False,save_file=None,
|
277
|
+
def gap_junction_matrix(config=None,title=None,sources=None, targets=None, sids=None,tids=None, no_prepend_pop=False,save_file=None,method='convergence'):
|
278
278
|
"""
|
279
279
|
Generates connection plot displaying gap junction data.
|
280
280
|
config: A BMTK simulation config
|
@@ -290,7 +290,7 @@ def gap_junction_matrix(config=None,title=None,sources=None, targets=None, sids=
|
|
290
290
|
raise Exception("config not defined")
|
291
291
|
if not sources or not targets:
|
292
292
|
raise Exception("Sources or targets not defined")
|
293
|
-
if
|
293
|
+
if method !='convergence' and method!='percent':
|
294
294
|
raise Exception("type must be 'convergence' or 'percent'")
|
295
295
|
sources = sources.split(",")
|
296
296
|
targets = targets.split(",")
|
@@ -302,7 +302,7 @@ def gap_junction_matrix(config=None,title=None,sources=None, targets=None, sids=
|
|
302
302
|
tids = tids.split(",")
|
303
303
|
else:
|
304
304
|
tids = []
|
305
|
-
syn_info, data, source_labels, target_labels = util.gap_junction_connections(config=config,nodes=None,edges=None,sources=sources,targets=targets,sids=sids,tids=tids,prepend_pop=not no_prepend_pop,
|
305
|
+
syn_info, data, source_labels, target_labels = util.gap_junction_connections(config=config,nodes=None,edges=None,sources=sources,targets=targets,sids=sids,tids=tids,prepend_pop=not no_prepend_pop,method=method)
|
306
306
|
|
307
307
|
|
308
308
|
def filter_rows(syn_info, data, source_labels, target_labels):
|
@@ -350,7 +350,7 @@ def gap_junction_matrix(config=None,title=None,sources=None, targets=None, sids=
|
|
350
350
|
plot_connection_info(syn_info,data,source_labels,target_labels,title, save_file=save_file)
|
351
351
|
return
|
352
352
|
|
353
|
-
def connection_histogram(config=None,nodes=None,edges=None,sources=[],targets=[],sids=[],tids=[],
|
353
|
+
def connection_histogram(config=None,nodes=None,edges=None,sources=[],targets=[],sids=[],tids=[],no_prepend_pop=True,synaptic_info='0',
|
354
354
|
source_cell = None,target_cell = None,include_gap=True):
|
355
355
|
"""
|
356
356
|
Generates histogram of number of connections individual cells in a population receieve from another population
|
@@ -379,15 +379,15 @@ def connection_histogram(config=None,nodes=None,edges=None,sources=[],targets=[]
|
|
379
379
|
conn_mean = statistics.mean(node_pairs.values)
|
380
380
|
conn_std = statistics.stdev(node_pairs.values)
|
381
381
|
conn_median = statistics.median(node_pairs.values)
|
382
|
-
label = "mean {:.2f} std
|
382
|
+
label = "mean {:.2f} std {:.2f} median {:.2f}".format(conn_mean,conn_std,conn_median)
|
383
383
|
except: # lazy fix for std not calculated with 1 node
|
384
384
|
conn_mean = statistics.mean(node_pairs.values)
|
385
385
|
conn_median = statistics.median(node_pairs.values)
|
386
386
|
label = "mean {:.2f} median {:.2f}".format(conn_mean,conn_median)
|
387
|
-
plt.hist(node_pairs.values,density=
|
387
|
+
plt.hist(node_pairs.values,density=False,bins='auto',stacked=True,label=label)
|
388
388
|
plt.legend()
|
389
389
|
plt.xlabel("# of conns from {} to {}".format(source_cell,target_cell))
|
390
|
-
plt.ylabel("
|
390
|
+
plt.ylabel("# of cells")
|
391
391
|
plt.show()
|
392
392
|
else: # dont care about other cell pairs so pass
|
393
393
|
pass
|
@@ -406,10 +406,10 @@ def connection_histogram(config=None,nodes=None,edges=None,sources=[],targets=[]
|
|
406
406
|
tids = tids.split(",")
|
407
407
|
else:
|
408
408
|
tids = []
|
409
|
-
util.relation_matrix(config,nodes,edges,sources,targets,sids,tids,
|
409
|
+
util.relation_matrix(config,nodes,edges,sources,targets,sids,tids,not no_prepend_pop,relation_func=connection_pair_histogram,synaptic_info=synaptic_info)
|
410
410
|
|
411
|
-
def connection_distance(config: str,
|
412
|
-
source_cell_id: int,target_id_type: str) -> None:
|
411
|
+
def connection_distance(config: str,sources: str,targets: str,
|
412
|
+
source_cell_id: int,target_id_type: str,ignore_z:bool=False) -> None:
|
413
413
|
"""
|
414
414
|
Plots the 3D spatial distribution of target nodes relative to a source node
|
415
415
|
and a histogram of distances from the source node to each target node.
|
@@ -421,11 +421,12 @@ def connection_distance(config: str,source: str,target: str,
|
|
421
421
|
targets: (str) network name(s) to plot
|
422
422
|
source_cell_id : (int) ID of the source cell for calculating distances to target nodes.
|
423
423
|
target_id_type : (str) A string to filter target nodes based off the target_query.
|
424
|
+
ignore_z : (bool) A bool to ignore_z axis or not for when calculating distance default is False
|
424
425
|
|
425
426
|
"""
|
426
427
|
if not config:
|
427
428
|
raise Exception("config not defined")
|
428
|
-
if not
|
429
|
+
if not sources or not targets:
|
429
430
|
raise Exception("Sources or targets not defined")
|
430
431
|
#if source != target:
|
431
432
|
#raise Exception("Code is setup for source and target to be the same! Look at source code for function to add feature")
|
@@ -433,8 +434,8 @@ def connection_distance(config: str,source: str,target: str,
|
|
433
434
|
# Load nodes and edges based on config file
|
434
435
|
nodes, edges = util.load_nodes_edges_from_config(config)
|
435
436
|
|
436
|
-
edge_network =
|
437
|
-
node_network =
|
437
|
+
edge_network = sources + "_to_" + targets
|
438
|
+
node_network = sources
|
438
439
|
|
439
440
|
# Filter edges to obtain connections originating from the source node
|
440
441
|
edge = edges[edge_network]
|
@@ -450,16 +451,25 @@ def connection_distance(config: str,source: str,target: str,
|
|
450
451
|
source_node = node.loc[node.index == source_cell_id]
|
451
452
|
|
452
453
|
# Calculate distances between source node and each target node
|
453
|
-
|
454
|
-
|
454
|
+
if ignore_z:
|
455
|
+
target_positions = target_nodes[['pos_x', 'pos_y']].values
|
456
|
+
source_position = np.array([source_node['pos_x'], source_node['pos_y']]).ravel() # Ensure 1D shape
|
457
|
+
else:
|
458
|
+
target_positions = target_nodes[['pos_x', 'pos_y', 'pos_z']].values
|
459
|
+
source_position = np.array([source_node['pos_x'], source_node['pos_y'], source_node['pos_z']]).ravel() # Ensure 1D shape
|
455
460
|
distances = np.linalg.norm(target_positions - source_position, axis=1)
|
456
461
|
|
457
|
-
# Plot positions of source and target nodes in 3D space
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
462
|
+
# Plot positions of source and target nodes in 3D space or 2D
|
463
|
+
if ignore_z:
|
464
|
+
fig = plt.figure(figsize=(8, 6))
|
465
|
+
ax = fig.add_subplot(111)
|
466
|
+
ax.scatter(target_nodes['pos_x'], target_nodes['pos_y'], c='blue', label="target cells")
|
467
|
+
ax.scatter(source_node['pos_x'], source_node['pos_y'], c='red', label="source cell")
|
468
|
+
else:
|
469
|
+
fig = plt.figure(figsize=(8, 6))
|
470
|
+
ax = fig.add_subplot(111, projection='3d')
|
471
|
+
ax.scatter(target_nodes['pos_x'], target_nodes['pos_y'], target_nodes['pos_z'], c='blue', label="target cells")
|
472
|
+
ax.scatter(source_node['pos_x'], source_node['pos_y'], source_node['pos_z'], c='red', label="source cell")
|
463
473
|
|
464
474
|
# Optional: Add text annotations for distances
|
465
475
|
# for i, distance in enumerate(distances):
|
@@ -474,7 +484,7 @@ def connection_distance(config: str,source: str,target: str,
|
|
474
484
|
plt.hist(distances, bins=20, color='blue', edgecolor='black')
|
475
485
|
plt.xlabel("Distance")
|
476
486
|
plt.ylabel("Count")
|
477
|
-
plt.title("Distance from Source Node to Each Target Node")
|
487
|
+
plt.title(f"Distance from Source Node to Each Target Node")
|
478
488
|
plt.grid(True)
|
479
489
|
plt.show()
|
480
490
|
|
@@ -914,7 +924,7 @@ def plot_3d_positions(config=None, populations_list=None, group_by=None, title=N
|
|
914
924
|
|
915
925
|
return
|
916
926
|
|
917
|
-
def
|
927
|
+
def plot_3d_cell_rotation(config=None, populations_list=None, group_by=None, title=None, save_file=None, quiver_length=None, arrow_length_ratio=None, group=None, subset=None):
|
918
928
|
from scipy.spatial.transform import Rotation as R
|
919
929
|
if not config:
|
920
930
|
raise Exception("config not defined")
|
@@ -957,23 +967,16 @@ def cell_rotation_3d(config=None, populations_list=None, group_by=None, title=No
|
|
957
967
|
groupings = [(None, nodes_df)]
|
958
968
|
color_map = ['blue']
|
959
969
|
|
960
|
-
cells_plotted = 0
|
961
970
|
for color, (group_name, group_df) in zip(color_map, groupings):
|
971
|
+
if subset is not None:
|
972
|
+
group_df = group_df.iloc[::subset]
|
973
|
+
|
962
974
|
if group and group_name not in group.split(","):
|
963
975
|
continue
|
964
976
|
|
965
977
|
if "pos_x" not in group_df or "rotation_angle_xaxis" not in group_df:
|
966
978
|
continue
|
967
979
|
|
968
|
-
if cells_plotted >= max_cells:
|
969
|
-
continue
|
970
|
-
|
971
|
-
if len(group_df) + cells_plotted > max_cells:
|
972
|
-
total_remaining = max_cells - cells_plotted
|
973
|
-
group_df = group_df[:total_remaining]
|
974
|
-
|
975
|
-
cells_plotted += len(group_df)
|
976
|
-
|
977
980
|
X = group_df["pos_x"]
|
978
981
|
Y = group_df["pos_y"]
|
979
982
|
Z = group_df["pos_z"]
|
bmtool/connectors.py
CHANGED
@@ -1272,8 +1272,8 @@ class GapJunction(UnidirectionConnector):
|
|
1272
1272
|
Similar to `UnidirectionConnector`.
|
1273
1273
|
"""
|
1274
1274
|
|
1275
|
-
def __init__(self, p=1., p_arg=None, verbose=True,report_name=None):
|
1276
|
-
super().__init__(p=p, p_arg=p_arg, verbose=verbose,report_name=None)
|
1275
|
+
def __init__(self, p=1., p_arg=None, verbose=True,save_report=True,report_name=None):
|
1276
|
+
super().__init__(p=p, p_arg=p_arg, verbose=verbose,save_report=save_report,report_name=None)
|
1277
1277
|
|
1278
1278
|
|
1279
1279
|
def setup_nodes(self, source=None, target=None):
|
bmtool/util/util.py
CHANGED
@@ -736,8 +736,7 @@ def connection_divergence(config=None,nodes=None,edges=None,sources=[],targets=[
|
|
736
736
|
|
737
737
|
return relation_matrix(config,nodes,edges,sources,targets,sids,tids,prepend_pop,relation_func=total_connection_relationship)
|
738
738
|
|
739
|
-
def gap_junction_connections(config=None,nodes=None,edges=None,sources=[],targets=[],sids=[],tids=[],prepend_pop=True,
|
740
|
-
import pandas as pd
|
739
|
+
def gap_junction_connections(config=None,nodes=None,edges=None,sources=[],targets=[],sids=[],tids=[],prepend_pop=True,method='convergence'):
|
741
740
|
|
742
741
|
|
743
742
|
def total_connection_relationship(**kwargs): #reduced version of original function; only gets mean+std
|
@@ -751,7 +750,7 @@ def gap_junction_connections(config=None,nodes=None,edges=None,sources=[],target
|
|
751
750
|
#print(cons)
|
752
751
|
|
753
752
|
try:
|
754
|
-
cons = cons[cons['is_gap_junction']
|
753
|
+
cons = cons[cons['is_gap_junction'] == True]
|
755
754
|
except:
|
756
755
|
raise Exception("no gap junctions found to drop from connections")
|
757
756
|
mean = cons['target_node_id'].value_counts().mean()
|
@@ -770,7 +769,7 @@ def gap_junction_connections(config=None,nodes=None,edges=None,sources=[],target
|
|
770
769
|
cons = edges[(edges[source_id_type] == source_id) & (edges[target_id_type]==target_id)]
|
771
770
|
#add functionality that shows only the one's with gap_junctions
|
772
771
|
try:
|
773
|
-
cons = cons[cons['is_gap_junction']
|
772
|
+
cons = cons[cons['is_gap_junction'] == True]
|
774
773
|
except:
|
775
774
|
raise Exception("no gap junctions found to drop from connections")
|
776
775
|
|
@@ -780,20 +779,15 @@ def gap_junction_connections(config=None,nodes=None,edges=None,sources=[],target
|
|
780
779
|
num_targets = t_list[target_id_type].value_counts().sort_index().loc[target_id]
|
781
780
|
|
782
781
|
|
783
|
-
total = round(total_cons / (num_sources*num_targets) * 100,2)
|
782
|
+
total = round(total_cons / (num_sources*num_targets) * 100,2) * 2 #not sure why but the percent is off by roughly 2 times ill make khuram fix it
|
784
783
|
return total
|
785
784
|
|
786
|
-
if
|
785
|
+
if method == 'convergence':
|
787
786
|
return relation_matrix(config,nodes,edges,sources,targets,sids,tids,prepend_pop,relation_func=total_connection_relationship)
|
788
|
-
elif
|
787
|
+
elif method == 'percent':
|
789
788
|
return relation_matrix(config,nodes,edges,sources,targets,sids,tids,prepend_pop,relation_func=precent_func)
|
790
789
|
|
791
790
|
|
792
|
-
def gap_junction_percent_connections(config=None,nodes=None,edges=None,sources=[],targets=[],sids=[],tids=[],prepend_pop=True,method=None):
|
793
|
-
import pandas as pd
|
794
|
-
|
795
|
-
|
796
|
-
|
797
791
|
def connection_probabilities(config=None,nodes=None,edges=None,sources=[],
|
798
792
|
targets=[],sids=[],tids=[],prepend_pop=True,dist_X=True,dist_Y=True,dist_Z=True,num_bins=10,include_gap=True):
|
799
793
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: bmtool
|
3
|
-
Version: 0.5.9.
|
3
|
+
Version: 0.5.9.8
|
4
4
|
Summary: BMTool
|
5
5
|
Home-page: https://github.com/cyneuro/bmtool
|
6
6
|
Download-URL:
|
@@ -38,12 +38,12 @@ A collection of modules to make developing [Neuron](https://www.neuron.yale.edu/
|
|
38
38
|
[](https://github.com/cyneuro/bmtool/blob/master/LICENSE)
|
39
39
|
|
40
40
|
## Table of Contents
|
41
|
-
- [Getting Started](#
|
42
|
-
- [CLI](#
|
43
|
-
- [Single Cell](#
|
41
|
+
- [Getting Started](#getting-started)
|
42
|
+
- [CLI](#cli)
|
43
|
+
- [Single Cell](#single-cell-module)
|
44
44
|
- [Synapses](#synapses-module)
|
45
|
-
- [Connectors](#
|
46
|
-
- [Bmplot](#bmplot-
|
45
|
+
- [Connectors](#connectors-module)
|
46
|
+
- [Bmplot](#bmplot-module)
|
47
47
|
- [Graphs](#graphs-module)
|
48
48
|
|
49
49
|
## Getting Started
|
@@ -397,148 +397,53 @@ connector.setup_nodes(target=net.nodes(pop_name = 'PopB'))
|
|
397
397
|
net.add_edges(**connector.edge_params())
|
398
398
|
```
|
399
399
|
|
400
|
-
## Bmplot Module
|
401
|
-
|
402
|
-
- [
|
403
|
-
- [
|
404
|
-
- [
|
405
|
-
- [
|
406
|
-
- [
|
407
|
-
- [
|
408
|
-
- [
|
409
|
-
- [
|
410
|
-
- [
|
411
|
-
|
412
|
-
### Total connection plot
|
413
|
-
#### Generates a table of total number of connections each neuron population recieves
|
414
|
-
|
415
|
-
|
416
|
-
```python
|
417
|
-
from bmtool import bmplot
|
418
|
-
bmplot.total_connection_matrix(config='config.json',sources='LA',targets='LA',tids='pop_name',sids='pop_name',no_prepend_pop=True,include_gap=False)
|
419
|
-
```
|
400
|
+
## Bmplot Module
|
401
|
+
### for a demo please see the notebook [here](examples/bmplot/bmplot.ipynb)
|
402
|
+
- [total_connection_matrix](#total_connection_matrix)
|
403
|
+
- [percent_connection_matrix](#percent_connection_matrix)
|
404
|
+
- [convergence_connection_matrix](#convergence_connection_matrix)
|
405
|
+
- [divergence_connection_matrix](#divergence_connection_matrix)
|
406
|
+
- [gap_junction_matrix](#gap_junction_matrix)
|
407
|
+
- [connection_distance](#connection_distance)
|
408
|
+
- [connection_histogram](#connection_histogram)
|
409
|
+
- [plot_3d_positions](#plot_3d_positions)
|
410
|
+
- [plot_3d_cell_rotation](#plot_3d_cell_rotation)
|
420
411
|
|
412
|
+
### total_connection_matrix
|
413
|
+
#### Generates a table of total number of connections each neuron population recieves
|
421
414
|
|
422
415
|
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
### Percent connection plot
|
416
|
+
### percent_connection_matrix
|
428
417
|
#### Generates a table of the percent connectivity of neuron populations.Method can change if you want the table to be total percent connectivity, only unidirectional connectivity or only bi directional connectvity
|
429
418
|
|
430
419
|
|
431
|
-
|
432
|
-
bmplot.percent_connection_matrix(config='config.json',sources='LA',targets='LA',tids='pop_name',sids='pop_name',no_prepend_pop=True,method='total',include_gap=False)
|
433
|
-
```
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-

|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
### Convergence plot
|
420
|
+
### convergence_connection_matrix
|
442
421
|
#### Generates a table of the mean convergence of neuron populations. Method can be changed to show max, min, mean, or std for convergence a cell recieves
|
443
422
|
|
444
|
-
|
445
|
-
```python
|
446
|
-
bmplot.convergence_connection_matrix(config='config.json',sources='LA',targets='LA',tids='pop_name',sids='pop_name',no_prepend_pop=True,include_gap=False,method='mean+std')
|
447
|
-
```
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-

|
452
423
|
|
453
|
-
|
454
|
-
|
455
|
-
### Divergence plot
|
424
|
+
### divergence_connection_matrix
|
456
425
|
#### Generates a table of the mean divergence of neuron populations. Method can be changed to show max, min, mean or std divergence a cell recieves.
|
457
426
|
|
458
|
-
|
459
|
-
```python
|
460
|
-
bmplot.divergence_connection_matrix(config='config.json',sources='LA',targets='LA',tids='pop_name',sids='pop_name',no_prepend_pop=True,include_gap=False,method='mean+std')
|
461
|
-
```
|
462
|
-
|
463
|
-
|
464
427
|
|
465
|
-
|
466
|
-
|
467
|
-
### Gap Junction plot
|
468
|
-
#### While gap junctions can be include in the above plots, you can use this function to only view gap junctions.Type can be either 'convergence' or 'percent' connections to generate different plots
|
469
|
-
|
470
|
-
|
471
|
-
```python
|
472
|
-
bmplot.gap_junction_matrix(config='config.json',sources='LA',targets='LA',sids='pop_name',tids='pop_name',no_prepend_pop=True,type='percent')
|
473
|
-
```
|
428
|
+
### gap_junction_matrix
|
429
|
+
#### While gap junctions can be include in the above plots, you can use this function to only view gap junctions. Method can be either 'convergence' or 'percent' connections to generate different plots
|
474
430
|
|
475
431
|
|
476
|
-
|
477
|
-
|
478
|
-
|
432
|
+
### connection_distance
|
433
|
+
#### Generates a 3d plot with the source and target cells location along with a histogram showing connection distance
|
479
434
|
|
480
|
-
###
|
435
|
+
### connection_histogram
|
481
436
|
#### Generates a histogram of the distribution of connections a population of cells give to individual cells of another population
|
482
437
|
|
483
438
|
|
484
|
-
|
485
|
-
bmplot.connection_histogram(config='config.json',sources='LA',targets='LA',tids='pop_name',sids='pop_name',source_cell='PV',target_cell='PV',include_gap=False)
|
486
|
-
```
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-

|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
### probability of connection plot
|
495
|
-
#### this function needs some work
|
496
|
-
|
497
|
-
|
498
|
-
```python
|
499
|
-
bmplot.probability_connection_matrix(config='config.json',sources='LA',targets='LA',tids='pop_name',sids='pop_name',no_prepend_pop=True,line_plot=True)
|
500
|
-
```
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-

|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-

|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
### 3D position plot
|
439
|
+
### plot_3d_positions
|
515
440
|
#### Generates a plot of cells positions in 3D space
|
516
441
|
|
517
442
|
|
518
|
-
|
519
|
-
bmplot.plot_3d_positions(config='config.json',populations_list='LA',group_by='pop_name',save_file=False)
|
520
|
-
```
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-

|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
### cell rotations
|
443
|
+
### plot_3d_cell_rotation
|
529
444
|
#### Generates a plot of cells location in 3D plot and also the cells rotation
|
530
445
|
|
531
446
|
|
532
|
-
```python
|
533
|
-
bmplot.cell_rotation_3d(config='config2.json',populations_list='all',group_by='pop_name',save_file=False,quiver_length=20,arrow_length_ratio=0.25,max_cells=100)
|
534
|
-
```
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-

|
539
|
-
|
540
|
-
|
541
|
-
|
542
447
|
### Plot Connection Diagram
|
543
448
|
|
544
449
|
|
@@ -553,252 +458,6 @@ bmplot.plot_network_graph(config='config.json',sources='LA',targets='LA',tids='p
|
|
553
458
|
|
554
459
|
|
555
460
|
|
556
|
-
|
557
|
-
|
558
|
-
```python
|
559
|
-
from bmtool import bmplot
|
560
|
-
bmplot.plot_basic_cell_info(config_file='config.json')
|
561
|
-
```
|
562
|
-
|
563
|
-
Network and node info:
|
564
|
-
LA:
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
<table border="1" class="dataframe">
|
569
|
-
<thead>
|
570
|
-
<tr style="text-align: right;">
|
571
|
-
<th></th>
|
572
|
-
<th>node_type</th>
|
573
|
-
<th>pop_name</th>
|
574
|
-
<th>model_type</th>
|
575
|
-
<th>model_template</th>
|
576
|
-
<th>morphology</th>
|
577
|
-
<th>count</th>
|
578
|
-
</tr>
|
579
|
-
</thead>
|
580
|
-
<tbody>
|
581
|
-
<tr>
|
582
|
-
<th>0</th>
|
583
|
-
<td>100</td>
|
584
|
-
<td>PNa</td>
|
585
|
-
<td>biophysical</td>
|
586
|
-
<td>hoc:Cell_Af</td>
|
587
|
-
<td>blank.swc</td>
|
588
|
-
<td>800</td>
|
589
|
-
</tr>
|
590
|
-
<tr>
|
591
|
-
<th>1</th>
|
592
|
-
<td>101</td>
|
593
|
-
<td>PNc</td>
|
594
|
-
<td>biophysical</td>
|
595
|
-
<td>hoc:Cell_Cf</td>
|
596
|
-
<td>blank.swc</td>
|
597
|
-
<td>800</td>
|
598
|
-
</tr>
|
599
|
-
<tr>
|
600
|
-
<th>2</th>
|
601
|
-
<td>102</td>
|
602
|
-
<td>PV</td>
|
603
|
-
<td>biophysical</td>
|
604
|
-
<td>hoc:InterneuronCellf</td>
|
605
|
-
<td>blank.swc</td>
|
606
|
-
<td>240</td>
|
607
|
-
</tr>
|
608
|
-
<tr>
|
609
|
-
<th>3</th>
|
610
|
-
<td>103</td>
|
611
|
-
<td>SOM</td>
|
612
|
-
<td>biophysical</td>
|
613
|
-
<td>hoc:LTS_Cell</td>
|
614
|
-
<td>blank.swc</td>
|
615
|
-
<td>160</td>
|
616
|
-
</tr>
|
617
|
-
</tbody>
|
618
|
-
</table>
|
619
|
-
|
620
|
-
|
621
|
-
thalamus_pyr:
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
<table border="1" class="dataframe">
|
626
|
-
<thead>
|
627
|
-
<tr style="text-align: right;">
|
628
|
-
<th></th>
|
629
|
-
<th>node_type</th>
|
630
|
-
<th>pop_name</th>
|
631
|
-
<th>model_type</th>
|
632
|
-
<th>count</th>
|
633
|
-
</tr>
|
634
|
-
</thead>
|
635
|
-
<tbody>
|
636
|
-
<tr>
|
637
|
-
<th>0</th>
|
638
|
-
<td>100</td>
|
639
|
-
<td>pyr_inp</td>
|
640
|
-
<td>virtual</td>
|
641
|
-
<td>1600</td>
|
642
|
-
</tr>
|
643
|
-
</tbody>
|
644
|
-
</table>
|
645
|
-
|
646
|
-
|
647
|
-
thalamus_pv:
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
<table border="1" class="dataframe">
|
652
|
-
<thead>
|
653
|
-
<tr style="text-align: right;">
|
654
|
-
<th></th>
|
655
|
-
<th>node_type</th>
|
656
|
-
<th>pop_name</th>
|
657
|
-
<th>model_type</th>
|
658
|
-
<th>count</th>
|
659
|
-
</tr>
|
660
|
-
</thead>
|
661
|
-
<tbody>
|
662
|
-
<tr>
|
663
|
-
<th>0</th>
|
664
|
-
<td>100</td>
|
665
|
-
<td>pv_inp</td>
|
666
|
-
<td>virtual</td>
|
667
|
-
<td>240</td>
|
668
|
-
</tr>
|
669
|
-
</tbody>
|
670
|
-
</table>
|
671
|
-
|
672
|
-
|
673
|
-
thalamus_som:
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
<table border="1" class="dataframe">
|
678
|
-
<thead>
|
679
|
-
<tr style="text-align: right;">
|
680
|
-
<th></th>
|
681
|
-
<th>node_type</th>
|
682
|
-
<th>pop_name</th>
|
683
|
-
<th>model_type</th>
|
684
|
-
<th>count</th>
|
685
|
-
</tr>
|
686
|
-
</thead>
|
687
|
-
<tbody>
|
688
|
-
<tr>
|
689
|
-
<th>0</th>
|
690
|
-
<td>100</td>
|
691
|
-
<td>som_inp</td>
|
692
|
-
<td>virtual</td>
|
693
|
-
<td>160</td>
|
694
|
-
</tr>
|
695
|
-
</tbody>
|
696
|
-
</table>
|
697
|
-
|
698
|
-
|
699
|
-
tone:
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
<table border="1" class="dataframe">
|
704
|
-
<thead>
|
705
|
-
<tr style="text-align: right;">
|
706
|
-
<th></th>
|
707
|
-
<th>node_type</th>
|
708
|
-
<th>pop_name</th>
|
709
|
-
<th>model_type</th>
|
710
|
-
<th>count</th>
|
711
|
-
</tr>
|
712
|
-
</thead>
|
713
|
-
<tbody>
|
714
|
-
<tr>
|
715
|
-
<th>0</th>
|
716
|
-
<td>100</td>
|
717
|
-
<td>tone</td>
|
718
|
-
<td>virtual</td>
|
719
|
-
<td>1840</td>
|
720
|
-
</tr>
|
721
|
-
</tbody>
|
722
|
-
</table>
|
723
|
-
|
724
|
-
|
725
|
-
shock:
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
<table border="1" class="dataframe">
|
730
|
-
<thead>
|
731
|
-
<tr style="text-align: right;">
|
732
|
-
<th></th>
|
733
|
-
<th>node_type</th>
|
734
|
-
<th>pop_name</th>
|
735
|
-
<th>model_type</th>
|
736
|
-
<th>count</th>
|
737
|
-
</tr>
|
738
|
-
</thead>
|
739
|
-
<tbody>
|
740
|
-
<tr>
|
741
|
-
<th>0</th>
|
742
|
-
<td>100</td>
|
743
|
-
<td>shock</td>
|
744
|
-
<td>virtual</td>
|
745
|
-
<td>400</td>
|
746
|
-
</tr>
|
747
|
-
</tbody>
|
748
|
-
</table>
|
749
|
-
|
750
|
-
|
751
|
-
shell:
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
<table border="1" class="dataframe">
|
756
|
-
<thead>
|
757
|
-
<tr style="text-align: right;">
|
758
|
-
<th></th>
|
759
|
-
<th>node_type</th>
|
760
|
-
<th>pop_name</th>
|
761
|
-
<th>model_type</th>
|
762
|
-
<th>count</th>
|
763
|
-
</tr>
|
764
|
-
</thead>
|
765
|
-
<tbody>
|
766
|
-
<tr>
|
767
|
-
<th>0</th>
|
768
|
-
<td>100</td>
|
769
|
-
<td>PNa</td>
|
770
|
-
<td>virtual</td>
|
771
|
-
<td>3975</td>
|
772
|
-
</tr>
|
773
|
-
<tr>
|
774
|
-
<th>1</th>
|
775
|
-
<td>101</td>
|
776
|
-
<td>PNc</td>
|
777
|
-
<td>virtual</td>
|
778
|
-
<td>3975</td>
|
779
|
-
</tr>
|
780
|
-
<tr>
|
781
|
-
<th>2</th>
|
782
|
-
<td>102</td>
|
783
|
-
<td>PV</td>
|
784
|
-
<td>virtual</td>
|
785
|
-
<td>1680</td>
|
786
|
-
</tr>
|
787
|
-
<tr>
|
788
|
-
<th>3</th>
|
789
|
-
<td>103</td>
|
790
|
-
<td>SOM</td>
|
791
|
-
<td>virtual</td>
|
792
|
-
<td>1120</td>
|
793
|
-
</tr>
|
794
|
-
</tbody>
|
795
|
-
</table>
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
'LA'
|
802
461
|
## Graphs Module
|
803
462
|
- [Generate graph](#generate-graph)
|
804
463
|
- [Plot Graph](#plot-graph)
|
@@ -806,7 +465,6 @@ bmplot.plot_basic_cell_info(config_file='config.json')
|
|
806
465
|
|
807
466
|
### Generate Graph
|
808
467
|
|
809
|
-
|
810
468
|
```python
|
811
469
|
from bmtool import graphs
|
812
470
|
import networkx as nx
|
@@ -1,8 +1,8 @@
|
|
1
1
|
bmtool/SLURM.py,sha256=AX5MKV7dD-XwS8SROnW1IyesZ3jDwMf0txO6mHxTbuw,13694
|
2
2
|
bmtool/__init__.py,sha256=ZStTNkAJHJxG7Pwiy5UgCzC4KlhMS5pUNPtUJZVwL_Y,136
|
3
3
|
bmtool/__main__.py,sha256=TmFkmDxjZ6250nYD4cgGhn-tbJeEm0u-EMz2ajAN9vE,650
|
4
|
-
bmtool/bmplot.py,sha256=
|
5
|
-
bmtool/connectors.py,sha256=
|
4
|
+
bmtool/bmplot.py,sha256=VoX-oXqu6dRb3JEUgGxWiX23JxUy9PeemE7z4f6hVbY,53177
|
5
|
+
bmtool/connectors.py,sha256=QEaBGc6mEoQc-H3ltjvjn5-XWyYgnrhcfNRblVOUE2A,72228
|
6
6
|
bmtool/graphs.py,sha256=K8BiughRUeXFVvAgo8UzrwpSClIVg7UfmIcvtEsEsk0,6020
|
7
7
|
bmtool/manage.py,sha256=_lCU0qBQZ4jSxjzAJUd09JEetb--cud7KZgxQFbLGSY,657
|
8
8
|
bmtool/plot_commands.py,sha256=Tqujyf0c0u8olhiHOMwgUSJXIIE1hgjv6otb25G9cA0,12298
|
@@ -13,12 +13,12 @@ bmtool/debug/commands.py,sha256=AwtcR7BUUheM0NxvU1Nu234zCdpobhJv5noX8x5K2vY,583
|
|
13
13
|
bmtool/debug/debug.py,sha256=xqnkzLiH3s-tS26Y5lZZL62qR2evJdi46Gud-HzxEN4,207
|
14
14
|
bmtool/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
15
15
|
bmtool/util/commands.py,sha256=zJF-fiLk0b8LyzHDfvewUyS7iumOxVnj33IkJDzux4M,64396
|
16
|
-
bmtool/util/util.py,sha256=
|
16
|
+
bmtool/util/util.py,sha256=00vOAwTVIifCqouBoFoT0lBashl4fCalrk8fhg_Uq4c,56654
|
17
17
|
bmtool/util/neuron/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
18
18
|
bmtool/util/neuron/celltuner.py,sha256=xSRpRN6DhPFz4q5buq_W8UmsD7BbUrkzYBEbKVloYss,87194
|
19
|
-
bmtool-0.5.9.
|
20
|
-
bmtool-0.5.9.
|
21
|
-
bmtool-0.5.9.
|
22
|
-
bmtool-0.5.9.
|
23
|
-
bmtool-0.5.9.
|
24
|
-
bmtool-0.5.9.
|
19
|
+
bmtool-0.5.9.8.dist-info/LICENSE,sha256=qrXg2jj6kz5d0EnN11hllcQt2fcWVNumx0xNbV05nyM,1068
|
20
|
+
bmtool-0.5.9.8.dist-info/METADATA,sha256=rrR39yoM5X0WSk15L0KZV3KoRFqwt5KAmwMXW-apI_c,18823
|
21
|
+
bmtool-0.5.9.8.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
|
22
|
+
bmtool-0.5.9.8.dist-info/entry_points.txt,sha256=0-BHZ6nUnh0twWw9SXNTiRmKjDnb1VO2DfG_-oprhAc,45
|
23
|
+
bmtool-0.5.9.8.dist-info/top_level.txt,sha256=gpd2Sj-L9tWbuJEd5E8C8S8XkNm5yUE76klUYcM-eWM,7
|
24
|
+
bmtool-0.5.9.8.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|