Response of the DoG model to patch gratingΒΆ
In this example script figure 4 in Einevoll et al. (2005) is reproduced. In the code below the response of the difference of Gaussians (DoG) model to circular drifting-grating patches is calculated:

Spatial frequency tuning curve of patch-grating responses for four different patch diameters for the DoG model.
import quantities as pq
import numpy as np
import matplotlib.pyplot as plt
import pylgn
import pylgn.kernels as kernel
k_max_id = 40
patch_diameter = np.array([3, 1.5, 0.85, 0.3]) * pq.deg
response = np.zeros([k_max_id, len(patch_diameter)]) / pq.s
# create network
network = pylgn.Network()
# create integrator
integrator = network.create_integrator(nt=1, nr=7, dt=1*pq.ms, dr=0.1*pq.deg)
spatial_angular_freqs = integrator.spatial_angular_freqs[:k_max_id]
# create kernels
Wg_t = kernel.temporal.create_delta_ft()
Wg_r = kernel.spatial.create_dog_ft(A=1, a=0.3*pq.deg, B=0.9, b=0.6*pq.deg)
# create neuron
ganglion = network.create_ganglion_cell(kernel=(Wg_r, Wg_t))
for j, d in enumerate(patch_diameter):
for i, k_d in enumerate(spatial_angular_freqs):
# create stimulus
stimulus = pylgn.stimulus.create_patch_grating_ft(wavenumber=k_d, patch_diameter=d)
network.set_stimulus(stimulus)
# compute
network.compute_response(ganglion, recompute_ft=True)
response[i, j] = ganglion.center_response[0]
# visualize
for d, R in zip(patch_diameter, response.T):
plt.plot(spatial_angular_freqs, R, '-o', label="Diameter={}".format(d))
plt.xlabel("Wavenumber (1/deg)")
plt.ylabel("Response")
plt.legend()
plt.show()