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']
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]
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)
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"]
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']
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" )
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]
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)
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'])