joschabach/micropsi2 — pull request #27 by spalanzani (2014-06-10 18:50:40+00:00)
Title: Sheaves

This replaces the single "activation" field in slots, gates, and nodes with a dict called "sheaves" which will in turn contain the activation.

For node types that aren't interested in sheaves, nothing should change. (Everything happens in the "default" sheaf, which is always present and will be accessed by .activation)
Node types that want to use sheaves can now propagate multiple sets (=sheaves, "Fächer") of activation through node nets in parallel: Same net structure, but multiple activations per slot/gate/nodes.
A sheaf has to be opened by a node and kept open by continually propagating activation. If no activation is propagated, sheaves will automatically collapse, and only the "default" sheaf will remain.
Gates, by default, do not propagate sheaf existence. Gates that should be allowed to open/propagate sheaves have to be configured accordingly using gate defaults.

Sheaves are meant to be a "multiplexing" equivalent and allow schemas to instantiate and bind the same feature multiple times.

A "Pipe" node implementation that makes use of sheaves and is thus cat/exp-ready is part of this PR.