Connect two populations with convergent projection and rectangular mask, visualize connection from target perspectiveΒΆ

Create two populations of iaf_psc_alpha neurons on a 30x30 grid BCCN Tutorial @ CNS*09 Hans Ekkehard Plesser, UMB

import nest
import matplotlib.pyplot as plt
import numpy as np

nest.ResetKernel()
nest.set_verbosity('M_WARNING')

pos = nest.spatial.grid(shape=[30, 30], extent=[3., 3.], edge_wrap=True)

create and connect two populations

a = nest.Create('iaf_psc_alpha', positions=pos)
b = nest.Create('iaf_psc_alpha', positions=pos)

nest.Connect(a, b,
             conn_spec={'rule': 'pairwise_bernoulli',
                        'p': 0.5,
                        'use_on_source': True,
                        'mask': {'rectangular': {'lower_left': [-0.2, -0.5],
                                                 'upper_right': [0.2, 0.5]}}},
             syn_spec={'weight': nest.random.uniform(0.5, 2.)})
plt.clf()

plot sources of neurons in different grid locations

for tgt_index in [30 * 15 + 15, 0]:
    # obtain node id for center
    tgt = a[tgt_index:tgt_index + 1]

    # obtain list of outgoing connections for ctr
    spos = nest.GetTargetPositions(tgt, b)[0]

    spos_x = np.array([x for x, y in spos])
    spos_y = np.array([y for x, y in spos])

    print(spos_x)
    print(spos_y)

    # scatter-plot
    plt.scatter(spos_x, spos_y, 20, zorder=10)

    # mark sender position with transparent red circle
    ctrpos = np.array(nest.GetPosition(tgt))
    plt.gca().add_patch(plt.Circle(ctrpos, radius=0.1, zorder=99,
                                   fc='r', alpha=0.4, ec='none'))

    # mark mask position with open red rectangle
    plt.gca().add_patch(
        plt.Rectangle(ctrpos - (0.2, 0.5), 0.4, 1.0, zorder=1,
                      fc='none', ec='r', lw=3))

# mark layer edge
plt.gca().add_patch(plt.Rectangle((-1.5, -1.5), 3.0, 3.0, zorder=1,
                                  fc='none', ec='k', lw=3))

# beautify
plt.axes().set_xticks(np.arange(-1.5, 1.55, 0.5))
plt.axes().set_yticks(np.arange(-1.5, 1.55, 0.5))
plt.grid(True)
plt.axis([-2.0, 2.0, -2.0, 2.0])
plt.axes().set_aspect('equal', 'box')
plt.title('Connection sources')
plt.show()

Total running time of the script: ( 0 minutes 0.000 seconds)

Gallery generated by Sphinx-Gallery