def test_six_integrators_threelayer_mixed(self): A = IntegratorMechanism(name='A', default_variable=[0], function=SimpleIntegrator(rate=1)) B = IntegratorMechanism(name='B', default_variable=[0], function=SimpleIntegrator(rate=1)) C = IntegratorMechanism(name='C', default_variable=[0], function=SimpleIntegrator(rate=1)) D = IntegratorMechanism(name='D', default_variable=[0], function=SimpleIntegrator(rate=1)) E = IntegratorMechanism(name='E', default_variable=[0], function=SimpleIntegrator(rate=1)) F = IntegratorMechanism(name='F', default_variable=[0], function=SimpleIntegrator(rate=1)) p = [ Process(default_variable=[0], pathway=[A, C, E], name='p'), Process(default_variable=[0], pathway=[A, C, F], name='p1'), Process(default_variable=[0], pathway=[A, D, E], name='p2'), Process(default_variable=[0], pathway=[A, D, F], name='p3'), Process(default_variable=[0], pathway=[B, C, E], name='q'), Process(default_variable=[0], pathway=[B, C, F], name='q1'), Process(default_variable=[0], pathway=[B, D, E], name='q2'), Process(default_variable=[0], pathway=[B, D, F], name='q3') ] s = System(processes=p, name='s') term_conds = { TimeScale.TRIAL: All(AfterNCalls(E, 1), AfterNCalls(F, 1)) } stim_list = {A: [[1]], B: [[1]]} sched = Scheduler(system=s) sched.add_condition(B, EveryNCalls(A, 2)) sched.add_condition(C, EveryNCalls(A, 1)) sched.add_condition(D, EveryNCalls(B, 1)) sched.add_condition(E, EveryNCalls(C, 1)) sched.add_condition(F, EveryNCalls(D, 2)) s.scheduler_processing = sched s.run(inputs=stim_list, termination_processing=term_conds) # Intermediate time steps # # 0 1 2 3 # # A 1 2 3 4 # B 1 2 # C 1 4 8 14 # D 3 9 # E 1 8 19 42 # F 23 # expected_output = { A: [ numpy.array([4.]), ], B: [ numpy.array([2.]), ], C: [ numpy.array([14.]), ], D: [ numpy.array([9.]), ], E: [ numpy.array([42.]), ], F: [ numpy.array([23.]), ], } for m in expected_output: for i in range(len(expected_output[m])): numpy.testing.assert_allclose(expected_output[m][i], m.output_values[i])
def test_five_ABABCDE(self): A = TransferMechanism( name='A', default_variable=[0], function=Linear(slope=2.0), ) B = TransferMechanism( name='B', default_variable=[0], function=Linear(slope=2.0), ) C = IntegratorMechanism( name='C', default_variable=[0], function=SimpleIntegrator( rate=.5 ) ) D = TransferMechanism( name='D', default_variable=[0], function=Linear(slope=1.0), ) E = TransferMechanism( name='E', default_variable=[0], function=Linear(slope=2.0), ) p = Process( default_variable=[0], pathway=[A, C, D], name='p' ) q = Process( default_variable=[0], pathway=[B, C, E], name='q' ) s = System( processes=[p, q], name='s' ) term_conds = {TimeScale.TRIAL: AfterNCalls(E, 1)} stim_list = {A: [[1]], B: [[2]]} sched = Scheduler(system=s) sched.add_condition(C, Any(EveryNCalls(A, 1), EveryNCalls(B, 1))) sched.add_condition(D, EveryNCalls(C, 1)) sched.add_condition(E, EveryNCalls(C, 1)) s.scheduler_processing = sched s.run( inputs=stim_list, termination_processing=term_conds ) terminal_mechs = [D, E] expected_output = [ [ numpy.array([3.]), ], [ numpy.array([6.]), ], ] for m in range(len(terminal_mechs)): for i in range(len(expected_output[m])): numpy.testing.assert_allclose(expected_output[m][i], terminal_mechs[m].output_values[i])
def test_1(self): comp = Composition() A = TransferMechanism(function=Linear(slope=5.0, intercept=2.0), name='scheduler-pytests-A') B = TransferMechanism(function=Linear(intercept=4.0), name='scheduler-pytests-B') C = TransferMechanism(function=Linear(intercept=1.5), name='scheduler-pytests-C') for m in [A, B, C]: comp.add_mechanism(m) comp.add_projection(A, MappingProjection(), B) comp.add_projection(B, MappingProjection(), C) sched = Scheduler(composition=comp) sched.add_condition(A, EveryNPasses(1)) sched.add_condition(B, EveryNCalls(A, 2)) sched.add_condition(C, EveryNCalls(B, 3)) termination_conds = {} termination_conds[TimeScale.RUN] = AfterNTrials(1) termination_conds[TimeScale.TRIAL] = AfterNCalls( C, 4, time_scale=TimeScale.TRIAL) output = list(sched.run(termination_conds=termination_conds)) expected_output = [ A, A, B, A, A, B, A, A, B, C, A, A, B, A, A, B, A, A, B, C, A, A, B, A, A, B, A, A, B, C, A, A, B, A, A, B, A, A, B, C, ] # pprint.pprint(output) assert output == pytest.helpers.setify_expected_output(expected_output)
def test_four_integrators_mixed(self): A = IntegratorMechanism( name='A', default_variable=[0], function=SimpleIntegrator( rate=1 ) ) B = IntegratorMechanism( name='B', default_variable=[0], function=SimpleIntegrator( rate=1 ) ) C = IntegratorMechanism( name='C', default_variable=[0], function=SimpleIntegrator( rate=1 ) ) D = IntegratorMechanism( name='D', default_variable=[0], function=SimpleIntegrator( rate=1 ) ) p = Process( default_variable=[0], pathway=[A, C], name='p' ) p1 = Process( default_variable=[0], pathway=[A, D], name='p1' ) q = Process( default_variable=[0], pathway=[B, C], name='q' ) q1 = Process( default_variable=[0], pathway=[B, D], name='q1' ) s = System( processes=[p, p1, q, q1], name='s' ) term_conds = {TimeScale.TRIAL: All(AfterNCalls(C, 1), AfterNCalls(D, 1))} stim_list = {A: [[1]], B: [[1]]} sched = Scheduler(system=s) sched.add_condition(B, EveryNCalls(A, 2)) sched.add_condition(C, EveryNCalls(A, 1)) sched.add_condition(D, EveryNCalls(B, 1)) s.scheduler_processing = sched s.run( inputs=stim_list, termination_processing=term_conds ) mechs = [A, B, C, D] expected_output = [ [ numpy.array([2.]), ], [ numpy.array([1.]), ], [ numpy.array([4.]), ], [ numpy.array([3.]), ], ] for m in range(len(mechs)): for i in range(len(expected_output[m])): numpy.testing.assert_allclose(expected_output[m][i], mechs[m].output_values[i])