Source code for fastr.examples.macro_node2

import fastr


[docs]def create_macro_network(): # Create Network network = fastr.Network('add_ints_macro') # Create first source input_1 = network.create_source(fastr.typelist['Int'], id_='macro_input_1') input_2 = network.create_source(fastr.typelist['Int'], id_='macro_input_2') # Create calculation nodes addint1 = network.create_node(fastr.toollist['AddInt'], id_='addint1') # Link network addint1.inputs['left_hand'] = input_1.output addint1.inputs['right_hand'] = input_2.output addint1.inputs['right_hand'].input_group = 'other' # Create a sink to save the data sink = network.create_sink(fastr.typelist['Int'], id_='macro_sink') # Link the addint node to the sink sink.inputs['input'] = addint1.outputs['result'] return network
[docs]def create_network(): macro_network = create_macro_network() # Create Network network = fastr.Network('macro_node_2') # Extra Node add = network.create_node(fastr.toollist['AddInt'], id_='addint') # Create data source input_1 = network.create_source(fastr.typelist['Int'], id_='source_1') input_2 = network.create_source(fastr.typelist['Int'], id_='source_2') input_3 = network.create_source(fastr.typelist['Int'], id_='source_3') # Create MacroNode add_multiple_ints_node = network.create_macro(macro_network, id_='node_add_multiple_ints_1') # Sum some stuff sum = network.create_node(fastr.toollist['Sum'], id_='sum') # Create sink sink = network.create_sink(fastr.typelist['Int'], id_='sink') # Adjust constants(non required inputs) in macro network # add_multiple_ints_node.inputs['const_addint1_value2__add_multiple_ints_1'] = 1234, #input.output # Link the network add.inputs['left_hand'] = input_1.output add.inputs['right_hand'] = input_2.output add.inputs['right_hand'].input_group = 'right' add_multiple_ints_node.inputs['macro_input_1'] = add.outputs['result'] add_multiple_ints_node.inputs['macro_input_2'] = input_3.output link = sum.inputs['values'] << add_multiple_ints_node.outputs['macro_sink'] link.collapse = 1 sink.inputs['input'] = sum.outputs['result'] return network
[docs]def source_data(network): return { 'source_1': [1, 2], 'source_2': [4, 5, 6], 'source_3': [7, 8, 9, 10], }
[docs]def sink_data(network): return {'sink': 'vfs://tmp/results/{}/result_{{sample_id}}_{{cardinality}}{{ext}}'.format(network.id)}
[docs]def main(): network = create_network() # Validate and execute network if network.is_valid(): network.draw_network(name=network.id, img_format='svg', draw_dimension=True) network.execute(source_data(network), sink_data(network)) else: print("Network was not valid")
if __name__ == '__main__': main()