Nate Sutton, Ph.D.

Simulating Visual Filter Responses Plotted with Self-Organizing Maps

       

Visual Receptive Fields that have firing rate effected by direction of motion
of stimulus and time

Below the plots is a math worksheet explaining concepts that go into the plot. The end result plot is shown below with x and y dimentions representing angle of stimulus. Z (depth) dimension is the firing rate. Time passing is processed as a dimension represented by tau in the equations (Dayan and Abbott, pg 71).
Open source code availible
Plotting of the simulation is generated with a new original displacement mapping program for general conversion of 2d to 3d graphics. Self organizing maps (SOM) were implemented to smooth motion of verticies in the plotting, neighbor verticies are pulled with each movement of verticies. The use of SOM was inspired by a Comp Neuro Coursera video (timepoint 9:30). Custom openGL C++ 3d graphics code has been created. This is a Sage workbook. My site.
2D: 3D:
Spatial Receptive Fields of LGN Visual Receptors

The difference of gaussians math method was used for the simulation (Dayan and Abbott, pg 77).
More details on the LGN simulation past the gabor section below.
2D: 3D:
Space-time receptive feild of a cat LGN X cell (Dayan and Abbott, pg 78)

2D: 3D:
'''
Temporal structure of a visual receptive feild.
This can simulate changes due to time of the fields
(Dayan and Abbott, pg 66)
'''
ms = .001
a = 1/15
tau = var('tau')
time = a*exp(-a*tau)*((((a*tau)^5)/factorial(5))-(((a*tau)^7)/factorial(7)))
plot(time, (tau,0,200)) 
       
'''
Transformation of space (in angle degrees of visual stimulus input) to time values
(Dayan and Abbott, pg 72)
'''
psi = pi/9
c = .02
x = var('x')
tau = var('tau')
xPrime(x,tau) = (x*cos(psi))-((c*tau)*sin(psi))
plot3d(xPrime, (x, -3, 3), (tau, 0, 200)) 
       
'''
Time variable translated due to angle in degrees (space) of visual stimulus
(Dayan and Abbott, pg 72)
'''
psi = pi/9
c = .02
x = var('x')
tau = var('tau')
tauPrime(x,tau) = (tau*cos(psi))+((x/c)*sin(psi))
plot3d(tauPrime, (x, -4, 4), (tau, 0, 200)) 
       
'''
Gabor function without time which can plot firing response in relation to space, angles in degrees of x and y comprise space
(Dayan and Abbott, pg 63)
'''
sigX = 1
sigY = 2
k = 1/.56
psi = 0
gabor(x,y) = (1/(2*pi*sigX*sigY))*exp(-(x^2/(2*sigX^2))-(y^2/(2*sigY^2)))*cos(k*x-psi)
plot3d(gabor*(.002), (x, -4, 4), (y, -5, 5)) 
       
'''
Gabor with time included as a non-seperable space-time receptive field
Different time points shown below correspond to the animated plot shown in
the beginning of this worksheet.
'''
# time 0
tau = 0
gaborWithTime = gabor(xPrime(x,tau),y)*timeWithPrime(x,tau)
plot3d(gaborWithTime, (x, -4, 4), (y, -5, 5)) 
       
# time 25
tau = 25
gaborWithTime = gabor(xPrime(x,tau),y)*timeWithPrime(x,tau)
plot3d(gaborWithTime, (x, -4, 4), (y, -5, 5)) 
       
# time 50
tau = 50
gaborWithTime = gabor(xPrime(x,tau),y)*timeWithPrime(x,tau)
plot3d(gaborWithTime, (x, -4, 4), (y, -5, 5)) 
       
# time 100
tau = 100
gaborWithTime = gabor(xPrime(x,tau),y)*timeWithPrime(x,tau)
plot3d(gaborWithTime, (x, -4, 4), (y, -5, 5)) 
       
# time 150
tau = 150
gaborWithTime = gabor(xPrime(x,tau),y)*timeWithPrime(x,tau)
plot3d(gaborWithTime, (x, -4, 4), (y, -5, 5)) 
       
# time 200
tau = 200
gaborWithTime = gabor(xPrime(x,tau),y)*timeWithPrime(x,tau)
plot3d(gaborWithTime, (x, -4, 4), (y, -5, 5)) 
       
       
Reference:
    
Dayan, Peter, and Laurence F. Abbott. Theoretical neuroscience. Vol. 806. Cambridge, MA: MIT Press, 2001.