Source code for fastr.examples.macro_node

import os
import fastr

from fastr.core.node import MacroNode


[docs]def create_macro_network(): # Create Network network = fastr.Network('add_multiple_ints') # Create first source input_ = network.create_source(fastr.typelist['Int'], id_='input') # Create calculation nodes addint1 = network.create_node(fastr.toollist['AddInt'], id_='addint1') addint2 = network.create_node(fastr.toollist['AddInt'], id_='addint2') # Link network addint1.inputs['left_hand'] = input_.output addint1.inputs['right_hand'] = 10, addint2.inputs['left_hand'] = addint1.outputs['result'] addint2.inputs['right_hand'] = 100, # 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'] = addint2.outputs['result'] #network.draw_network(name=network.id, img_format='png') return network
[docs]def create_super_macro_node(): network = fastr.Network('macro_container') # Create Outputs input_value = network.create_source(fastr.typelist['Int'], id_='input_value') # Create Macro Networks macro_network_1 = create_macro_network() macro_network_2 = create_macro_network() add_multiple_ints_node_1 = network.create_macro(macro_network_1, id_='add_multiple_ints_1') add_multiple_ints_node_2 = network.create_macro(macro_network_2, id_='add_multiple_ints_2') # Create Sink output_value = network.create_sink(fastr.typelist['Int'], id_='output_value') # Create Links add_multiple_ints_node_1.inputs['input'] = input_value.output add_multiple_ints_node_2.inputs['input'] = add_multiple_ints_node_1.outputs['macro_sink'] output_value.inputs['input'] = add_multiple_ints_node_2.outputs['macro_sink'] #network.draw_network(name=network.id, img_format='png') return network
[docs]def create_network(): macro_network = create_super_macro_node() # Create Network test_network = fastr.Network('test_macro_node') # Create data source input_ = test_network.create_source(fastr.typelist['Int'], id_='source') # Create MacroNode add_multiple_ints_node = test_network.create_macro(macro_network, id_='add_multiple_ints') # Create sink sink = test_network.create_sink(fastr.typelist['Int'], id_='test_network_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_multiple_ints_node.inputs['input_value'] = input_.output sink.inputs['input'] = add_multiple_ints_node.outputs['output_value'] return test_network
[docs]def source_data(network): return {'source': [1, 'vfslist://example_data/add_ints/values']}
[docs]def sink_data(network): return {'test_network_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='png') network.execute(source_data(network), sink_data(network)) else: print "Network was not valid"
if __name__ == '__main__': main()