AllenInstitute / bmtk

Brain Modeling Toolkit
https://alleninstitute.github.io/bmtk/
BSD 3-Clause "New" or "Revised" License
266 stars 86 forks source link

Direction Rule in v1_biophysical build_network #296

Closed nicolomeneghetti closed 1 year ago

nicolomeneghetti commented 1 year ago

Dear all,

hope this is the right place to post this issue. In case not, I apologize in advance.

In the build_network code of the Mouse V1 Full Column Models (available here: https://www.dropbox.com/sh/w5u31m3hq6u2x5m/AAAfeKZJ9ArMjPxBSK4FZXLca/simulations/v1_biophysical?dl=0&preview=build_network.py&subfolder_nav_tracking=1) is possible to see that intracortical connections are established according to different connection rules. Namely: 'DirectionRule_EE' and 'DirectionRule_others'.

I was, however, not able to the source code of these two different direction rules. Where can I find them? Which is the difference between them?

Thanks in advance for any help,

Best regards,

Nicolò

kaeldai commented 1 year ago

Hi @nicolomeneghetti

The DirectionRule_others and DirectionRule_EE rules are found in the run_bionet.py script. The functions are called right before the simulation starts. They don't change the connections between cells, but adjust the synaptic weight ("syn_weight" property) based how similar the "tuning_angle" property is between any two cells.

The DirectionRule_EE rule for any excitatory-to-exciatory connection, while the DirectionRule_other is for all other type of connection; exc->inh, inh->exc, inh->inh. Also DirectionRule_EE is a bit more complicated and will take into account the distance between pre/post-synaptic cells when updating the synaptic weight. In the Billeh 2020 Neuron paper the supplementary methods section goes into more detail, but if you want I can get you into contact with our scientists who work on the V1 model?

nicolomeneghetti commented 1 year ago

Dear @kaeldai ,

Thank you for your answer. It was definitely easier than I thought to find this information. My mistake.

Before closing this issue, I have one last inquiry. The connectivity of the network from LGN to V1 nodes is defined by the 'wmax' weight function. If I understand correctly, this means that the synaptic weight of every edge is set at a scalar value defined by the 'syn_weight' property. Am I correct? I am asking because if this is the case, I am confused about the reason why the 'weight_sigma' property is also defined in the edge_params.

Thank you in advance.

Best regards,

Nicolò

kaeldai commented 1 year ago

Hi @nicolomeneghetti

You are correct that wmax function just uses the "syn_weight" value for setting the synaptic weight. So in the current version of lgn_v1_edge_types.csv the "weight_function" and "weight_sigma" are not used. It's been a while, but I sorta remember when the V1 model was being built there were some versions of the LGN connections that used customized directionrules like the recurrent V1 connections - so I think those columns are a left over artifact.

nicolomeneghetti commented 1 year ago

Dear @kaeldai ,

Thank you again for the exhaustive explanation. I can now close the issue.

Thanks once again.

Best regards,

Nicolò