def test_export_monitor_data_with_id(fixed_nodenet):
    monitor1 = micropsi.add_gate_monitor(fixed_nodenet, 'A1', 'gen')
    micropsi.add_gate_monitor(fixed_nodenet, 'B1', 'gen')
    micropsi.step_nodenet(fixed_nodenet)
    data = micropsi.export_monitor_data(fixed_nodenet, monitor_uid=monitor1['uid'])
    assert data['node_name'] == 'A1'
    assert 'values' in data
def test_clear_monitor(fixed_nodenet):
    monitor = micropsi.add_gate_monitor(fixed_nodenet, 'A1', 'gen')
    micropsi.step_nodenet(fixed_nodenet)
    micropsi.clear_monitor(fixed_nodenet, monitor['uid'])
    data = micropsi.get_monitor_data(fixed_nodenet)
    values = data['monitors'][monitor['uid']]['values']
    assert len(values.keys()) == 0
def test_export_monitor_data_with_id(fixed_nodenet):
    uid1 = micropsi.add_gate_monitor(fixed_nodenet, 'n0001', 'gen', name="Testmonitor")
    micropsi.add_gate_monitor(fixed_nodenet, 'n0003', 'gen')
    micropsi.step_nodenet(fixed_nodenet)
    data = micropsi.export_monitor_data(fixed_nodenet, monitor_uid=uid1)
    assert data['name'] == 'Testmonitor'
    assert 'values' in data
def test_remove_monitored_link_via_delete_node(fixed_nodenet):
    uid = micropsi.add_link_monitor(fixed_nodenet, 'n0005', 'gen', 'n0003',
                                    'gen', 'weight', 'Testmonitor')
    micropsi.delete_nodes(fixed_nodenet, ['n0005'])
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.export_monitor_data(fixed_nodenet)
    assert monitor[uid]['values'][1] is None
def test_clear_monitor(fixed_nodenet):
    uid = micropsi.add_gate_monitor(fixed_nodenet, 'n0001', 'gen')
    micropsi.step_nodenet(fixed_nodenet)
    micropsi.clear_monitor(fixed_nodenet, uid)
    data = micropsi.get_monitor_data(fixed_nodenet)
    values = data['monitors'][uid]['values']
    assert len(values.keys()) == 0
def test_clear_monitor(fixed_nodenet):
    uid = micropsi.add_gate_monitor(fixed_nodenet, 'n0001', 'gen')
    micropsi.step_nodenet(fixed_nodenet)
    micropsi.clear_monitor(fixed_nodenet, uid)
    data = micropsi.get_monitor_data(fixed_nodenet)
    values = data['monitors'][uid]['values']
    assert len(values.keys()) == 0
Example #7
0
def test_sensor_actuator_indices(test_nodenet):
    nodenet = micropsi.get_nodenet(test_nodenet)
    netapi = nodenet.netapi
    result, world_uid = micropsi.new_world('default', 'World')
    micropsi.set_nodenet_properties(test_nodenet,
                                    worldadapter='Default',
                                    world_uid=world_uid)
    sensor = netapi.create_node("Sensor", None, "static_sensor")
    sensor.set_parameter("datasource", "static_on")
    actor = netapi.create_node("Actor", None, "echo_actor")
    actor.set_parameter("datatarget", "echo")
    register = netapi.create_node("Register", None, "source")
    register.activation = 0.8
    netapi.link(register, 'gen', register, 'gen', weight=0.5)
    netapi.link(register, 'gen', actor, 'gen')
    assert sensor.activation == 0
    assert actor.get_gate('gen').activation == 0
    micropsi.step_nodenet(test_nodenet)
    micropsi.step_nodenet(test_nodenet)
    assert sensor.activation == 1
    assert round(actor.get_gate('gen').activation, 3) == 0.8
    netapi.delete_node(sensor)
    netapi.delete_node(actor)
    assert set(nodenet.rootpartition.actuator_indices) == {0}
    assert set(nodenet.rootpartition.sensor_indices) == {0}
Example #8
0
def test_grow_partitions(test_nodenet):
    nodenet = micropsi.get_nodenet(test_nodenet)
    netapi = nodenet.netapi
    nodespace = netapi.create_nodespace(
        None,
        name="partition",
        options={
            "new_partition": True,
            "initial_number_of_nodes": 2,
            "average_elements_per_node_assumption": 4,
            "initial_number_of_nodespaces": 1
        })

    for i in range(20):
        netapi.create_node("Pipe", nodespace.uid, "N %d" % i)

    partition = nodespace.partition

    # growby (NoN // 2): 2,3,4,6,9,13,19,28
    assert len(partition.allocated_nodes) == 28
    assert partition.NoE > 28 * 4

    for i in range(2):
        netapi.create_nodespace(nodespace.uid, name="NS %d" % i)

    assert len(partition.allocated_nodespaces) == 4

    # step, save, and load the net to make sure all data structures have been grown properly
    micropsi.step_nodenet(test_nodenet)
    micropsi.save_nodenet(test_nodenet)
    micropsi.revert_nodenet(test_nodenet)
    micropsi.step_nodenet(test_nodenet)
def test_export_monitor_data_with_id(fixed_nodenet):
    uid1 = micropsi.add_gate_monitor(fixed_nodenet, 'n0001', 'gen', name="Testmonitor")
    micropsi.add_gate_monitor(fixed_nodenet, 'n0003', 'gen')
    micropsi.step_nodenet(fixed_nodenet)
    data = micropsi.export_monitor_data(fixed_nodenet, monitor_uid=uid1)
    assert data['name'] == 'Testmonitor'
    assert 'values' in data
def test_grow_partitions(test_nodenet):
    nodenet = micropsi.get_nodenet(test_nodenet)
    netapi = nodenet.netapi
    nodespace = netapi.create_nodespace(None, name="partition", options={
        "new_partition": True,
        "initial_number_of_nodes": 2,
        "average_elements_per_node_assumption": 4,
        "initial_number_of_nodespaces": 1
    })

    for i in range(20):
        netapi.create_node("Pipe", nodespace.uid, "N %d" % i)

    partition = nodespace.partition

    # growby (NoN // 2): 2,3,4,6,9,13,19,28
    assert len(partition.allocated_nodes) == 28
    assert partition.NoE > 28 * 4

    for i in range(2):
        netapi.create_nodespace(nodespace.uid, name="NS %d" % i)

    assert len(partition.allocated_nodespaces) == 4

    # step, save, and load the net to make sure all data structures have been grown properly
    micropsi.step_nodenet(test_nodenet)
    micropsi.save_nodenet(test_nodenet)
    micropsi.revert_nodenet(test_nodenet)
    micropsi.step_nodenet(test_nodenet)
Example #11
0
def test_add_link_monitor(fixed_nodenet):
    uid = micropsi.add_link_monitor(fixed_nodenet,
                                    'n0005',
                                    'gen',
                                    'n0003',
                                    'gen',
                                    'weight',
                                    'Testmonitor',
                                    color="#112233")
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert monitor.name == 'Testmonitor'
    assert monitor.property == 'weight'
    assert monitor.source_node_uid == 'n0005'
    assert monitor.target_node_uid == 'n0003'
    assert monitor.gate_type == 'gen'
    assert monitor.slot_type == 'gen'
    assert monitor.color == "#112233"
    assert len(monitor.values) == 0
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert round(monitor.values[1], 2) == 1
    micropsi.nodenets[fixed_nodenet].set_link_weight('n0005',
                                                     'gen',
                                                     'n0003',
                                                     'gen',
                                                     weight=0.7)
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert len(monitor.values) == 2
    assert round(monitor.values[2], 2) == 0.7
Example #12
0
def test_export_monitor_data(fixed_nodenet):
    uid1 = micropsi.add_gate_monitor(fixed_nodenet, 'n0001', 'gen')
    uid2 = micropsi.add_gate_monitor(fixed_nodenet, 'n0003', 'gen')
    micropsi.step_nodenet(fixed_nodenet)
    data = micropsi.export_monitor_data(fixed_nodenet)
    assert uid1 in data
    assert 'values' in data[uid1]
    assert uid2 in data
Example #13
0
def test_node_logic_actor_modulator(test_nodenet, default_world):
    net, netapi, source = prepare(test_nodenet)
    netapi.link_actor(source,
                      "base_porret_decay_factor",
                      weight=0.3,
                      gate="gen")
    micropsi.step_nodenet(test_nodenet)
    assert round(netapi.get_modulator("base_porret_decay_factor"), 3) == 0.3
Example #14
0
def test_node_logic_sensor_nomodulators(engine, default_world):
    result, nnuid = micropsi.new_nodenet("adf", engine, "Default", world_uid=default_world, use_modulators=False)
    net, netapi, source = prepare(nnuid)
    register = netapi.create_node("Register", None)
    netapi.link_sensor(register, "static_on", "gen", weight=0.4)
    micropsi.step_nodenet(nnuid)
    micropsi.step_nodenet(nnuid)
    assert round(register.get_gate("gen").activation, 1) == 0.4
def test_get_monitor_data(fixed_nodenet):
    monitor = micropsi.add_gate_monitor(fixed_nodenet, 'A1', 'gen')
    micropsi.step_nodenet(fixed_nodenet)
    data = micropsi.get_monitor_data(fixed_nodenet)
    assert data['current_step'] == 1
    assert data['monitors'][monitor['uid']]['node_name'] == 'A1'
    values = data['monitors'][monitor['uid']]['values']
    assert len(values.keys()) == 1
Example #16
0
def test_node_logic_sensor_datasource(test_nodenet, default_world):
    net, netapi, source = prepare(test_nodenet)
    micropsi.set_nodenet_properties(test_nodenet, worldadapter="Default", world_uid=default_world)
    register = netapi.create_node("Register", None)
    netapi.link_sensor(register, "static_on", "gen", weight=0.35)
    micropsi.step_nodenet(test_nodenet)
    micropsi.step_nodenet(test_nodenet)
    assert round(register.get_gate("gen").activation, 3) == 0.35
def test_export_monitor_data(fixed_nodenet):
    uid1 = micropsi.add_gate_monitor(fixed_nodenet, 'n0001', 'gen')
    uid2 = micropsi.add_gate_monitor(fixed_nodenet, 'n0003', 'gen')
    micropsi.step_nodenet(fixed_nodenet)
    data = micropsi.export_monitor_data(fixed_nodenet)
    assert uid1 in data
    assert 'values' in data[uid1]
    assert uid2 in data
def test_export_monitor_data(fixed_nodenet):
    monitor1 = micropsi.add_gate_monitor(fixed_nodenet, 'A1', 'gen')
    monitor2 = micropsi.add_gate_monitor(fixed_nodenet, 'B1', 'gen')
    micropsi.step_nodenet(fixed_nodenet)
    data = micropsi.export_monitor_data(fixed_nodenet)
    assert monitor1['uid'] in data
    assert 'values' in data[monitor1['uid']]
    assert monitor2['uid'] in data
Example #19
0
def test_multiple_nodenet_interference(engine, resourcepath):
    import os
    nodetype_file = os.path.join(resourcepath, 'Test', 'nodetypes.json')
    nodefunc_file = os.path.join(resourcepath, 'Test', 'nodefunctions.py')
    with open(nodetype_file, 'w') as fp:
        fp.write('{"Testnode": {\
            "name": "Testnode",\
            "slottypes": ["gen", "foo", "bar"],\
            "gatetypes": ["gen", "foo", "bar"],\
            "nodefunction_name": "testnodefunc"\
        }}')
    with open(nodefunc_file, 'w') as fp:
        fp.write(
            "def testnodefunc(netapi, node=None, **prams):\r\n    node.get_gate('gen').gate_function(17)"
        )

    micropsi.reload_native_modules()

    result, n1_uid = micropsi.new_nodenet('Net1',
                                          engine=engine,
                                          owner='Pytest User')
    result, n2_uid = micropsi.new_nodenet('Net2',
                                          engine=engine,
                                          owner='Pytest User')

    n1 = micropsi.nodenets[n1_uid]
    n2 = micropsi.nodenets[n2_uid]

    nativemodule = n1.netapi.create_node("Testnode", None, "Testnode")
    register1 = n1.netapi.create_node("Register", None, "Register1")
    n1.netapi.link(nativemodule, 'gen', register1, 'gen', weight=1.2)

    source2 = n2.netapi.create_node("Register", None, "Source2")
    register2 = n2.netapi.create_node("Register", None, "Register2")
    n2.netapi.link(source2, 'gen', source2, 'gen')
    n2.netapi.link(source2, 'gen', register2, 'gen', weight=0.9)
    source2.activation = 0.7

    micropsi.step_nodenet(n2.uid)

    assert n1.current_step == 0
    assert register1.activation == 0
    assert register1.name == "Register1"
    assert nativemodule.name == "Testnode"
    assert round(register1.get_slot('gen').get_links()[0].weight, 2) == 1.2
    assert register1.get_slot(
        'gen').get_links()[0].source_node.name == 'Testnode'
    assert n1.get_node(register1.uid).name == "Register1"

    assert n2.current_step == 1
    assert round(source2.activation, 2) == 0.7
    assert round(register2.activation, 2) == 0.63
    assert register2.name == "Register2"
    assert source2.name == "Source2"
    assert round(register2.get_slot('gen').get_links()[0].weight, 2) == 0.9
    assert register2.get_slot(
        'gen').get_links()[0].source_node.name == 'Source2'
    assert n2.get_node(register2.uid).name == "Register2"
Example #20
0
def test_remove_monitored_node(fixed_nodenet):
    uid = micropsi.add_gate_monitor(fixed_nodenet,
                                    'n0001',
                                    'gen',
                                    sheaf='default')
    micropsi.delete_nodes(fixed_nodenet, ['n0001'])
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.export_monitor_data(fixed_nodenet)
    assert monitor[uid]['values'][1] is None
def test_get_monitor_data(fixed_nodenet):
    uid = micropsi.add_gate_monitor(fixed_nodenet, 'n0001', 'gen', name="Testmonitor")
    micropsi.step_nodenet(fixed_nodenet)
    data = micropsi.get_monitor_data(fixed_nodenet)
    assert data['current_step'] == 1
    assert data['monitors'][uid]['name'] == 'Testmonitor'
    values = data['monitors'][uid]['values']
    assert len(values.keys()) == 1
    assert [k for k in values.keys()] == [1]
def test_worldadapter_update_calls_reset_datatargets(test_world, test_nodenet):
    world = runtime.worlds[test_world]
    nodenet = runtime.get_nodenet(test_nodenet)
    runtime.load_nodenet(test_nodenet)
    nodenet.world = world
    runtime.set_nodenet_properties(nodenet.uid, worldadapter='Braitenberg', world_uid=world.uid)
    world.agents[test_nodenet].reset_datatargets = mock.MagicMock(name='reset')
    runtime.step_nodenet(test_nodenet)
    world.agents[test_nodenet].reset_datatargets.assert_called_once()
def test_get_monitor_data(fixed_nodenet):
    uid = micropsi.add_gate_monitor(fixed_nodenet, 'n0001', 'gen', name="Testmonitor")
    micropsi.step_nodenet(fixed_nodenet)
    data = micropsi.get_monitor_data(fixed_nodenet)
    assert data['current_step'] == 1
    assert data['monitors'][uid]['name'] == 'Testmonitor'
    values = data['monitors'][uid]['values']
    assert len(values.keys()) == 1
    assert [k for k in values.keys()] == [1]
Example #24
0
def test_worldadapter_update_calls_reset_datatargets(test_world, test_nodenet):
    world = runtime.worlds[test_world]
    nodenet = runtime.get_nodenet(test_nodenet)
    runtime.load_nodenet(test_nodenet)
    nodenet.world = test_world
    runtime.set_nodenet_properties(nodenet.uid, worldadapter='Braitenberg', world_uid=world.uid)
    world.agents[test_nodenet].reset_datatargets = mock.MagicMock(name='reset')
    runtime.step_nodenet(test_nodenet)
    world.agents[test_nodenet].reset_datatargets.assert_called_once()
Example #25
0
def test_node_logic_sensor_datasource(test_nodenet, default_world):
    net, netapi, source = prepare(test_nodenet)
    micropsi.set_nodenet_properties(test_nodenet,
                                    worldadapter="Default",
                                    world_uid=default_world)
    register = netapi.create_node("Register", None)
    netapi.link_sensor(register, "static_on", "gen", weight=0.35)
    micropsi.step_nodenet(test_nodenet)
    micropsi.step_nodenet(test_nodenet)
    assert round(register.get_gate("gen").activation, 3) == 0.35
def test_add_slot_monitor(fixed_nodenet):
    uid = micropsi.add_slot_monitor(fixed_nodenet, 'A1', 'gen', name="FooBarMonitor")
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert monitor.name == 'FooBarMonitor'
    assert monitor.node_uid == 'A1'
    assert monitor.target == 'gen'
    assert monitor.type == 'slot'
    assert len(monitor.values) == 0
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert len(monitor.values) == 1
def test_add_custom_monitor(fixed_nodenet):
    code = """return len(netapi.get_nodes())"""
    uid = micropsi.add_custom_monitor(fixed_nodenet, code, 'Nodecount')
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert monitor.name == 'Nodecount'
    assert monitor.compiled_function is not None
    assert monitor.function == code
    assert len(monitor.values) == 0
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert len(monitor.values) == 1
    assert monitor.values[1] == len(micropsi.nodenets[fixed_nodenet].netapi.get_nodes())
def test_add_gate_monitor(fixed_nodenet):
    uid = micropsi.add_gate_monitor(fixed_nodenet, 'A1', 'gen', sheaf='default')
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert monitor.name == 'gate gen @ Node A1'
    assert monitor.node_uid == 'A1'
    assert monitor.target == 'gen'
    assert monitor.type == 'gate'
    assert monitor.sheaf == 'default'
    assert len(monitor.values) == 0
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert len(monitor.values) == 1
Example #29
0
def test_node_logic_sensor_nomodulators(engine, default_world):
    result, nnuid = micropsi.new_nodenet("adf",
                                         engine,
                                         "Default",
                                         world_uid=default_world,
                                         use_modulators=False)
    net, netapi, source = prepare(nnuid)
    register = netapi.create_node("Register", None)
    netapi.link_sensor(register, "static_on", "gen", weight=0.4)
    micropsi.step_nodenet(nnuid)
    micropsi.step_nodenet(nnuid)
    assert round(register.get_gate("gen").activation, 1) == 0.4
def test_add_slot_monitor(fixed_nodenet):
    uid = micropsi.add_slot_monitor(fixed_nodenet, 'n0001', 'gen', name="FooBarMonitor", color="#112233")
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert monitor.name == 'FooBarMonitor'
    assert monitor.node_uid == 'n0001'
    assert monitor.target == 'gen'
    assert monitor.type == 'slot'
    assert monitor.color == '#112233'
    assert len(monitor.values) == 0
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert len(monitor.values) == 1
def test_add_gate_monitor(fixed_nodenet):
    uid = micropsi.add_gate_monitor(fixed_nodenet, 'n0001', 'gen', sheaf='default')
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert monitor.name == 'gate gen @ Node A1'
    assert monitor.node_uid == 'n0001'
    assert monitor.target == 'gen'
    assert monitor.type == 'gate'
    assert monitor.sheaf == 'default'
    assert monitor.color.startswith('#')
    assert len(monitor.values) == 0
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert len(monitor.values) == 1
def test_add_custom_monitor(fixed_nodenet):
    code = """return len(netapi.get_nodes())"""
    uid = micropsi.add_custom_monitor(fixed_nodenet, code, 'Nodecount', color="#112233")
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert monitor.name == 'Nodecount'
    assert monitor.compiled_function is not None
    assert monitor.function == code
    assert monitor.color == "#112233"
    assert len(monitor.values) == 0
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert len(monitor.values) == 1
    assert monitor.values[1] == len(micropsi.nodenets[fixed_nodenet].netapi.get_nodes())
def test_add_modulator_monitor(fixed_nodenet):
    uid = micropsi.add_modulator_monitor(fixed_nodenet, 'base_test', 'Testmonitor')
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert monitor.name == 'Testmonitor'
    assert monitor.modulator == 'base_test'
    assert len(monitor.values) == 0
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert monitor.values[1] == 1
    micropsi.nodenets[fixed_nodenet].set_modulator('base_test', 0.7)
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert len(monitor.values) == 2
    assert monitor.values[2] == 0.7
def test_multiple_nodenet_interference(engine, resourcepath):
    import os
    nodetype_file = os.path.join(resourcepath, 'Test', 'nodetypes.json')
    nodefunc_file = os.path.join(resourcepath, 'Test', 'nodefunctions.py')
    with open(nodetype_file, 'w') as fp:
        fp.write('{"Testnode": {\
            "name": "Testnode",\
            "slottypes": ["gen", "foo", "bar"],\
            "gatetypes": ["gen", "foo", "bar"],\
            "nodefunction_name": "testnodefunc"\
        }}')
    with open(nodefunc_file, 'w') as fp:
        fp.write("def testnodefunc(netapi, node=None, **prams):\r\n    node.get_gate('gen').gate_function(17)")

    micropsi.reload_native_modules()

    result, n1_uid = micropsi.new_nodenet('Net1', engine=engine, owner='Pytest User')
    result, n2_uid = micropsi.new_nodenet('Net2', engine=engine, owner='Pytest User')

    n1 = micropsi.nodenets[n1_uid]
    n2 = micropsi.nodenets[n2_uid]

    nativemodule = n1.netapi.create_node("Testnode", None, "Testnode")
    register1 = n1.netapi.create_node("Register", None, "Register1")
    n1.netapi.link(nativemodule, 'gen', register1, 'gen', weight=1.2)

    source2 = n2.netapi.create_node("Register", None, "Source2")
    register2 = n2.netapi.create_node("Register", None, "Register2")
    n2.netapi.link(source2, 'gen', source2, 'gen')
    n2.netapi.link(source2, 'gen', register2, 'gen', weight=0.9)
    source2.activation = 0.7

    micropsi.step_nodenet(n2.uid)

    assert n1.current_step == 0
    assert register1.activation == 0
    assert register1.name == "Register1"
    assert nativemodule.name == "Testnode"
    assert round(register1.get_slot('gen').get_links()[0].weight, 2) == 1.2
    assert register1.get_slot('gen').get_links()[0].source_node.name == 'Testnode'
    assert n1.get_node(register1.uid).name == "Register1"

    assert n2.current_step == 1
    assert round(source2.activation, 2) == 0.7
    assert round(register2.activation, 2) == 0.63
    assert register2.name == "Register2"
    assert source2.name == "Source2"
    assert round(register2.get_slot('gen').get_links()[0].weight, 2) == 0.9
    assert register2.get_slot('gen').get_links()[0].source_node.name == 'Source2'
    assert n2.get_node(register2.uid).name == "Register2"
def test_add_modulator_monitor(fixed_nodenet):
    uid = micropsi.add_modulator_monitor(fixed_nodenet, 'base_test', 'Testmonitor', color="#112233")
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert monitor.name == 'Testmonitor'
    assert monitor.modulator == 'base_test'
    assert monitor.color == "#112233"
    assert len(monitor.values) == 0
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert monitor.values[1] == 1
    micropsi.nodenets[fixed_nodenet].set_modulator('base_test', 0.7)
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert len(monitor.values) == 2
    assert monitor.values[2] == 0.7
def test_add_link_monitor(fixed_nodenet):
    uid = micropsi.add_link_monitor(fixed_nodenet, 'S', 'gen', 'B1', 'gen', 'weight', 'Testmonitor')
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert monitor.name == 'Testmonitor'
    assert monitor.property == 'weight'
    assert monitor.source_node_uid == 'S'
    assert monitor.target_node_uid == 'B1'
    assert monitor.gate_type == 'gen'
    assert monitor.slot_type == 'gen'
    assert len(monitor.values) == 0
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert monitor.values[1] == 1
    micropsi.nodenets[fixed_nodenet].set_link_weight('S', 'gen', 'B1', 'gen', weight=0.7)
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert len(monitor.values) == 2
    assert monitor.values[2] == 0.7
Example #37
0
def test_fetch_partial_monitor_data(fixed_nodenet):
    uid = micropsi.add_gate_monitor(fixed_nodenet, 'n0001', 'gen')
    i = 0
    while i < 50:
        micropsi.step_nodenet(fixed_nodenet)
        i += 1
    assert micropsi.nodenets[fixed_nodenet].current_step == 50

    # get 10 items from [20 - 29]
    data = micropsi.export_monitor_data(fixed_nodenet,
                                        monitor_from=20,
                                        monitor_count=10)
    values = data[uid]['values']
    assert len(values.keys()) == 10
    assert set(list(values.keys())) == set(range(20, 30))

    # get 10 items from [20 - 29] for one monitor
    data = micropsi.export_monitor_data(fixed_nodenet,
                                        monitor_uid=uid,
                                        monitor_from=20,
                                        monitor_count=10)
    values = data['values']
    assert len(values.keys()) == 10
    assert set(list(values.keys())) == set(range(20, 30))

    # get 10 newest values [41-50]
    data = micropsi.export_monitor_data(fixed_nodenet, monitor_count=10)
    values = data[uid]['values']
    assert len(values.keys()) == 10
    assert set(list(values.keys())) == set(range(41, 51))

    # get 10 items, starting at 45 -- assert they are filled up to the left.
    data = micropsi.export_monitor_data(fixed_nodenet,
                                        monitor_from=40,
                                        monitor_count=15)
    values = data[uid]['values']
    assert len(values.keys()) == 15
    assert set(list(values.keys())) == set(range(36, 51))

    # get all items, starting at 10
    data = micropsi.export_monitor_data(fixed_nodenet, monitor_from=10)
    values = data[uid]['values']
    assert len(values.keys()) == 41
    assert set(list(values.keys())) == set(range(10, 51))
def test_add_link_monitor(fixed_nodenet):
    uid = micropsi.add_link_monitor(fixed_nodenet, 'n0005', 'gen', 'n0003', 'gen', 'weight', 'Testmonitor', color="#112233")
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert monitor.name == 'Testmonitor'
    assert monitor.property == 'weight'
    assert monitor.source_node_uid == 'n0005'
    assert monitor.target_node_uid == 'n0003'
    assert monitor.gate_type == 'gen'
    assert monitor.slot_type == 'gen'
    assert monitor.color == "#112233"
    assert len(monitor.values) == 0
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert round(monitor.values[1], 2) == 1
    micropsi.nodenets[fixed_nodenet].set_link_weight('n0005', 'gen', 'n0003', 'gen', weight=0.7)
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.nodenets[fixed_nodenet].get_monitor(uid)
    assert len(monitor.values) == 2
    assert round(monitor.values[2], 2) == 0.7
def test_actuators_do_not_reset_each_others_datatarget(test_world, test_nodenet):
    world = runtime.worlds[test_world]
    nodenet = runtime.get_nodenet(test_nodenet)
    runtime.load_nodenet(test_nodenet)
    nodenet.world = world
    runtime.set_runner_properties(200, 1)
    runtime.set_nodenet_properties(nodenet.uid, worldadapter='Braitenberg', world_uid=world.uid)
    actor1 = nodenet.netapi.create_node("Actor", "Root")
    actor2 = nodenet.netapi.create_node("Actor", "Root")
    actor1.set_parameter('datatarget', 'engine_r')
    actor2.set_parameter('datatarget', 'engine_r')
    reg1 = nodenet.netapi.create_node("Register", "Root")
    reg2 = nodenet.netapi.create_node("Register", "Root")
    nodenet.netapi.link(reg1, 'gen', actor1, 'gen')
    nodenet.netapi.link(reg2, 'gen', actor2, 'gen')
    reg1.activation = 0.7
    reg2.activation = 0.3
    runtime.step_nodenet(test_nodenet)
    actor1.node_function()
    actor2.node_function()
    assert world.agents[test_nodenet].datatargets['engine_r'] == 1
Example #40
0
def test_actuators_do_not_reset_each_others_datatarget(test_world, test_nodenet):
    world = runtime.worlds[test_world]
    nodenet = runtime.get_nodenet(test_nodenet)
    runtime.load_nodenet(test_nodenet)
    nodenet.world = test_world
    runtime.set_runner_properties(200, 1)
    runtime.set_nodenet_properties(nodenet.uid, worldadapter='Braitenberg', world_uid=world.uid)
    actor1 = nodenet.netapi.create_node("Actor", None)
    actor2 = nodenet.netapi.create_node("Actor", None)
    actor1.set_parameter('datatarget', 'engine_r')
    actor2.set_parameter('datatarget', 'engine_r')
    reg1 = nodenet.netapi.create_node("Register", None)
    reg2 = nodenet.netapi.create_node("Register", None)
    nodenet.netapi.link(reg1, 'gen', actor1, 'gen')
    nodenet.netapi.link(reg2, 'gen', actor2, 'gen')
    reg1.activation = 0.7
    reg2.activation = 0.3
    mock_reset = mock.Mock(return_value=None)
    world.agents[test_nodenet].reset_datatargets = mock_reset
    runtime.step_nodenet(test_nodenet)
    assert world.agents[test_nodenet].datatargets['engine_r'] == 1
Example #41
0
def test_node_logic_sensor_modulator(test_nodenet, default_world):
    net, netapi, source = prepare(test_nodenet)
    register = netapi.create_node("Register", None)
    netapi.link_sensor(register, "emo_activation", "gen")
    micropsi.step_nodenet(test_nodenet)
    micropsi.step_nodenet(test_nodenet)
    micropsi.step_nodenet(test_nodenet)
    assert round(netapi.get_modulator("emo_activation"), 3) == round(register.activation, 3)
def test_sensor_actuator_indices(test_nodenet):
    nodenet = micropsi.get_nodenet(test_nodenet)
    netapi = nodenet.netapi
    result, world_uid = micropsi.new_world('default', 'World')
    micropsi.set_nodenet_properties(test_nodenet, worldadapter='Default', world_uid=world_uid)
    sensor = netapi.create_node("Sensor", None, "static_sensor")
    sensor.set_parameter("datasource", "static_on")
    actor = netapi.create_node("Actor", None, "echo_actor")
    actor.set_parameter("datatarget", "echo")
    register = netapi.create_node("Register", None, "source")
    register.activation = 0.8
    netapi.link(register, 'gen', register, 'gen', weight=0.5)
    netapi.link(register, 'gen', actor, 'gen')
    assert sensor.activation == 0
    assert actor.get_gate('gen').activation == 0
    micropsi.step_nodenet(test_nodenet)
    micropsi.step_nodenet(test_nodenet)
    assert sensor.activation == 1
    assert round(actor.get_gate('gen').activation, 3) == 0.8
    netapi.delete_node(sensor)
    netapi.delete_node(actor)
    assert set(nodenet.rootpartition.actuator_indices) == {0}
    assert set(nodenet.rootpartition.sensor_indices) == {0}
Example #43
0
def test_node_logic_sensor_modulator(test_nodenet, default_world):
    net, netapi, source = prepare(test_nodenet)
    register = netapi.create_node("Register", None)
    netapi.link_sensor(register, "emo_activation", "gen")
    micropsi.step_nodenet(test_nodenet)
    micropsi.step_nodenet(test_nodenet)
    micropsi.step_nodenet(test_nodenet)
    assert round(netapi.get_modulator("emo_activation"),
                 3) == round(register.activation, 3)
def test_fetch_partial_monitor_data(fixed_nodenet):
    uid = micropsi.add_gate_monitor(fixed_nodenet, 'n0001', 'gen')
    i = 0
    while i < 50:
        micropsi.step_nodenet(fixed_nodenet)
        i += 1
    assert micropsi.nodenets[fixed_nodenet].current_step == 50

    # get 10 items from [20 - 29]
    data = micropsi.export_monitor_data(fixed_nodenet, monitor_from=20, monitor_count=10)
    values = data[uid]['values']
    assert len(values.keys()) == 10
    assert set(list(values.keys())) == set(range(20, 30))

    # get 10 items from [20 - 29] for one monitor
    data = micropsi.export_monitor_data(fixed_nodenet, monitor_uid=uid, monitor_from=20, monitor_count=10)
    values = data['values']
    assert len(values.keys()) == 10
    assert set(list(values.keys())) == set(range(20, 30))

    # get 10 newest values [41-50]
    data = micropsi.export_monitor_data(fixed_nodenet, monitor_count=10)
    values = data[uid]['values']
    assert len(values.keys()) == 10
    assert set(list(values.keys())) == set(range(41, 51))

    # get 10 items, starting at 45 -- assert they are filled up to the left.
    data = micropsi.export_monitor_data(fixed_nodenet, monitor_from=40, monitor_count=15)
    values = data[uid]['values']
    assert len(values.keys()) == 15
    assert set(list(values.keys())) == set(range(36, 51))

    # get all items, starting at 10
    data = micropsi.export_monitor_data(fixed_nodenet, monitor_from=10)
    values = data[uid]['values']
    assert len(values.keys()) == 41
    assert set(list(values.keys())) == set(range(10, 51))
Example #45
0
def test_node_logic_actor_nomodulators(engine, default_world):
    result, nnuid = micropsi.new_nodenet("adf", engine, "Default", world_uid=default_world, use_modulators=False)
    net, netapi, source = prepare(nnuid)
    netapi.link_actor(source, "echo", weight=0.7, gate="gen")
    register = netapi.create_node("Register", None)
    actor = netapi.get_nodes(node_name_prefix="echo")[0]
    netapi.link(actor, "gen", register, "gen")
    micropsi.step_nodenet(nnuid)
    micropsi.step_nodenet(nnuid)
    micropsi.step_nodenet(nnuid)
    assert round(register.get_gate("gen").activation, 1) == 0.7
Example #46
0
def test_node_logic_actor_datatarget(test_nodenet, default_world):
    net, netapi, source = prepare(test_nodenet)
    micropsi.set_nodenet_properties(test_nodenet, worldadapter="Default", world_uid=default_world)
    netapi.link_actor(source, "echo", weight=0.5, gate="gen")
    register = netapi.create_node("Register", None)
    actor = netapi.get_nodes(node_name_prefix="echo")[0]
    netapi.link(actor, "gen", register, "gen")
    micropsi.step_nodenet(test_nodenet)
    micropsi.step_nodenet(test_nodenet)
    micropsi.step_nodenet(test_nodenet)
    assert round(register.get_gate("gen").activation, 1) == 0.5
Example #47
0
def test_node_logic_actor_datatarget(test_nodenet, default_world):
    net, netapi, source = prepare(test_nodenet)
    micropsi.set_nodenet_properties(test_nodenet,
                                    worldadapter="Default",
                                    world_uid=default_world)
    netapi.link_actor(source, "echo", weight=0.5, gate="gen")
    register = netapi.create_node("Register", None)
    actor = netapi.get_nodes(node_name_prefix="echo")[0]
    netapi.link(actor, "gen", register, "gen")
    micropsi.step_nodenet(test_nodenet)
    micropsi.step_nodenet(test_nodenet)
    micropsi.step_nodenet(test_nodenet)
    assert round(register.get_gate("gen").activation, 1) == 0.5
Example #48
0
def test_node_logic_actor_nomodulators(engine, default_world):
    result, nnuid = micropsi.new_nodenet("adf",
                                         engine,
                                         "Default",
                                         world_uid=default_world,
                                         use_modulators=False)
    net, netapi, source = prepare(nnuid)
    netapi.link_actor(source, "echo", weight=0.7, gate="gen")
    register = netapi.create_node("Register", None)
    actor = netapi.get_nodes(node_name_prefix="echo")[0]
    netapi.link(actor, "gen", register, "gen")
    micropsi.step_nodenet(nnuid)
    micropsi.step_nodenet(nnuid)
    micropsi.step_nodenet(nnuid)
    assert round(register.get_gate("gen").activation, 1) == 0.7
def test_remove_monitored_node(fixed_nodenet):
    uid = micropsi.add_gate_monitor(fixed_nodenet, 'n0001', 'gen', sheaf='default')
    micropsi.delete_node(fixed_nodenet, 'n0001')
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.export_monitor_data(fixed_nodenet)
    assert monitor[uid]['values'][1] is None
Example #50
0
def step_calculation(nodenet_uid):
    return True, runtime.step_nodenet(nodenet_uid)
def test_remove_monitored_link_via_delete_node(fixed_nodenet):
    uid = micropsi.add_link_monitor(fixed_nodenet, 'n0005', 'gen', 'n0003', 'gen', 'weight', 'Testmonitor')
    micropsi.delete_node(fixed_nodenet, 'n0005')
    micropsi.step_nodenet(fixed_nodenet)
    monitor = micropsi.export_monitor_data(fixed_nodenet)
    assert monitor[uid]['values'][1] is None
Example #52
0
def step_nodenet(nodenet_uid):
    return runtime.step_nodenet(nodenet_uid)
Example #53
0
def test_node_logic_actor_modulator(test_nodenet, default_world):
    net, netapi, source = prepare(test_nodenet)
    netapi.link_actor(source, "base_porret_decay_factor", weight=0.3, gate="gen")
    micropsi.step_nodenet(test_nodenet)
    assert round(netapi.get_modulator("base_porret_decay_factor"), 3) == 0.3