Loop

The Loop node allows collections of nodes to be run as a for or while loop. This node is essentially a sheet within a sheet, with Tunnel terminals that are used to control the passing of data between the two sheets.

To create a new tunnel, right click on the boarder of the node, and select New tunnel.

../_images/loop_new_tunnel.png

There are four types of Tunnel terminals. To change the type of the terminal, right click on the terminal and select which one you would like from the menu. The four types of Tunnel terminals on the left side of the node are:

  • Pass through - Provides the value passed from the parent sheet to the child sheet without modification.

  • Indexed - Tries to index the value passed from the parent sheet with the current loop count.

  • Indexed (array) - Same as the Indexed, but specific for numpy arrays.

  • Shift - Provides the value passed from the parent sheet on the first loop (\(i=0\)), then provides the value passed to the left side of the terminal on subsequent iterations

../_images/loop_tunnel_types.png

On the right side of the node, the terminals are similar:

  • Pass through - Provides the value passed from the child sheet to the parent sheet without modification.

  • Indexed - Appends values passed from the child sheet into a list, which is provided to the parent sheet.

  • Indexed (array) - Same as the Indexed, but converts the list of values to a numpy array (numpy.asarray())

  • Shift - The value provided on the right side is used on the left side when the loop iteration is greater than 0.

For loop

If one of the Tunnel terminals on the left side of the loop node is an Indexed or Indexed (array), then the loop is automatically executed as a for loop. If there are multiple Indexed or Indexed (array) terminals on the left side of the node, then the loop will continue until the end of the shortest value provided to one of the Indexed or Indexed (array) terminals is reached.

For example, if two ranges are provided to two Indexed terminals, one with a length of 10 and the other with a length of 25, the loop will only iterate 10 times (\(i=9\)).

../_images/for_loop.png

While Loop

The same loop structure will operate as a while loop if there are no Indexed or Indexed (array) terminals on the left side of the node. However, there must be a Stop node inside the loop node to tall the while loop when to stop. Be careful that you don’t end up with an endless loop!

../_images/while_loop.png

Note

You can have a for loop with a stop node inside. The loop will continue until either the Stop node is triggered or the end of the Indexed or Indexed (array) value is reached.

../_images/for_loop_stop.png