anypytools.macroutils¶
Created on Mon Mar 23 21:14:59 2015.
@author: Morten
-
class
anypytools.macroutils.
Dump
(var, include_in_macro=None)[source]¶ Create a Dump classoperation macro command.
- Parameters
var (str or list of str) – The anyscript values to create a ‘Dump’ macro command for
include_in_macro (int or list of int) – Specifices in which macros [0,1,2….NumberOfMacros] to include the dump command. If None, the command is included in all macros.
Examples
>>> Dump('Main.Study.myvar1') classoperation Main.Study.myvar1 "Dump"
Only include the dump command in the two first macro
>>> mg = AnyMacro(number_of_macros = 5) >>> mg.append(Load('mymodel.main.any')) >>> mg.append(Dump('Main.Study.myvar1', include_in_macro = [0,1])) >>> mg [['load "mymodel.main.any"', 'classoperation Main.Study.myvar1 "Dump"'], ['load "mymodel.main.any"', 'classoperation Main.Study.myvar1 "Dump"'], ['load "mymodel.main.any"'], ['load "mymodel.main.any"'], ['load "mymodel.main.any"']]
-
class
anypytools.macroutils.
Load
(filename, defs={}, paths={})[source]¶ Create a load macro command.
- Parameters
filename (str) – Path of the file to load
defs (dict) – Dictionary of defines statements to set during load
paths (dict) – Dictionary of path staements to set during load
Examples
>>> Load('model.main.any') load "model.main.any"
>>> paths = {'DATA':'c:/MyModel/Data'} >>> defines = {'EXCLUDE_ARMS':None, 'N_STEP':20} >>> Load('c:/MyModel/model.main.any', defines, paths) load "c:/MyModel/model.main.any" -def EXCLUDE_ARMS="" -def N_STEP="20" -p DATA=---"c:/MyModel/Data"
>>> mcr = AnyMacro( Load('model_{id}.main.any'), counter_token = '{id}') >>> mcr.create_macros(3) [[u'load "model_0.main.any"'], [u'load "model_1.main.any"'], [u'load "model_2.main.any"']]
-
class
anypytools.macroutils.
LoadDesign
(operation, filename)[source]¶ Create a Load Design classoperation macro command.
- Parameters
operation (str) – The AnyScript operation
filename (str) – The file in which to load the design from
Examples
>>> LoadDesign('Main.MyStudy.Kinematics', 'c:/design.txt') classoperation Main.MyStudy.Kinematics "Load design" --file="c:/design.txt"
-
class
anypytools.macroutils.
LoadValues
(filename)[source]¶ Create a Load Values classoperation macro command.
- Parameters
filename (str) – The anyset file to load the values from.
Examples
>>> LoadValues('c:/values.anyset') classoperation Main "Load Values" --file="c:/values.anyset"
-
class
anypytools.macroutils.
MacroCommand
(command)[source]¶ Class for custom macro commands.
This class also serves as base class for other macro commands.
Examples
>>> mc = MacroCommand('operation "Main.MyStudy.InverseDynamics"') ) >>> print(mc) operation "Main.MyStudy.InverseDynamics"
-
class
anypytools.macroutils.
OperationRun
(operation)[source]¶ Create a macro command to select and run an operation.
Examples
>>> OperationRun('Main.MyStudy.Kinematics') >>> pprint( mg.generate_macros()) operation Main.MyStudy.Kinematics run
>>> mg = AnyMacro(Load('my_model.main.any'), OperationRun('Main.MyStudy.Kinematics')) >>> mg.create_macros() [[u'load "my_model.main.any"', u'operation Main.MyStudy.Kinematics', u'run']]
-
class
anypytools.macroutils.
SaveData
(operation, filename)[source]¶ Create a Save Data classoperation macro command.
This macro operation will save all data from a study to a HDF5 file.
- Parameters
operation (str) – Operation to save the h5 from
filename (str) – The anyset file to save the values to
Examples
>>> SaveData('Main.Study', 'output.anydata.h5') classoperation Main.Study.Output "Save data" --type="Deep" --file="output.anydata.h5"
-
class
anypytools.macroutils.
SaveDesign
(operation, filename)[source]¶ Create a Save Design classoperation macro command.
- Parameters
operation (str) – The AnyScript operation
filename (str) – The filename in which to save the design
Examples
>>> SaveDesign('Main.MyStudy.Kinematics', 'c:/design.txt') classoperation Main.MyStudy.Kinematics "Save design" --file="c:/design.txt"
-
class
anypytools.macroutils.
SaveValues
(filename)[source]¶ Create a Save Values classoperation macro command.
- Parameters
filename (str) – The anyset file to save the values to
Examples
>>> SaveValues('c:/values.anyset') classoperation Main "Save Values" --file="c:/values.anyset"
-
class
anypytools.macroutils.
SetValue
(var, value)[source]¶ Create ‘Set Value’ classoperation macro command.
- Parameters
var (string) – An AnyScript variable.
value (number or list of number) – A value or list of values to assign to the AnyScript variable.
Examples
Set a single values:
>>> SetValue('Main.Study.myvar1', 23.1) classoperation Main.Study.myvar1 "Set Value" --value="23.1"
>>> SetValue('Main.Study.myvar2', np.array([2,3,4])) classoperation Main.Study.myvar2 "Set Value" --value="{2,3,4}"
Set variable across different macros
>>> SetValue('Main.Study.myvar1',[1,2,3]) classoperation Main.Study.myvar1 "Set Value" --value="1" classoperation Main.Study.myvar1 "Set Value" --value="2" classoperation Main.Study.myvar1 "Set Value" --value="3"
Here is a elaborate example:
>>> mg = AnyMacro( Load('MyModel.main.any'), SetValue('Main.Study.myvar1',[1,2]), OperationRun('Main.Study.InverseDynamics') ) >>> mg.number_of_macros = 2 [['load "MyModel.main.any"', 'classoperation Main.Study.myvar1 "Set Value" --value="1"', 'operation Main.Study.InverseDynamics', 'run'], ['load "MyModel.main.any"', 'classoperation Main.Study.myvar1 "Set Value" --value="2"', 'operation Main.Study.InverseDynamics', 'run']]
If we generate more macros that there are values then the values are just repeated
>>> mg.number_of_macros = 4 >>> mg [['load "MyModel.main.any"', 'classoperation Main.Study.myvar1 "Set Value" --value="1"', 'operation Main.Study.InverseDynamics', 'run'], ['load "MyModel.main.any"', 'classoperation Main.Study.myvar1 "Set Value" --value="2"', 'operation Main.Study.InverseDynamics', 'run'], ['load "MyModel.main.any"', 'classoperation Main.Study.myvar1 "Set Value" --value="1"', 'operation Main.Study.InverseDynamics', 'run'], ['load "MyModel.main.any"', 'classoperation Main.Study.myvar1 "Set Value" --value="2"', 'operation Main.Study.InverseDynamics', 'run']]
-
class
anypytools.macroutils.
SetValue_random
(var, frozen_distribution, default_lower_tail_probability=0.5)[source]¶ Create a ‘Set Value’ macro command from a distribution.
The value is connected to a distibution in scipy.stats.distributions.
- Parameters
var (str) – An AnyScript variable.
frozen_distribution (<scipy.stats.distributions.rv_frozen>) – A frozen distribution from scipy.stats.distributions
default_lower_tail_probability (float) – The lower tail probability of the default value. Defaults to 0.5 which is the mean value.
Examples
Creating normal macros will use the default values. Usually the 50 percentile (mean values).
>>> np.random.seed(1) >>> from scipy.stats.distributions import logistic, norm >>> log_dist = logistic( loc= [1,3,4],scale = [0.1,0.5,1] ) >>> norm_dist = norm( loc= [0,0,0],scale = [0.1,0.5,1] ) >>> cmd = [SetValue_random('Main.MyVar1', log_dist), SetValue_random('Main.MyVar2', norm_dist) ] >>> mg = AnyMacro(cmd, number_of_macros = 3) >>> mg [['classoperation Main.MyVar1 "Set Value" --value="{0,0,0}"', 'classoperation Main.MyVar2 "Set Value" --value="{1,3,4}"'], ['classoperation Main.MyVar1 "Set Value" --value="{0,0,0}"', 'classoperation Main.MyVar2 "Set Value" --value="{1,3,4}"'], ['classoperation Main.MyVar1 "Set Value" --value="{0,0,0}"', 'classoperation Main.MyVar2 "Set Value" --value="{1,3,4}"']]
Values can be sampled randomly in a ‘Monte Carlo’ fashion. Note that the first value is still the defaut mean values
>>> mg.create_macros_MonteCarlo() [['classoperation Main.MyVar1 "Set Value" --value="{0,0,0}"', 'classoperation Main.MyVar2 "Set Value" --value="{1,3,4}"'], ['classoperation Main.MyVar1 "Set Value" --value="{-0.0209517840916,0.291902872134,-3.68494766954}"', 'classoperation Main.MyVar2 "Set Value" --value="{0.916378512121,2.11986245798,1.71459079162}"'], ['classoperation Main.MyVar1 "Set Value" --value="{-0.0891762169545,-0.198666812922,-0.261723075945}"', 'classoperation Main.MyVar2 "Set Value" --value="{1.01555799978,2.83695956934,4.7778636562}"']]
Values can also be sampled with a Latin Hyper Cube sampler.
>>> mg.create_macros_LHS() [['classoperation Main.MyVar1 "Set Value" --value="{0.0928967116493,-0.591418725401,-0.484696993931}"', 'classoperation Main.MyVar2 "Set Value" --value="{1.01049414425,2.46211329129,5.73806916203}"'], ['classoperation Main.MyVar1 "Set Value" --value="{-0.0166741228961,0.707722119582,-0.294180629253}"', 'classoperation Main.MyVar2 "Set Value" --value="{1.11326829265,2.66016732923,4.28054911097}"'], ['classoperation Main.MyVar1 "Set Value" --value="{-0.20265197275,0.114947152258,0.924796936287}"', 'classoperation Main.MyVar2 "Set Value" --value="{0.806864877696,4.4114188826,2.93941843565}"']]
-
get_macro
(index, lower_tail_probability=None, **kwarg)[source]¶ Create a string representation of the macro.
- Parameters
index (int) – The index for the macro beeing generated. Some child classes use the index to generate different macros depending on the index.
- Returns
A string with the AnyScript macro
- Return type
string