Warning

This version of the documentation is NOT an official release. You are looking at ‘latest’, which is in active and ongoing development. You can change versions on the bottom left of the screen.

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