diff --git a/demos/brunel_simulation/brunel_example.py b/demos/brunel_simulation/brunel_example.py index 4c59b60dbaa9fd1c84c694131ef9825f736d9a3c..57ed407519b478c9c18047a15409e955db39e294 100644 --- a/demos/brunel_simulation/brunel_example.py +++ b/demos/brunel_simulation/brunel_example.py @@ -11,11 +11,10 @@ is not structured spatially. from copy import deepcopy from math import sqrt import numpy as np -from mpl_toolkits.mplot3d import Axes3D -import matplotlib.pyplot as plt +# from mpl_toolkits.mplot3d import Axes3D +# import matplotlib.pyplot as plt import nest -import nest.raster_plot import nest.topology as tp @@ -23,6 +22,7 @@ class Brunel3D: def __init__(self): self.layer_dict = {} + nest.SetKernelStatus({"local_num_threads": 1}) nest.Install("streamingmodule") # nest.SetKernelStatus({'print_time': True}) @@ -196,70 +196,70 @@ class Brunel3D: def simulate(self): nest.Simulate(1000) - def plot_positions(self): - ex_pos = self.layers[0][1]['positions'] - in_pos = self.layers[1][1]['positions'] - fig = plt.figure() - ax = Axes3D(fig) - for c, m, positions in [('b', 'o', ex_pos), ('r', '^', in_pos)]: - ax.scatter([x for x, y, z in positions], - [y for x, y, z in positions], - [z for x, y, z in positions], - c=c, marker=m) - - def get_results(self): - mm = (self.layer_dict['Multimeter'][0] + 1,) - sd = (self.layer_dict['SpikeDetector'][0] + 1,) - mm_status = nest.GetStatus(mm)[0] - sd_status = nest.GetStatus(sd)[0] - - nest.raster_plot.from_device(sd, hist=True) - - senders = mm_status['events']['senders'] - times = mm_status['events']['times'] - v_m = mm_status['events']['V_m'] - v_th = mm_status['events']['V_th'] - step = int(max(senders)/100 + 1) # Only plot results from some GIDs - - mm_events = [] - for i in range(1, max(senders) + 1, step): - if i in senders: - indices = np.argwhere(senders == i) - mm_events.append({'GID': i, - 'times': [times[n] for n in indices], - 'V_m': [v_m[n] for n in indices], - 'V_th': [v_th[n] for n in indices]}) - - return {'multimeter': mm_events, - 'spike_detector': nest.GetStatus(sd)[0]} - - -if __name__ == '__main__': - nest.ResetKernel() - - print('Making specifications') - brunel = Brunel3D() - brunel.make_layer_specs() - brunel.make_connection_specs() - - print('Making layers') - brunel.make_layers() - nest.topology.DumpLayerNodes([l[0] for l in brunel.layer_dict.values()][:2], - 'brunel_nodes.txt') - - print('Making connections') - brunel.make_connections() - - brunel.simulate() - - print('Getting results') - brunel.plot_positions() - results = brunel.get_results() - - for value in ['V_m', 'V_th']: - plt.figure() - for n in results['multimeter'][::20]: - plt.plot(n['times'], n[value], label='{}'.format(n['GID'])) - plt.legend() - plt.title(value) - plt.show() + # def plot_positions(self): + # ex_pos = self.layers[0][1]['positions'] + # in_pos = self.layers[1][1]['positions'] + # fig = plt.figure() + # ax = Axes3D(fig) + # for c, m, positions in [('b', 'o', ex_pos), ('r', '^', in_pos)]: + # ax.scatter([x for x, y, z in positions], + # [y for x, y, z in positions], + # [z for x, y, z in positions], + # c=c, marker=m) + + # def get_results(self): + # mm = (self.layer_dict['Multimeter'][0] + 1,) + # sd = (self.layer_dict['SpikeDetector'][0] + 1,) + # mm_status = nest.GetStatus(mm)[0] + # sd_status = nest.GetStatus(sd)[0] + + # nest.raster_plot.from_device(sd, hist=True) + + # senders = mm_status['events']['senders'] + # times = mm_status['events']['times'] + # v_m = mm_status['events']['V_m'] + # v_th = mm_status['events']['V_th'] + # step = int(max(senders)/100 + 1) # Only plot results from some GIDs + + # mm_events = [] + # for i in range(1, max(senders) + 1, step): + # if i in senders: + # indices = np.argwhere(senders == i) + # mm_events.append({'GID': i, + # 'times': [times[n] for n in indices], + # 'V_m': [v_m[n] for n in indices], + # 'V_th': [v_th[n] for n in indices]}) + + # return {'multimeter': mm_events, + # 'spike_detector': nest.GetStatus(sd)[0]} + + +# if __name__ == '__main__': +# nest.ResetKernel() + +# print('Making specifications') +# brunel = Brunel3D() +# brunel.make_layer_specs() +# brunel.make_connection_specs() + +# print('Making layers') +# brunel.make_layers() +# nest.topology.DumpLayerNodes([l[0] for l in brunel.layer_dict.values()][:2], +# 'brunel_nodes.txt') + +# print('Making connections') +# brunel.make_connections() + +# brunel.simulate() + +# print('Getting results') +# brunel.plot_positions() +# results = brunel.get_results() + +# for value in ['V_m', 'V_th']: +# plt.figure() +# for n in results['multimeter'][::20]: +# plt.plot(n['times'], n[value], label='{}'.format(n['GID'])) +# plt.legend() +# plt.title(value) +# plt.show()