Function inputs in Nengo

I’m still a little uncertain as to what you are trying to accomplish… Perhaps a block diagram description of what connects to what would be better at explaining it.

As for your question, if you have a function call another function, you don’t necessarily need to do anything special to get them to work in Nengo, as long as you understand the Python contexts in which they are used. The least error prone way to get a function within a function to work in Nengo is to embed both functions into a class, like so:

class MyClass:
    def __init__(self):
        ...

    def tau(self, k):
        ...

    def model(self, x):
        # Has a function call that calls self.tau(k)
        ...

If you define such a class, you can then instantiate the class, and pass the relevant function to use in the Nengo network:

myclass = MyClass()

with nengo.Network() as model:
    my_node = nengo.Node(myclass.model)
    ...

In the code above, the my_node Nengo node is created to execute the myclass.model() function in every timestep of the Nengo simulation.

Can you clarify what you mean by this statement? Are you trying to modify the behaviour of the tau function based on the outputs of an Nengo ensemble? If you are, using the class approach I outlined above should allow you to do this. Simply use the tau function in another Nengo node, like so:

myclass = MyClass()

with nengo.Network() as model:
    my_node = nengo.Node(myclass.model)
    tau_node = nengo.Node(size_in=<dimension>, output=myclass.tau)
    ...
    nengo.Connection(..., tau_node)