Beispiel #1
0
    def test_restart_macro(self, init_simple_model):
        macro = [
            [
                'load "model.main.any"',
                'classoperation Main.ArmModelStudy.Output.MaxMuscleActivity "Dump"',
                'classoperation Main.ArmModel.GlobalRef.t "Dump"',
            ],
            [
                'load "model.main.any"',
                'classoperation Main.ArmModelStudy.Output.MaxMuscleActivity "Dump"',
                'classoperation Main.ArmModel.GlobalRef.t "Dump"',
            ],
        ]

        app = AnyPyProcess()

        output = app.start_macro(macro)
        output = app.start_macro()

        output[0]["ERROR"] = ["SOME ERROR"]

        output = app.start_macro(output)

        for result in output:
            assert "ERROR" not in result
    def test_restart_macro(self, init_simple_model):
        macro = [
            [
                'load "model.main.any"',
                'classoperation Main.ArmModelStudy.Output.MaxMuscleActivity "Dump"',
                'classoperation Main.ArmModel.GlobalRef.t "Dump"',
            ],
            [
                'load "model.main.any"',
                'classoperation Main.ArmModelStudy.Output.MaxMuscleActivity "Dump"',
                'classoperation Main.ArmModel.GlobalRef.t "Dump"',
            ],
        ]

        app = AnyPyProcess(return_task_info=True)

        output = app.start_macro(macro)
        output = app.start_macro()

        output[0]["ERROR"] = ["SOME ERROR"]

        output = app.start_macro(output)

        for result in output:
            assert "ERROR" not in result
    def test_output_convert_data(self,init_simple_model):
        macro = [['load "model.main.any"',
                 'operation Main.ArmModelStudy.InverseDynamics',
                 'classoperation Main.ArmModelStudy.Output.MaxMuscleActivity "Dump"',
                 'classoperation Main.ArmModel.GlobalRef.t "Dump"'],
                 ['load "model.main.any"',
                 'operation Main.ArmModelStudy.InverseDynamics',
                 'classoperation Main.ArmModelStudy.Output.MaxMuscleActivity "Dump"',
                 'classoperation Main.ArmModel.GlobalRef.t "Dump"'],
		     ['load "model.main.any"',
                 'operation Main.ArmModelStudy.InverseDynamics',
                 'classoperation Main.ArmModelStudy.Output.MaxMuscleActivity "Dump"',
                 'classoperation Main.ArmModel.GlobalRef.t "Dump"']]

        app = AnyPyProcess(return_task_info=True)

        output = app.start_macro(macro)

        out1 = output.to_dynd()
        assert hasattr(out1, 'Main_ArmModelStudy_Output_MaxMuscleActivity')
        assert hasattr(out1, 'Main_ArmModel_GlobalRef_t')

        out2 = output.to_dynd( create_nested_structure = True)
        assert hasattr(out2, 'Main')
        assert hasattr(out2.Main.ArmModel.GlobalRef, 't')
def run_model(DesignVars):
    ''' Ruturns the x,y potions for the tip of the A frame '''
    folder = 'C:/Users/fh/Documents/AAU/PhD-AAU/PhD projekt/OptimeringsArtikle/Scripts/OptimizationStudies'
    app = AnyPyProcess(
        anybodycon_path=
        'C:/Program Files (x86)/AnyBody Technology/AnyBody.6.0/AnyBodyCon.exe',
        ignore_errors=['ERROR(OBJ.MCH.MUS6)'])
    macro = [[
        'load "Optimization.main.any"',
        'classoperation Main.DesignVars.sm_rmin "Set Value" --value={:12f}'.
        format(DesignVars[0]),
        'classoperation Main.DesignVars.sm_rmax "Set Value" --value={:12f}'.
        format(DesignVars[1]),
        'classoperation Main.DesignVars.sl_rmin "Set Value" --value={:12f}'.
        format(DesignVars[2]),
        'classoperation Main.DesignVars.sl_rmax "Set Value" --value={:12f}'.
        format(DesignVars[3]),
        'classoperation Main.DesignVars.gl_rmin "Set Value" --value={:12f}'.
        format(DesignVars[4]),
        'classoperation Main.DesignVars.gl_rmax "Set Value" --value={:12f}'.
        format(DesignVars[5]),
        'classoperation Main.DesignVars.gm_rmin "Set Value" --value={:12f}'.
        format(DesignVars[6]),
        'classoperation Main.DesignVars.gm_rmax "Set Value" --value={:12f}'.
        format(DesignVars[7]),
        'classoperation Main.DesignVars.fhl_rmin "Set Value" --value={:12f}'.
        format(DesignVars[8]),
        'classoperation Main.DesignVars.fhl_rmax "Set Value" --value={:12f}'.
        format(DesignVars[9]),
        'classoperation Main.DesignVars.pr_rmin "Set Value" --value={:12f}'.
        format(DesignVars[10]),
        'classoperation Main.DesignVars.pr_rmax "Set Value" --value={:12f}'.
        format(DesignVars[11]),
        'classoperation Main.DesignVars.LocalStrengthFactorPlantarFlexors "Set Value" --value={:12f}'
        .format(DesignVars[12]), 'operation Main.RunApplication1', 'run',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.SoleusMedialis1Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.SoleusMedialis2Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.SoleusMedialis3Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.SoleusLateralis1Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.SoleusLateralis2Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.SoleusLateralis3Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.GastrocnemiusLateralis1Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.GastrocnemiusMedialis1Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.FlexorHallucisLongus1Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.FlexorHallucisLongus2Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.FlexorHallucisLongus3Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.PeroneusLongus1Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.PeroneusLongus2Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.PeroneusLongus3Par.Lt0 "Dump"',
        'operation Main.RunApplication2', 'run',
        'classoperation Main.Studies.ParameterStudies.PlantarFlexorMuscles.IsometricStrength.Output.Strength.Val "Dump"',
        'exit'
    ]]

    output = app.start_macro(macro, folderlist=[folder])[0]

    return (output)
    def test_output_access(self,init_simple_model):
        macro = [['load "model.main.any" -def N_STEP="5"',
                 'operation Main.ArmModelStudy.InverseDynamics',
                 'classoperation Main.ArmModelStudy.Output.MaxMuscleActivity "Dump"',
                 'classoperation Main.ArmModel.GlobalRef.t "Dump"']]*5

        app = AnyPyProcess(return_task_info=True)
        output = app.start_macro(macro)
        output['GlobalRef.t']
        assert( output['MaxMuscleActivity'].shape == output['Main.ArmModelStudy.Output.MaxMuscleActivity'].shape )
        assert( isinstance( output[1:3], AnyPyProcessOutputList ))
    def test_start_macro_subdirs(self, tmpdir, default_macro ):
        number_of_models = 5
        setup_models_in_subdirs(tmpdir, number_of_models)

        app = AnyPyProcess(silent=True )
        with tmpdir.as_cwd():
            output = app.start_macro(default_macro,search_subdirs='main.any')

        assert len(output) == number_of_models
        for result in output:
            assert 'ERROR' not in result
    def test_start_macro(self,init_simple_model, default_macro):
        app = AnyPyProcess(silent=True)

        default_macro[0].extend(['classoperation Main.ArmModelStudy.Output.MaxMuscleActivity "Dump"',
                         'classoperation Main.ArmModel.GlobalRef.t "Dump"'])

        output = app.start_macro(default_macro)

        assert len(output) == 1
        assert 'Main.ArmModelStudy.Output.MaxMuscleActivity' in output[0]
        assert 'Main.ArmModel.GlobalRef.t' in output[0]
        assert 'ERROR' not in output[0]
 def test_explicit_logfiles_multiple(self, init_simple_model):
     logfile = "test.log"
     macro = [
         ['load "model.main.any"', "operation Main.ArmModelStudy.InverseDynamics"],
         ['load "model.main.any"', "operation Main.ArmModelStudy.InverseDynamics"],
         ['load "model.main.any"', "operation Main.ArmModelStudy.InverseDynamics"],
     ]
     app = AnyPyProcess(silent=True, keep_logfiles=True, return_task_info=True)
     output = app.start_macro(macro, logfile=logfile)
     assert os.path.isfile("test_0.log")
     assert os.path.isfile("test_1.log")
     assert os.path.isfile("test_2.log")
    def test_start_macro_multple_folders_and_macros(self, tmpdir, default_macro):
        number_of_models = 3
        number_of_macros = 3
        setup_models_in_subdirs(tmpdir, number_of_models)
        folderlist = [str(_) for _ in tmpdir.listdir()]
        macrolist = default_macro * number_of_macros

        with tmpdir.as_cwd():
            app = AnyPyProcess()
            output = app.start_macro(macrolist, folderlist)

        assert len(output) == len(folderlist) * len(macrolist)
        for result in output:
            assert "ERROR" not in result
    def test_output_access_ragged(self,init_simple_model):
        macro = [['load "model.main.any" -def N_STEP="10"',
                 'operation Main.ArmModelStudy.InverseDynamics',
                 'classoperation Main.ArmModelStudy.Output.MaxMuscleActivity "Dump"',
                 'classoperation Main.ArmModel.GlobalRef.t "Dump"'],
                 ['load "model.main.any" -def N_STEP="20"',
                 'operation Main.ArmModelStudy.InverseDynamics',
                 'classoperation Main.ArmModelStudy.Output.MaxMuscleActivity "Dump"',
                 'classoperation Main.ArmModel.GlobalRef.t "Dump"']]

        app = AnyPyProcess(return_task_info=True)
        output = app.start_macro(macro)
        output['GlobalRef.t']
        output['MaxMuscleActivity']
Beispiel #11
0
    def test_output_access(self, init_simple_model):
        macro = [[
            'load "model.main.any" -def N_STEP="5"',
            "operation Main.ArmModelStudy.InverseDynamics",
            'classoperation Main.ArmModelStudy.Output.MaxMuscleActivity "Dump"',
            'classoperation Main.ArmModel.GlobalRef.t "Dump"',
        ]] * 5

        app = AnyPyProcess()
        output = app.start_macro(macro)
        output["GlobalRef.t"]
        assert (output["MaxMuscleActivity"].shape ==
                output["Main.ArmModelStudy.Output.MaxMuscleActivity"].shape)
        assert isinstance(output[1:3], AnyPyProcessOutputList)
    def test_start_macro_generator_input(self, init_simple_model, default_macro):
        n_macros = 5
        def generate_macros():
            """Generator that returns macros
            """
            for i in range(n_macros):
                yield default_macro[0]

        app = AnyPyProcess(silent=True)
        macros_gen = generate_macros()
        output = app.start_macro(macros_gen )

        assert len(output) == n_macros
        for result in output:
            assert 'ERROR' not in result
    def test_macro_with_erros(self, init_simple_model, default_macro):
        app = AnyPyProcess(
            silent=True, return_task_info=True, ignore_errors=["Unresolved object"]
        )
        macro = [
            ['load "model.main.any"', "operation Main.ArmModelStudy.InverseDynamics"],
            ['load "model.main.any"', "operation Main.NonExistentOpeation"],
            ['load "not_a_model.any"', "operation Main.ArmModelStudy.InverseDynamics"],
        ]

        output = app.start_macro(macro)

        assert not "ERROR" in output[0]
        assert not "ERROR" in output[1]
        assert "ERROR" in output[2]
    def test_start_macro_with_task_info(self,init_simple_model, default_macro):
        app = AnyPyProcess(silent=True, return_task_info=True)

        default_macro[0].extend(['classoperation Main.ArmModelStudy.Output.MaxMuscleActivity "Dump"',
                         'classoperation Main.ArmModel.GlobalRef.t "Dump"'])

        output = app.start_macro(default_macro,)

        assert len(output) == 1
        assert 'task_macro_hash' in output[0]
        assert 'task_id' in output[0]
        assert 'task_work_dir' in output[0]
        assert 'task_name' in output[0]
        assert 'task_processtime' in output[0]
        assert 'task_macro' in output[0]
        assert 'task_logfile' in output[0]
Beispiel #15
0
def run_model(DesignVars):
    ''' Ruturns the x,y potions for the tip of the A frame '''
    folder = 'C:\Users\fh\Documents\GitHub\OptimizationModel\Scripts\OptimizationStudies'
    app = AnyPyProcess(
        anybodycon_path=
        'C:\Program Files (x86)\AnyBody Technology\AnyBody.6.0/AnyBodyCon.exe',
        ignore_errors=['ERROR(OBJ.MCH.MUS6)'])
    macro = [[
        'load "Optimization.main.any"',
        'classoperation Main.DesignVars.ta_rmin "Set Value" --value={:12f}'.
        format(DesignVars[0]),
        'classoperation Main.DesignVars.edl_rmin "Set Value" --value={:12f}'.
        format(DesignVars[1]),
        'classoperation Main.DesignVars.ehl_rmin "Set Value" --value={:12f}'.
        format(DesignVars[2]),
        'classoperation Main.DesignVars.ta_rmax "Set Value" --value={:12f}'.
        format(DesignVars[3]),
        'classoperation Main.DesignVars.edl_rmax "Set Value" --value={:12f}'.
        format(DesignVars[4]),
        'classoperation Main.DesignVars.ehl_rmax "Set Value" --value={:12f}'.
        format(DesignVars[5]),
        'classoperation Main.DesignVars.LocalStrengthFactorDorsiFlexors "Set Value" --value={:12f}'
        .format(DesignVars[6]), 'operation Main.RunApplication1', 'run',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.TibialisAnterior1Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.TibialisAnterior2Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.TibialisAnterior3Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.ExtensorDigitorumLongus1Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.ExtensorDigitorumLongus2Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.ExtensorDigitorumLongus3Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.ExtensorDigitorumLongus4Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.ExtensorHallucisLongus1Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.ExtensorHallucisLongus2Par.Lt0 "Dump"',
        'classoperation Main.HumanModel.BodyModel.Right.Leg.MusPar.ExtensorHallucisLongus3Par.Lt0 "Dump"',
        'operation Main.RunApplication2', 'run',
        'classoperation Main.DesignVars.LocalStrengthFactorDorsiFlexors "Dump"',
        'classoperation Main.Studies.ParameterStudies.DorsiFlexorMuscles.IsometricStrength.Output.Strength.Val "Dump"',
        'exit'
    ]]

    output = app.start_macro(macro, folderlist=[folder])[0]
    np.save('Log', DesignVars)
    return (output)
Beispiel #16
0
    def test_output_access_ragged(self, init_simple_model):
        macro = [
            [
                'load "model.main.any" -def N_STEP="10"',
                "operation Main.ArmModelStudy.InverseDynamics",
                'classoperation Main.ArmModelStudy.Output.MaxMuscleActivity "Dump"',
                'classoperation Main.ArmModel.GlobalRef.t "Dump"',
            ],
            [
                'load "model.main.any" -def N_STEP="20"',
                "operation Main.ArmModelStudy.InverseDynamics",
                'classoperation Main.ArmModelStudy.Output.MaxMuscleActivity "Dump"',
                'classoperation Main.ArmModel.GlobalRef.t "Dump"',
            ],
        ]

        app = AnyPyProcess()
        output = app.start_macro(macro)
        output["GlobalRef.t"]
        output["MaxMuscleActivity"]
Beispiel #17
0
    def test_output_save_load(self, init_simple_model):
        macro = [[
            'load "model.main.any" -def N_STEP="10"',
            "operation Main.ArmModelStudy.InverseDynamics",
            'classoperation Main.ArmModelStudy.Output.MaxMuscleActivity "Dump"',
            'classoperation Main.ArmModel.GlobalRef.t "Dump"',
        ]]

        app = AnyPyProcess()
        app.start_macro(macro)
        app.save_results("test.db")

        reloaded = app.load_results("test.db")
        reloaded["Main.ArmModel.GlobalRef.t"]
    def test_output_save_load(self,init_simple_model):
        macro = [['load "model.main.any" -def N_STEP="10"',
                 'operation Main.ArmModelStudy.InverseDynamics',
                 'classoperation Main.ArmModelStudy.Output.MaxMuscleActivity "Dump"',
                 'classoperation Main.ArmModel.GlobalRef.t "Dump"']]

        app = AnyPyProcess(return_task_info=True)
        app.start_macro(macro)
        app.save_results('test.db')

        reloaded = app.load_results('test.db')
        reloaded['Main.ArmModel.GlobalRef.t']

        reloaded = AnyPyProcess.load_results('test.db')
        reloaded['Main.ArmModel.GlobalRef.t']
Beispiel #19
0
from anypytools.abcutils import AnyPyProcess

app = AnyPyProcess(num_processes = 3)

macrolist = [['load "main.any"',
           'operation Main.Study.InverseDynamics',
		   'run',
		   'exit']]
    
app.start_macro(macrolist, search_subdirs= "[model[1-9].*main.any" )

Beispiel #20
0
 def test_with_gui(self, init_simple_model, default_macro):
     app = AnyPyProcess(silent=True, use_gui=False)
     default_macro[0].append("run")
     output = app.start_macro(default_macro)
     assert not "ERROR" in output[0]
Beispiel #21
0
 def test_explicit_logfiles_path(self, init_simple_model, default_macro):
     logfile = pathlib.Path("test.log")
     app = AnyPyProcess(silent=True, keep_logfiles=True)
     output = app.start_macro(default_macro, logfile=logfile)
     assert os.path.isfile(logfile)
 def test_explicit_logfiles_path(self, init_simple_model, default_macro):
     logfile = pathlib.Path("test.log")
     app = AnyPyProcess(silent=True, keep_logfiles=True, return_task_info=True)
     output = app.start_macro(default_macro, logfile=logfile)
     assert os.path.isfile(logfile)
Beispiel #23
0
from anypytools.abcutils import AnyPyProcess

nSteplist =  [10,20,40,50,60,70,80,90,100,110,120]
app = AnyPyProcess(num_processes = 2)

macrolist = []
for nStep in nSteplist:
    macrolist.append( ['load "Demo.Arm2D.any" -def N_STEP="{0}"'.format(nStep),
                       'operation Main.Study.InverseDynamics', 'run'] )
    
app.start_macro(macrolist)

 def test_logfile_persistance(self, init_simple_model, default_macro) :
     app = AnyPyProcess(silent=True, keep_logfiles=True,
                        return_task_info=True)
     output = app.start_macro(default_macro)
     assert os.path.isfile(output[0]['task_logfile'])