When you connect the j^th source busport to the l^th sink busport, source port i_{j,k} is connected to sink port i_{l,k} for each k in {0, 1, … , m_j}. It's up to the user to ensure sink and source ports correspond in type and number.

What if you don't specify the bus_structure to define these indices? One will be provided for you. Here's the default:

In general, GRC should evolve to do more dynamic/inductive things. The nports property represents a first small step in that direction, but what good is it to create an arbitrary, variable-dependent number of ports if you still have to connect all the ports manually?

I expect there to follow more improvements to GRC yielding a visual language for “doing things n times” and generating corresponding python.

What Python(ic) features are worth encoding visually as stream-processing features?