ioam / topographica

A general-purpose neural simulator focusing on topographic maps.
topographica.org
BSD 3-Clause "New" or "Revised" License
53 stars 32 forks source link

the command for the connection fields of every V1 units #692

Closed dancehours closed 5 years ago

dancehours commented 5 years ago

Hi, I would like to ask what is the command for the receptive fields of v1 neurons. By simplification, this model uses the connection fields from LGN to V1 as the receptive fields of v1 units, right ? I found the command like c = Collector(), data=c(time=times), c.CFs.LGNOnAfferent=c.collect(gcal.projections.V1.LGNOnAfferent,grid=True)

does this command can give receptive fields of every single units? Because I plot the grid, it is 11*11,

I am not sure the connection fields are actually the ones of 11*11 neurons by simplification, rather than every unit's.

jbednar commented 5 years ago

The projection plotting is designed to be independent of the size of each sheet, which means that it will give an 11x11 grid of CFs by default, selecting every n-th unit in x and y. (If your sheet happened to be smaller than 11x11, which would presumably be very rare, it would even duplicate units to get it up to 11x11!) You can set the value 11 to the actual size of your target sheet (V1 in this case), but that might be a huge number of plots.

dancehours commented 5 years ago

I don't understand the 11*11 grid of CFs well. Does it mean, every unit whose coordinates locate in the same grid have the same connection field ?

jbednar commented 5 years ago

No. Let's say you have a 9x9 V1 and you ask for a 3x3 grid of CFs. You'll get CFs from units in V1 that are marked with parentheses:

(0,0) 0,1  0,2 (0,3) 0,4  0,5 (0,6) 0,7  0,8 (0,9)
 1,0  1,1  1,2  1,3  1,4  1,5  1,6  1,7  1,8  1,9
 2,0  2,1  2,2  2,3  2,4  2,5  2,6  2,7  2,8  2,9
(3,0) 3,1  3,2 (3,3) 3,4  3,5 (3,6) 3,7  3,8 (3,9)
 4,0  4,1  4,2  4,3  4,4  4,5  4,6  4,7  4,8  4,9
 5,0  5,1  5,2  5,3  5,4  5,5  5,6  5,7  5,8  5,9
(6,0) 6,1  6,2 (6,3) 6,4  6,5 (6,6) 6,7  6,8 (6,9)
 7,0  7,1  7,2  7,3  7,4  7,5  7,6  7,7  7,8  7,9
 8,0  8,1  8,2  8,3  8,4  8,5  8,6  8,7  8,8  8,9
(9,0) 9,1  9,2 (9,3) 9,4  9,5 (9,6) 9,7  9,8 (9,9)

I.e., it regularly samples the V1 array of neurons, selecting a 3x3 set of them to show CFs for.

dancehours commented 5 years ago

I see. As I understand, except for the grid plots, the units not included in the grids don't have commands to show their connection fields, right ?

jbednar commented 5 years ago

update_connectionfields will plot all connection fields for any specified unit.

dancehours commented 5 years ago

Could you show an example for using update_connectionfileds ? I am not sure how to give the projection name to this command.

jbednar commented 5 years ago

It returns the connection fields for that unit for all projections.

dancehours commented 5 years ago

For example, I run from topo.analysis.command import update_connectionfields update_connectionfields[0,0] show nothing to me.

jbednar commented 5 years ago

It won't actually open any plots, just define the data. I don't have the commands handy to see the syntax for then plotting what was defined, but there should be some in the examples.