Figure . Pseudocode for initializing and chaining together workflow protocols. Each workflow protocol is described by a unique Python object, which has a number of attributes flagged as inputs, and a number flagged as outputs. Inputs and outputs of protocols are connected together using 'ProtocolPath' objects, which are essentially pointers to the output of another protocol in the workflow as identified by its unique id and the name of its output attribute (Figure ). These pointer objects will be automatically replaced with the actual output value of the reference protocol by the workflow manager once the previous protocol has been executed.