How does 'network.link' work?

So I really want to start implementing column objects using the Network API, and I’m trying to fully understand the function:
_createL2456Column(network, networkConfig, suffix="")

from the script:

Here is a signal flow diagram I extracted from the function.

  • Each arrow represents a ‘network.link(…)’ call, showing the ‘srcOutput’ and ‘destInput’.
  • The blue links are depolarizing (like TM), the green are activating (like SP), and the red are unclear to me.

I want to be able to visualize how all segments are formed between layers, which I can only do now within a typical SP+TM NuPIC model. Here is what I’m not clear on:

  • Firstly where can I find the source code for ‘network.link’ and ‘py.ColumnPoolerRegion’? I want the full details of:
    ----> how all inter-layer segments are formed
    ----> how the temporal pooling used in Layers 2 & 5 works

  • Why are 2 different links needed to connect Layers 4 --> 2 and 6 --> 5? What exactly does ‘feedforwardGrowthCandidates’ do?

  • Since Layers 4 & 6 are modulated by both ‘basal’ and ‘apical’ input, how do the winnerCells in these layers know where to form their new distal segments to (‘basal’ vs ‘apical’ sources)?

Thanks so much :smile:

2 Likes